Java WifiP2pManager DiscoveryPeers ActionListener返回忙碌状态
我正在使用WifiP2pManager类启动对等点的发现,如下所述: 部分守则如下: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,
//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时获得成功