【发布时间】:2014-10-22 12:59:35
【问题描述】:
我正在使用 WifiP2pManager 类来启动 Peers 的发现,如下所示: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 三明治的 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 方法时,我可以做些什么来避免始终处于忙碌状态?谢谢!
【问题讨论】:
标签: java android data-transfer wifi-direct wifip2p