java - Android 上的 WiFi Direct 无法正常工作

标签 java android android-4.2-jelly-bean wifi-direct

我正在尝试在 android Jelly Bean 4.1.1 中使用 wifi direct 开发一个应用程序。如果启用了 p2p,我会立即调用

mManager.discoverPeers(mChannel, actionListener);

之后我接到了回电

onPeersAvailable(WifiP2pDeviceList)

我正在使用 2 台三星(谷歌)Nexus 设备进行测试,并且两台设备都开启了 wifi direct。但是这个回调返回一个空的对等点列表。但是例如,如果我点击默认 wifi 直接接口(interface)上的 Search Peers 按钮,第二个设备会立即触发

WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION

这反过来调用

onPeersAvailable(WifiP2pDeviceList peers)

因为我正在为该事件请求同行

mManager.requestPeers(mChannel, WifiDirectService.this);

这次一定能见到同行。我已经多次看到这种情况。

可能的原因是什么? 谢谢

最佳答案

您应该使用 Discovering peer 方法:

manager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
    @Override
    public void onSuccess() {
        ...
    }

    @Override
    public void onFailure(int reasonCode) {
        ...
    }
});

如果发现过程成功并检测到对等点,系统会广播 WIFI_P2P_PEERS_CHANGED_ACTION Intent ,您可以在广播接收器中收听该 Intent 以获取对等点列表。当您的应用程序收到 WIFI_P2P_PEERS_CHANGED_ACTION Intent 时,您可以使用 requestPeers() 请求已发现对等点的列表。

完整示例,请查看:http://developer.android.com/guide/topics/connectivity/wifip2p.html#discovering

关于java - Android 上的 WiFi Direct 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12729814/

相关文章:

android - 将 apk 上传到商店会收到警告消息

Android BatteryManager 没有报告正确的充电状态

javascript - @JavaScriptInterface 与 ICS 和 JB 项目一起工作

android - 更改 Jelly Bean Android 中的振动设置

java - 如何在 web.xml 中指定默认错误页面?

java - setTitle 不工作 Android

java - 在另一台计算机上使用 Selenium 的 WebDriver 运行 Java 程序

android - 在文本和 ImageView 之间放置空格

java - 尝试使Java中的音频失真

java - 提取字符串的数字模式并将其放入对象中