Java WifiP2pManager DiscoveryPeers ActionListener返回忙碌状态

Java WifiP2pManager DiscoveryPeers ActionListener返回忙碌状态,java,android,data-transfer,wifi-direct,wifip2p,Java,Android,Data Transfer,Wifi Direct,Wifip2p,我正在使用WifiP2pManager类启动对等点的发现,如下所述: 部分守则如下: //Activity Class @Override protected void onCreate(Bundle savedInstanceState) { ... mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); mChannel = mManager.initialize(this,

我正在使用WifiP2pManager类启动对等点的发现,如下所述:

部分守则如下:

//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));
        }
    });

}
碰巧我在手机中接到了
onSuccess
呼叫(基于JellyBean),但用于测试运行Android 4.1.2冰淇淋三明治的联想A2107A平板电脑刚刚收到
onFailure
,其中reasonCode等于2(忙):

我注意到,在手机的Wifi设置中会显示WifiDirect discovery list选项,但在平板电脑中没有这样做的选项,尽管操作系统版本4.x应该至少在编程上支持它(我测试了ShareIt应用程序,平板电脑可以通过Wifi传输文件)

这里也提出了一个类似的问题:但没有公认的答案


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

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

以下是一些有助于更好地了解该技术内部工作原理的项目:


在调用DiscoveryPers之前,请确保已启用Wifi。 当Wifi被禁用时,我变得很忙;并在启用Wifi时获得成功