加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 什么可以失败WifiP2pManager.connect?

发布时间:2020-12-15 05:21:23 所属栏目:Java 来源:网络整理
导读:我有一个执行Wifi P2p发现的代码,向用户显示附近的设备,让他选择他想要连接的设备. 该发现按预期工作,但当我尝试实际连接到所选设备时,系统调用ActionListener.onFailure并传递“内部错误”的原因代码. 这是启动连接的代码: public void connectToDevice(Wi
我有一个执行Wifi P2p发现的代码,向用户显示附近的设备,让他选择他想要连接的设备.

该发现按预期工作,但当我尝试实际连接到所选设备时,系统调用ActionListener.onFailure并传递“内部错误”的原因代码.

这是启动连接的代码:

public void connectToDevice(WifiP2pDevice device) {
    Log.i(TAG,"Initiating connection to " + device.deviceAddress);
    stopScan();
    WifiP2pConfig config = new WifiP2pConfig();
    config.deviceAddress = device.deviceAddress;
    config.wps.setup = WpsInfo.PBC;
    // Since we wish to send a friend request,it will be easier if
    // we'll end up as a client because we will have the group owner's
    // address immediately.
    config.groupOwnerIntent = 0;
    mP2pManager.connect(mChannel,config,mConnectionListener);
}

mConnectionListener定义如下:

protected ActionListener mConnectionListener = new ActionListener() {
    @Override
    public void onSuccess() {
        Log.i(TAG,"Conection initiated successfuly");
    }

    @Override
    public void onFailure(int reason) {
        String reasonString = reason(reason);
        Log.e(TAG,"Error while connecting to Wifi peer: " + reasonString);
    }
};

抛出此错误时,设备不属于任何组,并且当任一设备(Nexus 4和Nexus 7)是启动器时会发生这种情况.

任何想法可能是什么问题?

解决方法

在Android源代码中挖掘数小时后,我发现了问题.

WifiP2pService类抛出了错误.原因是我尝试连接的设备不在附近的内部对等列表中.

但为什么设备不在同行名单上??

经过多次挖掘后,我看到扫描完成时,清除了对等列表.

所以我的连接失败的是我在启动连接之前调用的stopScan()方法.删除此行后,连接成功建立.

为什么我停止了扫描?在我完成蓝牙功能后,我立即来到了WiFi-Direct.有关蓝牙的文档明确表示在连接到设备之前停止任何正在进行的扫描,以节省带宽并加快处理速度.所以我想在WiFi-Direct上做同样的事情.不要那样做.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读