diff options
Diffstat (limited to 'apps/Development')
| -rw-r--r-- | apps/Development/Android.mk | 2 | ||||
| -rw-r--r-- | apps/Development/AndroidManifest.xml | 1 | ||||
| -rw-r--r-- | apps/Development/res/layout/connectivity.xml | 43 | ||||
| -rw-r--r-- | apps/Development/res/values/strings.xml | 10 | ||||
| -rw-r--r-- | apps/Development/src/com/android/development/Connectivity.java | 146 |
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()); |
