From 5d2169eb6fa94ea84392138291735b69d0e384e5 Mon Sep 17 00:00:00 2001 From: Yuhao Zheng Date: Fri, 11 Oct 2013 13:56:24 -0700 Subject: [PATCH] Refresh peer list when entering wifi p2p settings When wifi p2p is connected, entering Wi-Fi Direct UI won't show any peer devices until a WIFI_P2P_PEERS_CHANGED_ACTION broadcast is received (long after or never). Users may be confused and think p2p is disconnected. It's more user friendly to display connected devices right at the beginning. In addition, this CL removes the useless mWifiP2pManager.requestGroupInfo call. Bug: 11175553 Change-Id: I0f0834043a2cf6e8fc20319e6861b62484478146 --- .../settings/wifi/p2p/WifiP2pSettings.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/com/android/settings/wifi/p2p/WifiP2pSettings.java b/src/com/android/settings/wifi/p2p/WifiP2pSettings.java index 887d41e1204..2ca39f04531 100644 --- a/src/com/android/settings/wifi/p2p/WifiP2pSettings.java +++ b/src/com/android/settings/wifi/p2p/WifiP2pSettings.java @@ -34,7 +34,7 @@ import android.net.wifi.p2p.WifiP2pDeviceList; import android.net.wifi.p2p.WifiP2pGroup; import android.net.wifi.p2p.WifiP2pGroupList; import android.net.wifi.p2p.WifiP2pManager; -import android.net.wifi.p2p.WifiP2pManager.GroupInfoListener; +import android.net.wifi.p2p.WifiP2pManager.PeerListListener; import android.net.wifi.p2p.WifiP2pManager.PersistentGroupInfoListener; import android.net.wifi.WpsInfo; import android.os.Bundle; @@ -67,7 +67,7 @@ import java.util.Collection; * Displays Wi-fi p2p settings UI */ public class WifiP2pSettings extends SettingsPreferenceFragment - implements PersistentGroupInfoListener, GroupInfoListener { + implements PersistentGroupInfoListener, PeerListListener { private static final String TAG = "WifiP2pSettings"; private static final boolean DBG = false; @@ -89,7 +89,6 @@ public class WifiP2pSettings extends SettingsPreferenceFragment private boolean mWifiP2pEnabled; private boolean mWifiP2pSearching; private int mConnectedDevices; - private WifiP2pGroup mConnectedGroup; private boolean mLastGroupFormed = false; private PreferenceGroup mPeersGroup; @@ -129,9 +128,6 @@ public class WifiP2pSettings extends SettingsPreferenceFragment WifiP2pManager.EXTRA_NETWORK_INFO); WifiP2pInfo wifip2pinfo = (WifiP2pInfo) intent.getParcelableExtra( WifiP2pManager.EXTRA_WIFI_P2P_INFO); - if (mWifiP2pManager != null) { - mWifiP2pManager.requestGroupInfo(mChannel, WifiP2pSettings.this); - } if (networkInfo.isConnected()) { if (DBG) Log.d(TAG, "Connected"); } else if (mLastGroupFormed != true) { @@ -320,12 +316,17 @@ public class WifiP2pSettings extends SettingsPreferenceFragment public void onResume() { super.onResume(); getActivity().registerReceiver(mReceiver, mIntentFilter); + if (mWifiP2pManager != null) { + mWifiP2pManager.requestPeers(mChannel, WifiP2pSettings.this); + } } @Override public void onPause() { super.onPause(); - mWifiP2pManager.stopPeerDiscovery(mChannel, null); + if (mWifiP2pManager != null) { + mWifiP2pManager.stopPeerDiscovery(mChannel, null); + } getActivity().unregisterReceiver(mReceiver); } @@ -534,10 +535,10 @@ public class WifiP2pSettings extends SettingsPreferenceFragment } @Override - public void onGroupInfoAvailable(WifiP2pGroup group) { - if (DBG) Log.d(TAG, " group " + group); - mConnectedGroup = group; - updateDevicePref(); + public void onPeersAvailable(WifiP2pDeviceList peers) { + if (DBG) Log.d(TAG, "Requested peers are available"); + mPeers = peers; + handlePeersChanged(); } private void handleP2pStateChanged() {