5

Android Jelly Bean 4.1.1でwifiダイレクトを使用してアプリを開発しようとしています。p2p が有効になっている場合は、すぐに電話します

mManager.discoverPeers(mChannel, actionListener);

その後、折り返し電話がかかってきます

onPeersAvailable(WifiP2pDeviceList)

2台のSamsung(Google) Nexusデバイスでテストしており、両方でwifi Directがオンになっています。しかし、このコールバックはピアの空のリストを返しています。しかし、たとえば、デフォルトの wifi ダイレクト インターフェイスで [ピアの検索] ボタンをクリックすると、2 番目のデバイスがすぐに起動します。

WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION

そして、この内部呼び出し

onPeersAvailable(WifiP2pDeviceList peers)

を使用してそのイベントのピアをリクエストしているので

mManager.requestPeers(mChannel, WifiDirectService.this);

今度は仲間に会えます。私はこれを何度も見ています。

考えられる理由は何ですか?ありがとう

4

1 に答える 1

1

Discovering peermethod を使用する必要があります。

manager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
    @Override
    public void onSuccess() {
        ...
    }

    @Override
    public void onFailure(int reasonCode) {
        ...
    }
});

検出プロセスが成功し、ピアが検出された場合、システムは WIFI_P2P_PEERS_CHANGED_ACTION インテントをブロードキャストします。これをブロードキャスト レシーバーでリッスンして、ピアのリストを取得できます。アプリケーションが WIFI_P2P_PEERS_CHANGED_ACTION インテントを受け取ると、requestPeers() で検出されたピアのリストをリクエストできます。

完全な例については、http: //developer.android.com/guide/topics/connectivity/wifip2p.html#discoveringを確認してください。

于 2012-10-04T14:46:21.493 に答える