From 3a14bafcf6792e14b3d74a591af39c9d62a4cc26 Mon Sep 17 00:00:00 2001 From: Irfan Sheriff Date: Wed, 28 Mar 2012 15:55:20 -0700 Subject: [PATCH] Fix discovery state tracking Use the new intent to track if we are in discovery state Change-Id: I9e07c3ccfcf62c3c33195d23c94de60d4248670c --- .../settings/wifi/p2p/WifiP2pSettings.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/com/android/settings/wifi/p2p/WifiP2pSettings.java b/src/com/android/settings/wifi/p2p/WifiP2pSettings.java index b0f5c1039a9..0e4be1314cd 100644 --- a/src/com/android/settings/wifi/p2p/WifiP2pSettings.java +++ b/src/com/android/settings/wifi/p2p/WifiP2pSettings.java @@ -78,8 +78,6 @@ public class WifiP2pSettings extends SettingsPreferenceFragment private boolean mWifiP2pSearching; private int mConnectedDevices; - private Handler mUiHandler; - private PreferenceGroup mPeersGroup; private Preference mThisDevicePref; @@ -107,12 +105,24 @@ public class WifiP2pSettings extends SettingsPreferenceFragment WifiP2pManager.EXTRA_NETWORK_INFO); if (networkInfo.isConnected()) { if (DBG) Log.d(TAG, "Connected"); + } else { + //start a search when we are disconnected + startSearch(); } } else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) { mThisDevice = (WifiP2pDevice) intent.getParcelableExtra( WifiP2pManager.EXTRA_WIFI_P2P_DEVICE); if (DBG) Log.d(TAG, "Update device info: " + mThisDevice); updateDevicePref(); + } else if (WifiP2pManager.WIFI_P2P_DISCOVERY_CHANGED_ACTION.equals(action)) { + int discoveryState = intent.getIntExtra(WifiP2pManager.EXTRA_DISCOVERY_STATE, + WifiP2pManager.WIFI_P2P_DISCOVERY_STOPPED); + if (DBG) Log.d(TAG, "Discovery state changed: " + discoveryState); + if (discoveryState == WifiP2pManager.WIFI_P2P_DISCOVERY_STARTED) { + updateSearchMenu(true); + } else { + updateSearchMenu(false); + } } } }; @@ -126,8 +136,7 @@ public class WifiP2pSettings extends SettingsPreferenceFragment mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION); mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION); mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION); - - mUiHandler = new Handler(); + mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_DISCOVERY_CHANGED_ACTION); final Activity activity = getActivity(); mWifiP2pManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); @@ -317,8 +326,6 @@ public class WifiP2pSettings extends SettingsPreferenceFragment mPeersGroup.setEnabled(true); preferenceScreen.addPreference(mPeersGroup); - - if (mConnectedDevices == 0) startSearch(); } } @@ -332,16 +339,9 @@ public class WifiP2pSettings extends SettingsPreferenceFragment if (mWifiP2pManager != null && !mWifiP2pSearching) { mWifiP2pManager.discoverPeers(mChannel, new WifiP2pManager.ActionListener() { public void onSuccess() { - updateSearchMenu(true); - //Allow 20s to discover devices - mUiHandler.postDelayed(new Runnable() { - public void run() { - updateSearchMenu(false); - }}, 20000); } public void onFailure(int reason) { if (DBG) Log.d(TAG, " discover fail " + reason); - updateSearchMenu(false); } }); }