【问题标题】:Connectivity issues with Wi-Fi DirectWi-Fi Direct 的连接问题
【发布时间】:2017-01-28 13:06:40
【问题描述】:

我正在开发一款点对点 Android 游戏。为此,我使用 Wi-Fi Direct 在两个设备之间建立连接。我能够建立连接。我已按照 Google 文档 设置连接。

问题:用户 A 可以向用户 B 发送连接请求。用户 B 通过接受或拒绝来响应该请求。当用户 B 拒绝连接请求时,用户 A 无法获得对连接请求的任何响应。

为了解决这个问题,每当用户 A 向用户 B 发送请求时,我都会在用户 A 端(发送方)启动 20 秒定时器。另外,我想在连接请求到达时在用户 B 端启动定时器。现在,我无法弄清楚如何在请求到达时在接收端启动计时器。

问题:

  1. 有什么方法可以识别连接请求到达接收端吗?
  2. 当用户B拒绝连接请求时,用户A端(发送方)如何处理对连接请求的响应?

【问题讨论】:

    标签: android wifi wifi-direct wifip2p


    【解决方案1】:
        private void connect(int position, final String name) {
        Toast.makeText(this,"connecting "+name,Toast.LENGTH_LONG).show();
        final WifiP2pDevice device=peers.get(position);
        WifiP2pConfig config = new WifiP2pConfig();
        config.deviceAddress = device.deviceAddress;
        mManager.connect(mChannel, config, new WifiP2pManager.ActionListener() {
    
            @Override
            public void onSuccess() {
                Toast.makeText(getBaseContext(),"connected to "+ device.deviceName,Toast.LENGTH_LONG).show();
                isConnected=1;
                mDiscover.setText("disconnect");
                //success logic
            }
    
            @Override
            public void onFailure(int reason) {
                Toast.makeText(getBaseContext(),"Error :"+ reason,Toast.LENGTH_LONG).show();
                //failure logic
            }
        });
    }
    

    如果请求被拒绝或遇到比 onFaliure 错误的错误,此方法会与对等方连接,并使用原因代码调用。

    【讨论】:

    • 不,它不会告诉我们请求被拒绝的情况。它告诉请求是否成功发送。