Wifi-direct
Androidを使用して 2 つの P2p デバイスを接続しようとしています。permissions
必要なものがすべて揃っていることを確認し、Broadcast Receiver
登録しました。しかし、それでも私はWIFI_P2P_CONNECTION_CHANGED_ACTION
アクションを聞いていません。この問題を解決する方法を提案するか、他の解決策を提案してください。ありがとうございました。
質問する
3719 次
1 に答える
5
ドキュメント[1]に示されているように、この方法で接続を実装できます。
public void connect() {
WifiP2pConfig config = new WifiP2pConfig();
config.deviceAddress = "DEVICE_TO_CONNECT_MAC_ADDRESS";
config.wps.setup = WpsInfo.PBC;
mManager.connect(mChannel, config, new ActionListener() {
@Override
public void onSuccess() {
// WiFiDirectBroadcastReceiver will notify us. Ignore for now.
}
@Override
public void onFailure(int reason) {
Toast.makeText(WiFiDirectActivity.this, "Connect failed. Retry.",
Toast.LENGTH_SHORT).show();
}
});
}
その後、次のように WifiP2pManager のインスタンスを使用して接続情報を要求するために、BroadcastReceiver を変更します。
if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
if (mManager == null) {
return;
}
NetworkInfo networkInfo = (NetworkInfo) intent
.getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO);
if (networkInfo.isConnected()) {
// We are connected with the other device, request connection
// info to find group owner IP
mManager.requestConnectionInfo(mChannel, connectionListener);
}
}
このブロックは、WIFI_P2P_CONNECTION_CHANGED_ACTION インテントをリッスンする BrodacastReceiver に実装する必要があります。
次に、インターフェイス WifiP2pManager.ConnectionInfoListener[2] を実装します。
@Override
public void onConnectionInfoAvailable(final WifiP2pInfo info) {
// InetAddress from WifiP2pInfo struct.
InetAddress groupOwnerAddress = info.groupOwnerAddress.getHostAddress());
// After the group negotiation, we can determine the group owner.
if (info.groupFormed && info.isGroupOwner) {
// Do whatever tasks are specific to the group owner.
// One common case is creating a server thread and accepting
// incoming connections.
} else if (info.groupFormed) {
// The other device acts as the client. In this case,
// you'll want to create a client thread that connects to the group
// owner.
}
}
この助けを願っています。:)
[1] - http://developer.android.com/training/connect-devices-wireless/wifi-direct.html#connect
于 2012-11-20T17:16:44.410 に答える