2014-08-28 63 views
1

我使用WifiP2pManager類引發同行的發現被稱爲這裏:http://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html代碼WifiP2pManager discoverPeers的ActionListener返回忙音

部分去如下:

//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),但聯想A2107A平板電腦用於測試運行Android 4.1.2 IceCream三明治剛剛得到onFailure where reasonCode等於2(忙碌): http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ActionListener.html

我注意到在手機的Wifi設置中顯示了WifiDirect發現列表選項,但在平板電腦中沒有選項可以做到這一點,儘管OS版本4.x據稱支持它,至少編程方式支持(我測試了ShareIt應用程序和平板電腦可以通過WiFi傳輸文件)。

在這裏也有類似的問題:Why do I always get BUSY when using WifiP2pManager?但沒有接受的答案。

有什麼我可以做的,以避免在平板電腦上使用此API方法時總是處於繁忙狀態?謝謝!

回答

1

顯然聯想A2107A平板電腦在其discoveryPeers方法上調用WifiP2pManager實例之後返回「忙碌」狀態,不支持WiFi Direct/WiFi P2P,實際上沒有選擇在其上查找P2P對等設備,因此返回在onFailure回調中的狀態碼2忙狀態,甚至運行Android 4.1.2,理論上確實支持WifiDirect,這有點奇怪。

幾個有用的項目,以更好地瞭解這一技術的內部工作在這裏:

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

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

1

請確保無線網絡連接啓用被稱爲discoveryPeers之前。 當Wifi被禁用時,我得到了BUSY;並啓用Wifi時成功。

+0

This mine mine – Vishnu 2017-12-22 09:22:40