Added some quick & dirty activity to show addresses and the network state

This commit is contained in:
Christian Basler 2016-01-14 16:41:10 +01:00
parent abd25f4010
commit 2d2916f498
8 changed files with 160 additions and 44 deletions

View File

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest
xmlns:tools="http://schemas.android.com/tools" package="ch.dissem.apps.abit"
package="ch.dissem.apps.abit"> xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
@ -87,7 +88,6 @@
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT"/>
</intent-filter> </intent-filter>
</activity> </activity>
<activity <activity
android:name=".OpenBitmessageLinkActivity" android:name=".OpenBitmessageLinkActivity"
android:label="@string/title_activity_open_bitmessage_link" android:label="@string/title_activity_open_bitmessage_link"
@ -103,6 +103,7 @@
<category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.BROWSABLE"/>
</intent-filter> </intent-filter>
</activity> </activity>
<service android:name=".service.BitmessageService"/> <service android:name=".service.BitmessageService"/>
<service android:name=".service.ProofOfWorkService"/> <service android:name=".service.ProofOfWorkService"/>
@ -112,10 +113,12 @@
android:authorities="ch.dissem.apps.abit.provider" android:authorities="ch.dissem.apps.abit.provider"
android:exported="false" android:exported="false"
android:syncable="true"/> android:syncable="true"/>
<service android:name=".synchronization.AuthenticatorService"> <service android:name=".synchronization.AuthenticatorService">
<intent-filter> <intent-filter>
<action android:name="android.accounts.AccountAuthenticator"/> <action android:name="android.accounts.AccountAuthenticator"/>
</intent-filter> </intent-filter>
<meta-data <meta-data
android:name="android.accounts.AccountAuthenticator" android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator"/> android:resource="@xml/authenticator"/>
@ -126,7 +129,9 @@
<intent-filter> <intent-filter>
<action android:name="android.content.SyncAdapter"/> <action android:name="android.content.SyncAdapter"/>
</intent-filter> </intent-filter>
<meta-data android:name="android.content.SyncAdapter"
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/syncadapter"/> android:resource="@xml/syncadapter"/>
</service> </service>
@ -136,6 +141,15 @@
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter> </intent-filter>
</receiver> </receiver>
<activity
android:name=".StatusActivity"
android:label="@string/title_activity_status"
android:parentActivityName=".SettingsActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".SettingsActivity"/>
</activity>
</application> </application>
</manifest> </manifest>

View File

@ -1,6 +1,7 @@
package ch.dissem.apps.abit; package ch.dissem.apps.abit;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Bundle; import android.os.Bundle;
import android.preference.Preference; import android.preference.Preference;
@ -42,6 +43,15 @@ public class SettingsFragment
return true; return true;
} }
}); });
Preference status = findPreference("status");
status.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
startActivity(new Intent(getActivity(), StatusActivity.class));
return true;
}
});
} }
@Override @Override

View File

@ -0,0 +1,36 @@
package ch.dissem.apps.abit;
import android.os.Bundle;
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.widget.TextView;
import ch.dissem.apps.abit.service.Singleton;
import ch.dissem.bitmessage.BitmessageContext;
import ch.dissem.bitmessage.entity.BitmessageAddress;
public class StatusActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_status);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(false);
BitmessageContext bmc = Singleton.getBitmessageContext(this);
StringBuilder status = new StringBuilder();
for (BitmessageAddress address : bmc.addresses().getIdentities()) {
status.append(address.getAddress()).append('\n');
}
status.append('\n');
status.append(bmc.status());
((TextView) findViewById(R.id.content)).setText(status);
}
}

View File

@ -17,6 +17,7 @@ import org.slf4j.LoggerFactory;
import java.io.Serializable; import java.io.Serializable;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import ch.dissem.apps.abit.R;
import ch.dissem.apps.abit.notification.NetworkNotification; import ch.dissem.apps.abit.notification.NetworkNotification;
import ch.dissem.bitmessage.BitmessageContext; import ch.dissem.bitmessage.BitmessageContext;
import ch.dissem.bitmessage.entity.BitmessageAddress; import ch.dissem.bitmessage.entity.BitmessageAddress;
@ -101,6 +102,8 @@ public class BitmessageService extends Service {
switch (msg.what) { switch (msg.what) {
case MSG_CREATE_IDENTITY: { case MSG_CREATE_IDENTITY: {
BitmessageAddress identity = bmc.createIdentity(false); BitmessageAddress identity = bmc.createIdentity(false);
identity.setAlias(service.get().getString(R.string.alias_default_identity));
bmc.addresses().save(identity);
if (msg.replyTo != null) { if (msg.replyTo != null) {
try { try {
Message message = Message.obtain(this, MSG_CREATE_IDENTITY); Message message = Message.obtain(this, MSG_CREATE_IDENTITY);

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="ch.dissem.apps.abit.StatusActivity">
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fontFamily="monospace"
android:padding="16dp"
android:text=""
android:textIsSelectable="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
</TextView>
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="4dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:title="@string/status"
app:title="@string/status"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>

View File

@ -52,4 +52,8 @@
<string name="server_pow">Server POW</string> <string name="server_pow">Server POW</string>
<string name="server_pow_summary">Der vertrauenswürdige Knoten macht den Proof of Work</string> <string name="server_pow_summary">Der vertrauenswürdige Knoten macht den Proof of Work</string>
<string name="full_node_warning">Ein aktiver Bitmessage-Knoten muss viel hoch- und herunterladen, was auf einem mobilen Netzwerk teuer sein kann. Soll tatsächlich ein aktiver Knoten gestartet werden?</string> <string name="full_node_warning">Ein aktiver Bitmessage-Knoten muss viel hoch- und herunterladen, was auf einem mobilen Netzwerk teuer sein kann. Soll tatsächlich ein aktiver Knoten gestartet werden?</string>
<string name="status">Debugging</string>
<string name="alias_default_identity">Ich</string>
<string name="title_activity_status">Debugging</string>
<string name="status_summary">Technische Infos</string>
</resources> </resources>

View File

@ -55,4 +55,8 @@
<string name="full_node_warning">Running a full Bitmessage node uses a lot of traffic, which could be expensive on a mobile network. Are you sure you want to start a full node?</string> <string name="full_node_warning">Running a full Bitmessage node uses a lot of traffic, which could be expensive on a mobile network. Are you sure you want to start a full node?</string>
<string name="about">About Abit</string> <string name="about">About Abit</string>
<string name="about_summary">Open source dependencies.</string> <string name="about_summary">Open source dependencies.</string>
<string name="title_activity_status">Debugging</string>
<string name="status">Debugging</string>
<string name="status_summary">Technical information</string>
<string name="alias_default_identity">Me</string>
</resources> </resources>

View File

@ -36,4 +36,9 @@
android:title="@string/about" android:title="@string/about"
android:summary="@string/about_summary" android:summary="@string/about_summary"
/> />
<Preference
android:key="status"
android:title="@string/status"
android:summary="@string/status_summary"
/>
</PreferenceScreen> </PreferenceScreen>