android - Wifi Direct Invitation 后 WifiP2pDevice 状态保持为 INVITED

标签 android wifi-direct wifip2p

我正在编写 Wifi Direct 游戏,但当一位用户拒绝加入连接的邀请时,我遇到了 WifiP2pDevice Status 问题。

  1. 电话 A 发起与电话 B 的连接
  2. 电话 B 状态变为已邀请(如电话 A 上显示)
  3. 手机 B 拒绝手机 A 的邀请
  4. 电话 B 的状态仍然是 INVITED(在电话 A 上显示)

难道不应该像手机 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/

相关文章:

java - Android 4.2.2 Wifi-Direct adhoc 网络——访问隐藏的 android 方法来设置 SSID 和密码?

java - android:如何在 "user-permission"文件中设置 "MainActivity.java"

android - 在android上使用WiFi P2P管理器进行实时语音(通话)

java - Android 版 Youtube API - 创建多个缩略图

Android Wi-Fi Direct P2P 从服务器向客户端发送数据

android - 像硬件后退按钮一样启用操作栏后退按钮

linux - 如何在没有 MAC 地址的情况下通过 WiFi Direct p2p_connect 到设备? (树莓派和安卓)

android - 如何使用wifi p2p将数据从组所有者发送到客户端

java - 使用 Ant 构建一个包含 ActionbarSherlock 作为库项目的项目

android - 如何在android中将工具栏中的图标居中