Android:Wifi P2P列表未正确更新

时间:2016-05-08 21:26:06

标签: android wifip2p

我正在实施一个应用程序,我必须使用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
            }
        }
     }
 }

1 个答案:

答案 0 :(得分:0)

我尝试了很多替代方案,建议重新初始化wifip2p managerchannel或调用peers.clear()但其中没有一个有效。 然后我遇到了这个(完美)explanation发生的事情,它表示该列表将在特定时间段(大约一分钟后,取决于手机)后被清除,并且没有使用可用软件这样做的可行方法。请注意,手动关闭/打开Wifi会重置列表(以及几乎所有其他与wifi相关的设置),但这根本不可行。

所以简而言之,没有办法以编程方式清除以前不可用的同行。