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

@@ -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,