diff --git a/briar-android/src/org/briarproject/android/TestingActivity.java b/briar-android/src/org/briarproject/android/TestingActivity.java index 4c2ad93ec9a20226cf83898100dcf319e4195c7c..d063d4ae55ca9ebc7260a0896dcbab8887d70fb6 100644 --- a/briar-android/src/org/briarproject/android/TestingActivity.java +++ b/briar-android/src/org/briarproject/android/TestingActivity.java @@ -44,7 +44,11 @@ import org.briarproject.android.util.HorizontalBorder; import org.briarproject.android.util.LayoutUtils; import org.briarproject.android.util.ListLoadingProgressBar; import org.briarproject.api.TransportId; +import org.briarproject.api.TransportProperties; import org.briarproject.api.android.AndroidExecutor; +import org.briarproject.api.db.DatabaseComponent; +import org.briarproject.api.db.DbException; +import org.briarproject.api.lifecycle.LifecycleManager; import org.briarproject.api.plugins.Plugin; import org.briarproject.api.plugins.PluginManager; import org.briarproject.util.StringUtils; @@ -55,6 +59,7 @@ import android.content.res.Resources; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; +import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.AsyncTask; import android.os.Build; @@ -74,6 +79,8 @@ public class TestingActivity extends BriarActivity implements OnClickListener { @Inject private AndroidExecutor androidExecutor; @Inject private PluginManager pluginManager; + @Inject private LifecycleManager lifecycleManager; + @Inject private DatabaseComponent db; private ScrollView scroll = null; private ListLoadingProgressBar progress = null; private LinearLayout status = null; @@ -176,6 +183,7 @@ public class TestingActivity extends BriarActivity implements OnClickListener { }.execute(); } + // FIXME: Load strings from resources if we're keeping this activity private Map<String, String> getStatusMap() { Map<String, String> statusMap = new LinkedHashMap<String, String>(); @@ -223,7 +231,6 @@ public class TestingActivity extends BriarActivity implements OnClickListener { // Is mobile data connected ? boolean mobileConnected = mobile != null && mobile.isConnected(); - // Strings aren't loaded from resources as this activity is temporary String mobileStatus; if(mobileAvailable) mobileStatus = "Available, "; else mobileStatus = "Not available, "; @@ -250,6 +257,18 @@ public class TestingActivity extends BriarActivity implements OnClickListener { else wifiStatus += "not enabled, "; if(wifiConnected) wifiStatus += "connected"; else wifiStatus += "not connected"; + if(wm != null) { + WifiInfo wifiInfo = wm.getConnectionInfo(); + if(wifiInfo != null) { + int ip = wifiInfo.getIpAddress(); // Nice API, Google + int ip1 = ip & 0xFF; + int ip2 = (ip >> 8) & 0xFF; + int ip3 = (ip >> 16) & 0xFF; + int ip4 = (ip >> 24) & 0xFF; + String address = ip1 + "." + ip2 + "." + ip3 + "." + ip4; + wifiStatus += "\nAddress: " + address; + } + } statusMap.put("Wi-Fi:", wifiStatus); // Is Bluetooth available? @@ -287,8 +306,20 @@ public class TestingActivity extends BriarActivity implements OnClickListener { else btStatus += "not connectable, "; if(btDiscoverable) btStatus += "discoverable"; else btStatus += "not discoverable"; + if(bt != null) btStatus += "\nAddress: " + bt.getAddress(); statusMap.put("Bluetooth:", btStatus); + Map<TransportId, TransportProperties> props = Collections.emptyMap(); + try { + lifecycleManager.waitForDatabase(); + props = db.getLocalProperties(); + } catch(InterruptedException e) { + LOG.info("Interrupted while waiting for database"); + Thread.currentThread().interrupt(); + } catch(DbException e) { + if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); + } + Plugin torPlugin = pluginManager.getPlugin(new TransportId("tor")); boolean torPluginEnabled = torPlugin != null; boolean torPluginRunning = torPlugin != null && torPlugin.isRunning(); @@ -298,6 +329,9 @@ public class TestingActivity extends BriarActivity implements OnClickListener { else torPluginStatus = "Not enabled, "; if(torPluginRunning) torPluginStatus += "running"; else torPluginStatus += "not running"; + TransportProperties torProps = props.get(new TransportId("tor")); + if(torProps != null) + torPluginStatus += "\nAddress: " + torProps.get("onion"); statusMap.put("Tor plugin:", torPluginStatus); Plugin lanPlugin = pluginManager.getPlugin(new TransportId("lan")); @@ -309,6 +343,9 @@ public class TestingActivity extends BriarActivity implements OnClickListener { else lanPluginStatus = "Not enabled, "; if(lanPluginRunning) lanPluginStatus += "running"; else lanPluginStatus += "not running"; + TransportProperties lanProps = props.get(new TransportId("lan")); + if(lanProps != null) + lanPluginStatus += "\nAddress: " + lanProps.get("address"); statusMap.put("LAN plugin:", lanPluginStatus); Plugin btPlugin = pluginManager.getPlugin(new TransportId("bt")); @@ -320,6 +357,9 @@ public class TestingActivity extends BriarActivity implements OnClickListener { else btPluginStatus = "Not enabled, "; if(btPluginRunning) btPluginStatus += "running"; else btPluginStatus += "not running"; + TransportProperties btProps = props.get(new TransportId("bt")); + if(btProps != null) + btPluginStatus += "\nAddress: " + btProps.get("address"); statusMap.put("Bluetooth plugin:", btPluginStatus); // All log output from the current process