作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在编写 Wifi Direct 游戏,但当一位用户拒绝加入连接的邀请时,我遇到了 WifiP2pDevice Status 问题。
难道不应该像手机 A 上显示的那样将状态切换回 AVAILABLE 吗?我刷新了Available devices列表,但是状态没有变化。即使我重新启动应用程序,它仍然显示电话 B 的状态为受邀?
这是否应该基于 WifiDirect 的 API 发生?还是我遗漏了什么?
编辑:更多信息
在 BroadcastReciever 中,当 Intent 是 WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION 时,管理器使用实现 PeerListListener 的 fragment 请求对等点,它只打印可用设备列表和这些设备的信息(包括状态)。因此,当电话 A 使用 manager.connect() 发送邀请时,它会将状态更改为 INVITED。但如果电话 B 拒绝,状态将保持为已邀请。这些状态是在 notifyDataSetChanged() 上触发的。与其说是代码问题,不如说是wifi direct如何判断和改变设备状态的问题。但如果需要,我可以提供代码。
最佳答案
如果状态为“已邀请”,您可以取消连接
if (fragment.getDevice().status == WifiP2pDevice.AVAILABLE
|| fragment.getDevice().status == WifiP2pDevice.INVITED) {
manager.cancelConnect(channel, new ActionListener() {
@Override
public void onSuccess() {
Toast.makeText(WiFiDirectActivity.this, "Aborting connection",
Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int reasonCode) {
Toast.makeText(WiFiDirectActivity.this,
"Connect abort request failed. Reason Code: " + reasonCode,
Toast.LENGTH_SHORT).show();
}
});
}
关于android - Wifi Direct Invitation 后 WifiP2pDevice 状态保持为 INVITED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22051237/
我是一名优秀的程序员,十分优秀!