Connectivity: Add Wifi Scan test

Initial Revision

Change-Id: I6bf5f65f877980ab889e6d08f206cd9c99e5338c
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
This commit is contained in:
Dmitry Shmidt
2013-03-07 18:01:34 -08:00
parent 919e1de34d
commit 6420ac2c74
3 changed files with 157 additions and 1 deletions

View File

@@ -18,6 +18,10 @@
*/ */
--> -->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" <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_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
@@ -163,6 +167,45 @@
android:minEms="15"/> android:minEms="15"/>
</LinearLayout> </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/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 --> <!-- divider line -->
<View android:background="#FFFFFFFF" <View android:background="#FFFFFFFF"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@@ -30,6 +30,9 @@
<string name="stop_toggling">Stop Wifi Toggle</string> <string name="stop_toggling">Stop Wifi Toggle</string>
<string name="start_screen_toggling">Start Screen Toggle</string> <string name="start_screen_toggling">Start Screen Toggle</string>
<string name="stop_screen_toggling">Stop 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="start_mms">Start MMS</string>
<string name="stop_mms">Stop MMS</string> <string name="stop_mms">Stop MMS</string>

View File

@@ -30,6 +30,7 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.NetworkUtils; import android.net.NetworkUtils;
import android.net.RouteInfo; import android.net.RouteInfo;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.Handler; import android.os.Handler;
@@ -65,7 +66,9 @@ import java.io.PrintWriter;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.NetworkInterface; import java.net.NetworkInterface;
import java.net.Socket; import java.net.Socket;
import java.util.ArrayList;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.List;
import java.util.Map; import java.util.Map;
import org.apache.http.client.HttpClient; import org.apache.http.client.HttpClient;
@@ -78,6 +81,11 @@ import org.apache.http.impl.client.DefaultHttpClient;
public class Connectivity extends Activity { public class Connectivity extends Activity {
private static final String TAG = "DevTools - Connectivity"; 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_WIFI = 1;
private static final int EVENT_TOGGLE_SCREEN = 2; private static final int EVENT_TOGGLE_SCREEN = 2;
@@ -98,11 +106,25 @@ public class Connectivity extends Activity {
private boolean mDelayedCycleStarted = false; 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 WifiManager mWm;
private PowerManager mPm; private PowerManager mPm;
private ConnectivityManager mCm; private ConnectivityManager mCm;
private INetworkManagementService mNetd; private INetworkManagementService mNetd;
private WifiScanReceiver mScanRecv;
IntentFilter mIntentFilter;
private WakeLock mWakeLock = null; private WakeLock mWakeLock = null;
private WakeLock mScreenonWakeLock = 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 @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
@@ -218,6 +276,19 @@ public class Connectivity extends Activity {
mSCCycleCountView = (TextView)findViewById(R.id.sc_wifi_cycles_done); mSCCycleCountView = (TextView)findViewById(R.id.sc_wifi_cycles_done);
mSCCycleCountView.setText(Integer.toString(mSCCycleCount)); 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.start_mms).setOnClickListener(mClickListener);
findViewById(R.id.stop_mms).setOnClickListener(mClickListener); findViewById(R.id.stop_mms).setOnClickListener(mClickListener);
findViewById(R.id.start_hipri).setOnClickListener(mClickListener); findViewById(R.id.start_hipri).setOnClickListener(mClickListener);
@@ -237,10 +308,10 @@ public class Connectivity extends Activity {
} }
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
findViewById(R.id.connectivity_layout).requestFocus();
} }
private View.OnClickListener mClickListener = new View.OnClickListener() { private View.OnClickListener mClickListener = new View.OnClickListener() {
@@ -264,6 +335,9 @@ public class Connectivity extends Activity {
case R.id.stopScreenCycle: case R.id.stopScreenCycle:
onStopScreenCycle(); onStopScreenCycle();
break; break;
case R.id.startScan:
onStartScanCycle();
break;
case R.id.start_mms: case R.id.start_mms:
mCm.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, mCm.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE,
Phone.FEATURE_ENABLE_MMS); Phone.FEATURE_ENABLE_MMS);
@@ -375,6 +449,42 @@ public class Connectivity extends Activity {
Phone.FEATURE_ENABLE_MMS); 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() { private void onAddDefaultRoute() {
try { try {
mNetd.addRoute("eth0", new RouteInfo(null, mNetd.addRoute("eth0", new RouteInfo(null,