Use updated API

Fetch peer details from broadcast instead of querying the whole list
each time

Change-Id: I57d82c9dc977d91675b5e5c99979732c80fb1a09
This commit is contained in:
Irfan Sheriff
2012-12-11 11:28:11 -08:00
parent ff8da7a11a
commit 9f86b5df78

View File

@@ -34,7 +34,6 @@ import android.net.wifi.p2p.WifiP2pGroup;
import android.net.wifi.p2p.WifiP2pGroupList; import android.net.wifi.p2p.WifiP2pGroupList;
import android.net.wifi.p2p.WifiP2pManager; import android.net.wifi.p2p.WifiP2pManager;
import android.net.wifi.p2p.WifiP2pManager.GroupInfoListener; 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.p2p.WifiP2pManager.PersistentGroupInfoListener;
import android.net.wifi.WpsInfo; import android.net.wifi.WpsInfo;
import android.os.Bundle; import android.os.Bundle;
@@ -66,7 +65,7 @@ import java.util.Collection;
* Displays Wi-fi p2p settings UI * Displays Wi-fi p2p settings UI
*/ */
public class WifiP2pSettings extends SettingsPreferenceFragment public class WifiP2pSettings extends SettingsPreferenceFragment
implements PeerListListener, PersistentGroupInfoListener, GroupInfoListener { implements PersistentGroupInfoListener, GroupInfoListener {
private static final String TAG = "WifiP2pSettings"; private static final String TAG = "WifiP2pSettings";
private static final boolean DBG = false; private static final boolean DBG = false;
@@ -116,9 +115,9 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
WifiP2pManager.WIFI_P2P_STATE_DISABLED) == WifiP2pManager.WIFI_P2P_STATE_ENABLED; WifiP2pManager.WIFI_P2P_STATE_DISABLED) == WifiP2pManager.WIFI_P2P_STATE_ENABLED;
handleP2pStateChanged(); handleP2pStateChanged();
} else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) { } else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {
if (mWifiP2pManager != null) { mPeers = (WifiP2pDeviceList) intent.getParcelableExtra(
mWifiP2pManager.requestPeers(mChannel, WifiP2pSettings.this); WifiP2pManager.EXTRA_P2P_DEVICE_LIST);
} handlePeersChanged();
} else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) { } else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
if (mWifiP2pManager == null) return; if (mWifiP2pManager == null) return;
NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra( NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(
@@ -463,13 +462,13 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
} }
} }
public void onPeersAvailable(WifiP2pDeviceList peers) { private void handlePeersChanged() {
mPeersGroup.removeAll(); mPeersGroup.removeAll();
mPeers = peers;
mConnectedDevices = 0; mConnectedDevices = 0;
for (WifiP2pDevice peer: peers.getDeviceList()) { if (DBG) Log.d(TAG, "List of available peers");
if (DBG) Log.d(TAG, " peer " + peer); for (WifiP2pDevice peer: mPeers.getDeviceList()) {
if (DBG) Log.d(TAG, "-> " + peer);
mPeersGroup.addPreference(new WifiP2pPeer(getActivity(), peer)); mPeersGroup.addPreference(new WifiP2pPeer(getActivity(), peer));
if (peer.status == WifiP2pDevice.CONNECTED) mConnectedDevices++; if (peer.status == WifiP2pDevice.CONNECTED) mConnectedDevices++;
} }
@@ -505,9 +504,6 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
mPersistentGroup.setEnabled(true); mPersistentGroup.setEnabled(true);
preferenceScreen.addPreference(mPersistentGroup); preferenceScreen.addPreference(mPersistentGroup);
/* Request latest set of peers */
mWifiP2pManager.requestPeers(mChannel, WifiP2pSettings.this);
} }
} }