summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2009-07-08 17:11:17 -0400
committerMike Lockwood <lockwood@android.com>2009-07-09 16:54:39 -0400
commita5ec95cdb1a7d2024249277dff1f99d0046c9b56 (patch)
tree5bf844072a7e160dede6dd2e68bce8c3349e355d /core
parentd1e5e3ffc22478bad8525dec4f1c6d57fe0ad368 (diff)
downloadframeworks_base-a5ec95cdb1a7d2024249277dff1f99d0046c9b56.zip
frameworks_base-a5ec95cdb1a7d2024249277dff1f99d0046c9b56.tar.gz
frameworks_base-a5ec95cdb1a7d2024249277dff1f99d0046c9b56.tar.bz2
wifi: WifiManager.startScan() will now do passive scans by default.
Active scans will only happen if a hidden AP is in use, or if the new method WifiManager.startScanActive() is called. This fixes some audio playback problems with bluetooth A2DP. Signed-off-by: Mike Lockwood <lockwood@android.com>
Diffstat (limited to 'core')
-rw-r--r--core/jni/android_net_wifi_Wifi.cpp28
1 files changed, 16 insertions, 12 deletions
diff --git a/core/jni/android_net_wifi_Wifi.cpp b/core/jni/android_net_wifi_Wifi.cpp
index 9f93e2f..ae744a8 100644
--- a/core/jni/android_net_wifi_Wifi.cpp
+++ b/core/jni/android_net_wifi_Wifi.cpp
@@ -27,6 +27,8 @@
namespace android {
+static jboolean sScanModeActive = false;
+
/*
* The following remembers the jfieldID's of the fields
* of the DhcpInfo Java object, so that we don't have
@@ -254,27 +256,29 @@ static jboolean android_net_wifi_reassociateCommand(JNIEnv* env, jobject clazz)
return doBooleanCommand("REASSOCIATE", "OK");
}
-static jboolean android_net_wifi_scanCommand(JNIEnv* env, jobject clazz)
+static jboolean doSetScanMode(jboolean setActive)
+{
+ return doBooleanCommand((setActive ? "DRIVER SCAN-ACTIVE" : "DRIVER SCAN-PASSIVE"), "OK");
+}
+
+static jboolean android_net_wifi_scanCommand(JNIEnv* env, jobject clazz, jboolean forceActive)
{
jboolean result;
+
// Ignore any error from setting the scan mode.
// The scan will still work.
- (void)doBooleanCommand("DRIVER SCAN-ACTIVE", "OK");
+ if (forceActive && !sScanModeActive)
+ doSetScanMode(true);
result = doBooleanCommand("SCAN", "OK");
- (void)doBooleanCommand("DRIVER SCAN-PASSIVE", "OK");
+ if (forceActive && !sScanModeActive)
+ doSetScanMode(sScanModeActive);
return result;
}
static jboolean android_net_wifi_setScanModeCommand(JNIEnv* env, jobject clazz, jboolean setActive)
{
- jboolean result;
- // Ignore any error from setting the scan mode.
- // The scan will still work.
- if (setActive) {
- return doBooleanCommand("DRIVER SCAN-ACTIVE", "OK");
- } else {
- return doBooleanCommand("DRIVER SCAN-PASSIVE", "OK");
- }
+ sScanModeActive = setActive;
+ return doSetScanMode(setActive);
}
static jboolean android_net_wifi_startDriverCommand(JNIEnv* env, jobject clazz)
@@ -509,7 +513,7 @@ static JNINativeMethod gWifiMethods[] = {
{ "disconnectCommand", "()Z", (void *)android_net_wifi_disconnectCommand },
{ "reconnectCommand", "()Z", (void *)android_net_wifi_reconnectCommand },
{ "reassociateCommand", "()Z", (void *)android_net_wifi_reassociateCommand },
- { "scanCommand", "()Z", (void*) android_net_wifi_scanCommand },
+ { "scanCommand", "(Z)Z", (void*) android_net_wifi_scanCommand },
{ "setScanModeCommand", "(Z)Z", (void*) android_net_wifi_setScanModeCommand },
{ "startDriverCommand", "()Z", (void*) android_net_wifi_startDriverCommand },
{ "stopDriverCommand", "()Z", (void*) android_net_wifi_stopDriverCommand },