【问题标题】:WiFi Direct on Android not working properlyAndroid 上的 WiFi Direct 无法正常工作
【发布时间】:2012-10-04 14:41:07
【问题描述】:

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

mManager.discoverPeers(mChannel, actionListener);

之后我接到了回电

onPeersAvailable(WifiP2pDeviceList)

我正在使用 2 个 Samsung(Google) Nexus 设备进行测试,并且 wifi direct 均已打开。但是这个回调返回的是一个空的对等点列表。但例如,如果我点击默认 wifi 直接接口上的 Search Peers 按钮,第二个设备会立即触发

WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION

这反过来又调用

onPeersAvailable(WifiP2pDeviceList peers)

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

mManager.requestPeers(mChannel, WifiDirectService.this);

这一次我就能看到同行了。我多次看到这个。

可能的原因是什么? 谢谢

【问题讨论】:

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


    【解决方案1】:

    您应该使用 Discovering peer 方法:

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

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

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

    【讨论】:

    • 成功后你在做什么?
    • 拜托,从Android官网阅读这个教程,也许你做错了什么,这个例子真的很容易理解。 developer.android.com/guide/topics/connectivity/…
    • 我现在陷入了类似的问题,但我根本无法获得同行列表。我在“WifiP2pManager”实例上调用“discoverPeers(..)”,并将一些消息打印到日志“onSuccess()”和“onFailure()”。他总是成功地检测到对等点,但似乎系统没有广播“WIFI_P2P_PEERS_CHANGED_ACTION”。我确实注册了广播接收器,并且确实调用了“requestPeers(..)”。
    • 你能修复它吗?
    • @CommonsWare 可以提供任何解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多