要解决“部分设备上Wi-Fi Direct无法发现对等设备”的问题,可以尝试以下解决方法:
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if (wifiManager.isWifiEnabled()) {
// Wi-Fi已启用,继续下一步
if (wifiManager.isP2pSupported()) {
// Wi-Fi Direct可用,继续下一步
...
} else {
// Wi-Fi Direct不支持
// 处理Wi-Fi Direct不可用的情况
}
} else {
// Wi-Fi未启用
// 处理Wi-Fi未启用的情况
}
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(false);
wifiManager.setWifiEnabled(true);
WifiP2pManager wifiP2pManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
WifiP2pManager.Channel channel = wifiP2pManager.initialize(this, getMainLooper(), null);
wifiP2pManager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
// Wi-Fi P2P发现成功,可以尝试连接对等设备
...
}
@Override
public void onFailure(int reason) {
// Wi-Fi P2P发现失败
// 处理Wi-Fi P2P发现失败的情况
}
});
wifiP2pManager.requestPeers(channel, new WifiP2pManager.PeerListListener() {
@Override
public void onPeersAvailable(WifiP2pDeviceList peers) {
if (peers.getDeviceList().isEmpty()) {
// 没有发现可用的对等设备
// 处理没有发现可用对等设备的情况
} else {
// 发现可用的对等设备
// 处理发现可用对等设备的情况
}
}
});
请注意,以上代码示例仅为参考,您需要根据实际情况进行适当的调整和错误处理。