Wifi Direct邀请后WifiP2pDevice状态保持在INVITED状态

问题描述 投票:6回答:1

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

  1. 电话A启动与电话B的连接
  2. 电话B状态变为已邀请(如电话A所示)
  3. 电话B拒绝来自电话A的邀请
  4. 电话B状态仍为INVITED(如电话A所示)

不应该将状态转移回电话A上显示的AVAILABLE状态?我刷新了可用设备列表,但状态保持不变。即使我重新启动应用程序,它仍会显示电话B的状态为受邀者?

这是否应该基于WifiDirect的API发生?还是我错过了什么?

编辑:更多信息

在BroadcastReciever中,当intent为WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION时,管理器使用实现PeerListListener的Fragment请求对等体,PeerListListener只打印可用设备列表和这些设备的信息(包括状态)。因此,当电话A使用manager.connect()发送邀请时,它会将状态更改为INVITED。但如果电话B拒绝,状态仍为INVITED。这些状态是在notifyDataSetChanged()上触发的。这不是关于代码的问题,而是wifi如何直接确定和更改设备的状态。但如果需要,我可以提供代码。

android wifi-direct wifip2p
1个回答
0
投票

如果状态为“已邀请”,您可以取消连接

 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();
                }
            });
        }
© www.soinside.com 2019 - 2024. All rights reserved.