summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2013-03-07 18:01:34 -0800
committerDmitry Shmidt <dimitrysh@google.com>2013-03-11 11:35:58 -0700
commit6420ac2c74d9ea22e7cd846e9927a690f473fd3e (patch)
treed4ea7c7e4cfb33f75e75be1630a9ec2a8271650e
parent919e1de34de1aeb34de30720e6443e569e2d14e0 (diff)
downloadandroid_development-6420ac2c74d9ea22e7cd846e9927a690f473fd3e.tar.gz
android_development-6420ac2c74d9ea22e7cd846e9927a690f473fd3e.tar.bz2
android_development-6420ac2c74d9ea22e7cd846e9927a690f473fd3e.zip
Connectivity: Add Wifi Scan test
Initial Revision Change-Id: I6bf5f65f877980ab889e6d08f206cd9c99e5338c Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
-rw-r--r--apps/Development/res/layout/connectivity.xml43
-rw-r--r--apps/Development/res/values/strings.xml3
-rw-r--r--apps/Development/src/com/android/development/Connectivity.java112
3 files changed, 157 insertions, 1 deletions
diff --git a/apps/Development/res/layout/connectivity.xml b/apps/Development/res/layout/connectivity.xml
index ff0c6ea6b..2df645ccf 100644
--- a/apps/Development/res/layout/connectivity.xml
+++ b/apps/Development/res/layout/connectivity.xml
@@ -18,6 +18,10 @@
*/
-->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/connectivity_layout"
+ android:descendantFocusability="beforeDescendants"
+ android:focusableInTouchMode="true"
+ android:focusable="true"
android:layout_width="match_parent"
android:layout_height="match_parent">
@@ -173,6 +177,45 @@
android:paddingTop="4dip"
android:layout_width="match_parent"
android:layout_height="wrap_content">
+ <Button android:id="@+id/startScan"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/start_scan" />
+ <CheckBox android:id="@+id/scanDisconnect"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/disconnect" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:inputType="number"
+ android:text="@string/scan_cycles" />
+ <EditText android:id="@+id/sc_scan_cycles"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:minEms="5" />
+ <TextView android:id="@+id/sc_scan_results"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="14.5sp" />
+ </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/start_mms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/apps/Development/res/values/strings.xml b/apps/Development/res/values/strings.xml
index 10879316f..b7ed5e12e 100644
--- a/apps/Development/res/values/strings.xml
+++ b/apps/Development/res/values/strings.xml
@@ -30,6 +30,9 @@
<string name="stop_toggling">Stop Wifi Toggle</string>
<string name="start_screen_toggling">Start Screen Toggle</string>
<string name="stop_screen_toggling">Stop Screen Toggle</string>
+ <string name="start_scan">Start Scan</string>
+ <string name="scan_cycles">Scan Cycles: </string>
+ <string name="disconnect">Disconnect</string>
<string name="start_mms">Start MMS</string>
<string name="stop_mms">Stop MMS</string>
diff --git a/apps/Development/src/com/android/development/Connectivity.java b/apps/Development/src/com/android/development/Connectivity.java
index c62d9b59b..95487dc1d 100644
--- a/apps/Development/src/com/android/development/Connectivity.java
+++ b/apps/Development/src/com/android/development/Connectivity.java
@@ -30,6 +30,7 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.net.ConnectivityManager;
import android.net.NetworkUtils;
import android.net.RouteInfo;
+import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.RemoteException;
import android.os.Handler;
@@ -65,7 +66,9 @@ import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.Socket;
+import java.util.ArrayList;
import java.util.Enumeration;
+import java.util.List;
import java.util.Map;
import org.apache.http.client.HttpClient;
@@ -78,6 +81,11 @@ import org.apache.http.impl.client.DefaultHttpClient;
public class Connectivity extends Activity {
private static final String TAG = "DevTools - Connectivity";
+ private static final String GET_SCAN_RES = "Get Results";
+ private static final String START_SCAN = "Start Scan";
+ private static final String PROGRESS_SCAN = "In Progress";
+
+ private static final long SCAN_CYCLES = 15;
private static final int EVENT_TOGGLE_WIFI = 1;
private static final int EVENT_TOGGLE_SCREEN = 2;
@@ -98,11 +106,25 @@ public class Connectivity extends Activity {
private boolean mDelayedCycleStarted = false;
+ private Button mScanButton;
+ private TextView mScanResults;
+ private EditText mScanCyclesEdit;
+ private CheckBox mScanDisconnect;
+ private long mScanCycles = SCAN_CYCLES;
+ private long mScanCur = -1;
+ private long mStartTime = -1;
+ private long mStopTime;
+ private long mTotalScanTime = 0;
+ private long mTotalScanCount = 0;
+
private WifiManager mWm;
private PowerManager mPm;
private ConnectivityManager mCm;
private INetworkManagementService mNetd;
+ private WifiScanReceiver mScanRecv;
+ IntentFilter mIntentFilter;
+
private WakeLock mWakeLock = null;
private WakeLock mScreenonWakeLock = null;
@@ -185,6 +207,42 @@ public class Connectivity extends Activity {
}
};
+ /**
+ * Wifi Scan Listener
+ */
+ private class WifiScanReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+
+ if (action.equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
+ mStopTime = SystemClock.elapsedRealtime();
+ if (mStartTime != -1) {
+ mTotalScanTime += (mStopTime - mStartTime);
+ mStartTime = -1;
+ }
+ Log.d(TAG, "Scan: READY " + mScanCur);
+
+ List<ScanResult> wifiScanResults = mWm.getScanResults();
+ if (wifiScanResults != null) {
+ mTotalScanCount += wifiScanResults.size();
+ Log.d(TAG, "Scan: Results = " + wifiScanResults.size());
+ }
+
+ mScanCur--;
+ mScanCyclesEdit.setText(Long.toString(mScanCur));
+ if (mScanCur == 0) {
+ unregisterReceiver(mScanRecv);
+ mScanButton.setText(GET_SCAN_RES);
+ } else {
+ mStartTime = SystemClock.elapsedRealtime();
+ mWm.startScan();
+ }
+ }
+ }
+ }
+
+
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -218,6 +276,19 @@ public class Connectivity extends Activity {
mSCCycleCountView = (TextView)findViewById(R.id.sc_wifi_cycles_done);
mSCCycleCountView.setText(Integer.toString(mSCCycleCount));
+ mScanButton = (Button)findViewById(R.id.startScan);
+ mScanButton.setOnClickListener(mClickListener);
+ mScanCyclesEdit = (EditText)findViewById(R.id.sc_scan_cycles);
+ mScanCyclesEdit.setText(Long.toString(mScanCycles));
+ mScanDisconnect = (CheckBox)findViewById(R.id.scanDisconnect);
+ mScanDisconnect.setChecked(true);
+ mScanResults = (TextView)findViewById(R.id.sc_scan_results);
+ mScanResults.setVisibility(View.INVISIBLE);
+
+ mScanRecv = new WifiScanReceiver();
+ mIntentFilter = new IntentFilter();
+ mIntentFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
+
findViewById(R.id.start_mms).setOnClickListener(mClickListener);
findViewById(R.id.stop_mms).setOnClickListener(mClickListener);
findViewById(R.id.start_hipri).setOnClickListener(mClickListener);
@@ -237,10 +308,10 @@ public class Connectivity extends Activity {
}
-
@Override
public void onResume() {
super.onResume();
+ findViewById(R.id.connectivity_layout).requestFocus();
}
private View.OnClickListener mClickListener = new View.OnClickListener() {
@@ -264,6 +335,9 @@ public class Connectivity extends Activity {
case R.id.stopScreenCycle:
onStopScreenCycle();
break;
+ case R.id.startScan:
+ onStartScanCycle();
+ break;
case R.id.start_mms:
mCm.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE,
Phone.FEATURE_ENABLE_MMS);
@@ -375,6 +449,42 @@ public class Connectivity extends Activity {
Phone.FEATURE_ENABLE_MMS);
}
+ private void onStartScanCycle() {
+ if (mScanCur == -1) {
+ try {
+ mScanCur = Long.parseLong(mScanCyclesEdit.getText().toString());
+ mScanCycles = mScanCur;
+ } catch (Exception e) { };
+ if (mScanCur <= 0) {
+ mScanCur = -1;
+ mScanCycles = SCAN_CYCLES;
+ return;
+ }
+ }
+ if (mScanCur > 0) {
+ registerReceiver(mScanRecv, mIntentFilter);
+ mScanButton.setText(PROGRESS_SCAN);
+ mScanResults.setVisibility(View.INVISIBLE);
+ if (mScanDisconnect.isChecked())
+ mWm.disconnect();
+ mTotalScanTime = 0;
+ mTotalScanCount = 0;
+ mStartTime = SystemClock.elapsedRealtime();
+ mWm.startScan();
+ } else {
+ // Show results
+ mScanResults.setText("Average Scan Time = " +
+ Long.toString(mTotalScanTime / mScanCycles) + " ms ; Average Scan Amount = " +
+ Long.toString(mTotalScanCount / mScanCycles));
+ mScanResults.setVisibility(View.VISIBLE);
+ mScanButton.setText(START_SCAN);
+ mScanCur = -1;
+ mScanCyclesEdit.setText(Long.toString(mScanCycles));
+ if (mScanDisconnect.isChecked())
+ mWm.reassociate();
+ }
+ }
+
private void onAddDefaultRoute() {
try {
mNetd.addRoute("eth0", new RouteInfo(null,