OSDN Git Service

Disable tethering to enable Wifi
authorIrfan Sheriff <isheriff@google.com>
Wed, 24 Mar 2010 19:14:28 +0000 (12:14 -0700)
committerIrfan Sheriff <isheriff@google.com>
Thu, 25 Mar 2010 18:39:11 +0000 (11:39 -0700)
We need to explicitly disable wifi while enabling
tethering and disable tethering while enabling wifi

Bug: 2539071
Change-Id: I7fda6e4d9d1bb804e81561d52b5f3a982a674b0e

src/com/android/settings/widget/SettingsAppWidgetProvider.java
src/com/android/settings/wifi/WifiApEnabler.java
src/com/android/settings/wifi/WifiEnabler.java

index 2fd618c..872d303 100644 (file)
@@ -248,6 +248,15 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
             if (withToast) {
                 Toast.makeText(context, R.string.gadget_toggle_wifi, Toast.LENGTH_SHORT).show();
             }
+            /**
+             * Disable tethering if enabling Wifi
+             */
+            int wifiApState = wifiManager.getWifiApState();
+            if (desiredState && ((wifiApState == WifiManager.WIFI_AP_STATE_ENABLING) ||
+                        (wifiApState == WifiManager.WIFI_AP_STATE_ENABLED))) {
+                wifiManager.setWifiApEnabled(null, false);
+            }
+
             wifiManager.setWifiEnabled(desiredState);
         }
 
index 3d8d282..c2f8395 100644 (file)
@@ -97,6 +97,15 @@ public class WifiApEnabler implements Preference.OnPreferenceChangeListener {
 
     public boolean onPreferenceChange(Preference preference, Object enable) {
 
+        /**
+         * Disable Wifi if enabling tethering
+         */
+        int wifiState = mWifiManager.getWifiState();
+        if ((Boolean)enable && ((wifiState == WifiManager.WIFI_STATE_ENABLING) ||
+                    (wifiState == WifiManager.WIFI_STATE_ENABLED))) {
+            mWifiManager.setWifiEnabled(false);
+        }
+
         if (mWifiManager.setWifiApEnabled(null, (Boolean)enable)) {
             /* Disable here, enabled on receiving success broadcast */
             mCheckBox.setEnabled(false);
index 6c55136..ef9f346 100644 (file)
@@ -92,6 +92,14 @@ public class WifiEnabler implements Preference.OnPreferenceChangeListener {
             return false;
         }
 
+        /**
+         * Disable tethering if enabling Wifi
+         */
+        int wifiApState = mWifiManager.getWifiApState();
+        if (enable && ((wifiApState == WifiManager.WIFI_AP_STATE_ENABLING) ||
+                (wifiApState == WifiManager.WIFI_AP_STATE_ENABLED))) {
+            mWifiManager.setWifiApEnabled(null, false);
+        }
         if (mWifiManager.setWifiEnabled(enable)) {
             mCheckBox.setEnabled(false);
         } else {