summaryrefslogtreecommitdiffstats
path: root/apps/Development
diff options
context:
space:
mode:
Diffstat (limited to 'apps/Development')
-rw-r--r--apps/Development/Android.mk2
-rw-r--r--apps/Development/AndroidManifest.xml1
-rw-r--r--apps/Development/res/layout/connectivity.xml43
-rw-r--r--apps/Development/res/values/strings.xml10
-rw-r--r--apps/Development/src/com/android/development/Connectivity.java146
5 files changed, 173 insertions, 29 deletions
diff --git a/apps/Development/Android.mk b/apps/Development/Android.mk
index 4237aec4d..9dd2e1a34 100644
--- a/apps/Development/Android.mk
+++ b/apps/Development/Android.mk
@@ -3,7 +3,7 @@ include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
-LOCAL_JAVA_LIBRARIES := android.test.runner telephony-common
+LOCAL_JAVA_LIBRARIES := android.test.runner telephony-common org.apache.http.legacy
LOCAL_SRC_FILES := $(call all-subdir-java-files) \
src/com/android/development/IRemoteService.aidl \
diff --git a/apps/Development/AndroidManifest.xml b/apps/Development/AndroidManifest.xml
index 5847201ae..3ac819077 100644
--- a/apps/Development/AndroidManifest.xml
+++ b/apps/Development/AndroidManifest.xml
@@ -47,6 +47,7 @@
<application android:label="Dev Tools"
android:icon="@mipmap/ic_launcher_devtools">
+ <uses-library android:name="org.apache.http.legacy" android:required="false" />
<uses-library android:name="android.test.runner" />
diff --git a/apps/Development/res/layout/connectivity.xml b/apps/Development/res/layout/connectivity.xml
index d23a6b1b9..8de23dab5 100644
--- a/apps/Development/res/layout/connectivity.xml
+++ b/apps/Development/res/layout/connectivity.xml
@@ -248,27 +248,27 @@
android:paddingTop="4dip"
android:layout_width="match_parent"
android:layout_height="wrap_content">
- <Button android:id="@+id/start_mms"
+ <Button android:id="@+id/request_mms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="@string/start_mms" />
- <Button android:id="@+id/stop_mms"
+ android:text="@string/request_mms" />
+ <Button android:id="@+id/release_mms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="@string/stop_mms" />
+ android:text="@string/release_mms" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
- <Button android:id="@+id/start_hipri"
+ <Button android:id="@+id/request_cell"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="@string/start_hipri" />
- <Button android:id="@+id/stop_hipri"
+ android:text="@string/request_cell" />
+ <Button android:id="@+id/release_cell"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="@string/stop_hipri" />
+ android:text="@string/release_cell" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
@@ -350,6 +350,33 @@
android:layout_height="wrap_content"
android:text="@string/routed_socket_request" />
</LinearLayout>
+
+ <!-- divider line -->
+ <View android:background="#FFFFFFFF"
+ android:layout_width="match_parent"
+ android:layout_height="3dip" />
+ <LinearLayout
+ android:orientation="horizontal"
+ android:paddingTop="4dip"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+ <Button android:id="@+id/link_stats"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/link_stats" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+ <TextView
+ android:id="@+id/stats"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/stats_results" />
+ </LinearLayout>
+
</LinearLayout>
</ScrollView>
diff --git a/apps/Development/res/values/strings.xml b/apps/Development/res/values/strings.xml
index d670cf4c4..ed42725f6 100644
--- a/apps/Development/res/values/strings.xml
+++ b/apps/Development/res/values/strings.xml
@@ -33,15 +33,17 @@
<string name="start_scan">Start Scan</string>
<string name="scan_cycles">Scan Cycles: </string>
<string name="disconnect">Disconnect</string>
+ <string name="link_stats">Link Stats</string>
+ <string name="stats_results"> results </string>
<string name="start_tdls">Start TDLS</string>
<string name="stop_tdls">Stop TDLS</string>
<string name="mac_tdls"> IP/MAC: </string>
- <string name="start_mms">Start MMS</string>
- <string name="stop_mms">Stop MMS</string>
- <string name="start_hipri">Start HiPri</string>
- <string name="stop_hipri">Stop HiPri</string>
+ <string name="request_mms">Request MMS</string>
+ <string name="release_mms">Release MMS</string>
+ <string name="request_cell">Request cell</string>
+ <string name="release_cell">Release cell</string>
<string name="crash">CRASH</string>
<string name="report_all_bad">Report all bad</string>
diff --git a/apps/Development/src/com/android/development/Connectivity.java b/apps/Development/src/com/android/development/Connectivity.java
index a576eb397..21bf07ceb 100644
--- a/apps/Development/src/com/android/development/Connectivity.java
+++ b/apps/Development/src/com/android/development/Connectivity.java
@@ -28,11 +28,16 @@ import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.ConnectivityManager;
+import android.net.ConnectivityManager.NetworkCallback;
import android.net.LinkAddress;
+import android.net.LinkProperties;
import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.net.NetworkRequest;
import android.net.NetworkUtils;
import android.net.RouteInfo;
import android.net.wifi.ScanResult;
+import android.net.wifi.WifiActivityEnergyInfo;
import android.net.wifi.WifiManager;
import android.os.RemoteException;
import android.os.Handler;
@@ -119,6 +124,8 @@ public class Connectivity extends Activity {
private long mTotalScanTime = 0;
private long mTotalScanCount = 0;
+ private TextView mLinkStatsResults;
+
private String mTdlsAddr = null;
private WifiManager mWm;
@@ -251,6 +258,84 @@ public class Connectivity extends Activity {
}
}
+ private static class DevToolsNetworkCallback extends NetworkCallback {
+ private static final String TAG = "DevToolsNetworkCallback";
+
+ public void onPreCheck(Network network) {
+ Log.d(TAG, "onPreCheck: " + network.netId);
+ }
+
+ public void onAvailable(Network network) {
+ Log.d(TAG, "onAvailable: " + network.netId);
+ }
+
+ public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) {
+ Log.d(TAG, "onCapabilitiesChanged: " + network.netId + " " + nc.toString());
+ }
+
+ public void onLinkPropertiesChanged(Network network, LinkProperties lp) {
+ Log.d(TAG, "onLinkPropertiesChanged: " + network.netId + " " + lp.toString());
+ }
+
+ public void onLosing(Network network, int maxMsToLive) {
+ Log.d(TAG, "onLosing: " + network.netId + " " + maxMsToLive);
+ }
+
+ public void onLost(Network network) {
+ Log.d(TAG, "onLost: " + network.netId);
+ }
+ }
+ private DevToolsNetworkCallback mCallback;
+
+ private class RequestableNetwork {
+ private final NetworkRequest mRequest;
+ private final int mRequestButton, mReleaseButton;
+ private NetworkCallback mCallback;
+
+ public RequestableNetwork(NetworkRequest request, int requestButton, int releaseButton) {
+ mRequest = request;
+ mRequestButton = requestButton;
+ mReleaseButton = releaseButton;
+ }
+
+ public void setRequested(boolean requested) {
+ findViewById(mRequestButton).setEnabled(!requested);
+ findViewById(mReleaseButton).setEnabled(requested);
+ }
+
+ public void request() {
+ if (mCallback == null) {
+ mCallback = new NetworkCallback();
+ mCm.requestNetwork(mRequest, mCallback);
+ setRequested(true);
+ }
+ }
+
+ public void release() {
+ if (mCallback != null) {
+ mCm.unregisterNetworkCallback(mCallback);
+ mCallback = null;
+ setRequested(false);
+ }
+ }
+ }
+
+ private final RequestableNetwork mMmsNetwork = new RequestableNetwork(
+ new NetworkRequest.Builder()
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_MMS)
+ .build(),
+ R.id.request_mms,
+ R.id.release_mms);
+
+ private final RequestableNetwork mCellNetwork = new RequestableNetwork(
+ new NetworkRequest.Builder()
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
+ .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
+ .build(),
+ R.id.request_cell,
+ R.id.release_cell);
+
+ final NetworkRequest mEmptyRequest = new NetworkRequest.Builder().clearCapabilities().build();
@Override
public void onCreate(Bundle icicle) {
@@ -301,10 +386,10 @@ public class Connectivity extends Activity {
findViewById(R.id.startTdls).setOnClickListener(mClickListener);
findViewById(R.id.stopTdls).setOnClickListener(mClickListener);
- findViewById(R.id.start_mms).setOnClickListener(mClickListener);
- findViewById(R.id.stop_mms).setOnClickListener(mClickListener);
- findViewById(R.id.start_hipri).setOnClickListener(mClickListener);
- findViewById(R.id.stop_hipri).setOnClickListener(mClickListener);
+ findViewById(R.id.request_mms).setOnClickListener(mClickListener);
+ findViewById(R.id.release_mms).setOnClickListener(mClickListener);
+ findViewById(R.id.request_cell).setOnClickListener(mClickListener);
+ findViewById(R.id.release_cell).setOnClickListener(mClickListener);
findViewById(R.id.report_all_bad).setOnClickListener(mClickListener);
findViewById(R.id.crash).setOnClickListener(mClickListener);
@@ -316,13 +401,27 @@ public class Connectivity extends Activity {
findViewById(R.id.routed_socket_request).setOnClickListener(mClickListener);
findViewById(R.id.default_request).setOnClickListener(mClickListener);
findViewById(R.id.default_socket).setOnClickListener(mClickListener);
+ findViewById(R.id.link_stats).setOnClickListener(mClickListener);
+
+ mCellNetwork.setRequested(false);
+ mMmsNetwork.setRequested(false);
registerReceiver(mReceiver, new IntentFilter(CONNECTIVITY_TEST_ALARM));
+
+ mLinkStatsResults = (TextView)findViewById(R.id.stats);
+ mLinkStatsResults.setVisibility(View.VISIBLE);
+
+ mCallback = new DevToolsNetworkCallback();
+ mCm.registerNetworkCallback(mEmptyRequest, mCallback);
}
@Override
public void onDestroy() {
super.onDestroy();
+ mCellNetwork.release();
+ mMmsNetwork.release();
+ mCm.unregisterNetworkCallback(mCallback);
+ mCallback = null;
unregisterReceiver(mReceiver);
}
@@ -362,13 +461,11 @@ public class Connectivity extends Activity {
case R.id.stopTdls:
onStopTdls();
break;
- case R.id.start_mms:
- mCm.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE,
- Phone.FEATURE_ENABLE_MMS);
+ case R.id.request_mms:
+ mMmsNetwork.request();
break;
- case R.id.stop_mms:
- mCm.stopUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE,
- Phone.FEATURE_ENABLE_MMS);
+ case R.id.release_mms:
+ mMmsNetwork.release();
break;
case R.id.default_socket:
onDefaultSocket();
@@ -400,13 +497,14 @@ public class Connectivity extends Activity {
case R.id.crash:
onCrash();
break;
- case R.id.start_hipri:
- mCm.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE,
- Phone.FEATURE_ENABLE_HIPRI);
+ case R.id.request_cell:
+ mCellNetwork.request();
+ break;
+ case R.id.release_cell:
+ mCellNetwork.release();
break;
- case R.id.stop_hipri:
- mCm.stopUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE,
- Phone.FEATURE_ENABLE_HIPRI);
+ case R.id.link_stats:
+ onLinkStats();
break;
}
}
@@ -544,6 +642,22 @@ public class Connectivity extends Activity {
}
}
+ private void onLinkStats() {
+ Log.e(TAG, "LINK STATS: ");
+ try {
+ WifiActivityEnergyInfo info =
+ mWm.getControllerActivityEnergyInfo(0);
+ if (info != null) {
+ mLinkStatsResults.setText(" power " + info.toString());
+ } else {
+ mLinkStatsResults.setText(" null! ");
+ }
+ } catch (Exception e) {
+ mLinkStatsResults.setText(" failed! " + e.toString());
+ }
+ }
+
+
private void onAddDefaultRoute() {
try {
int netId = Integer.valueOf(((TextView) findViewById(R.id.netid)).getText().toString());