2

ここで参照されているように、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 IceCream サンドイッチの実行をテストするために使用される Lenovo A2107A タブレットonFailureは、reasonCode が 2 (Busy) に等しい場所を取得します: http://developer.android.com/reference /android/net/wifi/p2p/WifiP2pManager.ActionListener.html

電話の Wifi 設定に WifiDirect 検出リスト オプションが表示されることに気付きましたが、タブレットにはこれを行うオプションがありません。ただし、OS バージョン 4.x は、少なくともプログラムでサポートしていると思われます (私は ShareIt アプリをテストし、タブレットは WiFi 経由でファイルを転送できます)。

同様の質問がここで行われました: WifiP2pManager を使用すると、常に BUSY になるのはなぜですか? しかし、受け入れられた答えはありません。

タブレットでこの API メソッドを使用しているときに、常にビジー状態になるのを避けるためにできることはありますか? ありがとう!

4

2 に答える 2

1

メソッドでWifiP2pManager インスタンスを呼び出した後、Lenovo A2107A タブレットが「Busy」状態を返すようです。WiFi discoveryPeersDirect/WiFi P2P をサポートしていません。実際、P2P ピアを検索するオプションがないため、statusCode 2 Busy ステータスを返します。コールバックではonFailure、Android 4.1.2 を実行していても、理論的には WifiDirect をサポートしていますが、これは少し奇妙です。

このテクノロジーの内部の仕組みをよりよく理解するのに役立つプロジェクトがいくつかあります。

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

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

于 2014-08-29T16:43:49.243 に答える