我正在实施一个应用程序,我必须使用WiFi p2p发现设备并记录有关每个检测到的设备的一些数据。我遇到的问题是当设备从在线转到离线时,WifiP2pDeviceList
没有被更新,因此它会删除此设备。但是当检测到新设备时,它会正常添加到列表中。那么我的代码有什么问题呢?
我已经看过这篇文章(WIFI P2P discovery list is not getting refreshed?),它与我的不同。
/**
* A Table of devices that displays all peers and shows the corresponding
* info about them.
*/
public class DevicesTable extends Fragment implements PeerListListener {
protected static List<WifiP2pDevice> peers = new ArrayList<WifiP2pDevice>();
View mContentView = null;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mContentView = inflater.inflate(R.layout.table, null);
return mContentView;
}
/**
* @return this device
*/
public WifiP2pDevice getDevice() {
return device;
}
@Override
public void onPeersAvailable(WifiP2pDeviceList newPeers) {
ClientActivity x = (ClientActivity) ClientActivity.context;
if (!x.wifiP2pScanThread.isScanning()) {
return;
}
peers.clear();
peers.addAll(newPeers.getDeviceList());
ArrayList<String> onlinemacs = new ArrayList<>();
if (peers.size() == 0) {
Log.d(ClientActivity.TAG, "No devices found");
} else {
for (WifiP2pDevice dev : peers) {
//do something
}
}
}
}
答案 0 :(得分:0)
我尝试了很多替代方案,建议重新初始化wifip2p
manager
和channel
或调用peers.clear()
但其中没有一个有效。
然后我遇到了这个(完美)explanation发生的事情,它表示该列表将在特定时间段(大约一分钟后,取决于手机)后被清除,并且没有使用可用软件这样做的可行方法。请注意,手动关闭/打开Wifi会重置列表(以及几乎所有其他与wifi相关的设置),但这根本不可行。
所以简而言之,没有办法以编程方式清除以前不可用的同行。