java - WifiP2pManager discoveryPeers ActionListener 返回 Busy

标签 java android data-transfer wifi-direct wifip2p

我正在使用 WifiP2pManager 类来启动对等点的发现,如下所述:http://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html

部分代码如下:

//Activity Class

@Override
protected void onCreate(Bundle savedInstanceState) {

    ...
    mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
    mChannel = mManager.initialize(this, getMainLooper(), null);

    //Separate class here 
    mReceiver = new WiFiDirectBroadcastReceiver(mManager, mChannel, this);          

    //register the events to filter on to perform the broadcast receiver
    mIntentFilter = new IntentFilter();

    mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);
    mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);
    mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
    mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION); 

    mManager.discoverPeers(mChannel, new WifiP2pManager.ActionListener() {
        @Override
        public void onSuccess() {                   
           myTextView.setText("Success discovery");
        }

        @Override
        public void onFailure(int reasonCode) {
            myTextView.setText("Discovery errorcode:" + String.valueOf(reasonCode));
        }
    });

}

碰巧我在手机(基于 JellyBean)中收到 onSuccess 调用,但用于测试运行 Android 4.1.2 IceCream Sandwich 的 Lenovo A2107A 平板电脑仅收到 onFailure其中,reasonCode 等于 2(忙): http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ActionListener.html

我注意到在手机的 Wifi 设置中显示了 WifiDirect 发现列表选项,但在平板电脑中没有选项可以执行此操作,尽管操作系统版本 4.x 应该支持它,至少以编程方式支持(我测试过ShareIt App 和平板电脑可以通过 WiFi 传输文件)。

这里提出了类似的问题:Why do I always get BUSY when using WifiP2pManager?但没有被接受的答案。

在平板电脑上使用此 API 方法时,我可以做些什么来避免始终处于忙碌状态吗?谢谢!

最佳答案

显然,Lenovo A2107A 平板电脑在其 discoveryPeers 方法上调用 WifiP2pManager 实例后返回“Busy”状态,不支持 WiFi Direct/WiFi P2P,实际上没有查找 P2P 的选项其上的对等点,因此在 onFailure 回调中返回 statusCode 2 Busy 状态,即使运行理论上确实支持 WifiDirect 的 Android 4.1.2,这有点奇怪。

这里有一些有用的项目,可以帮助您更好地了解这项技术的内部工作原理:

https://github.com/ahmontero/wifi-direct-demo

https://github.com/mayfourth/WiFi-Direct-File-Transfer

关于java - WifiP2pManager discoveryPeers ActionListener 返回 Busy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25552621/

相关文章:

java - Query.list() 中的 Hibernate NullPointerException

ios - 如何在 watchos 中使用 WCSessionUserInfoTransfer?

java - 意外的 getter 行为

android - 如何获取选定的文本和值 Android ListPreference

android - 未调用 Firebase Cloud Messaging onMessageSent

android - onOptionsItemSelected 未调用

php - 网络/数据库服务器之间的数据传输

javascript - 如何为非匿名函数的 getJson 回调添加额外的参数?

java - 从 Java 查询 NoSQL 以及直接查询和间接查询之间的性能差异

java - 以设定的时间间隔在单独的进程上触发 Android Activity 方法