Я использую технологию Android Wifi P2P в своем приложении для Android, чтобы отправлять простые передачи данных между несколькими устройствами. Я читаю Руководство разработчика для Wifi p2p, но реализация выглядит так, как будто она создана только для одного действия, использующего прямую службу Wifi.
Следуя руководству, я создал этот класс BroadcastReceiver для прослушивания событий Wifi Direct:
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.p2p.WifiP2pManager;
import android.net.wifi.p2p.WifiP2pManager.Channel;
public class WifiDirectBroadcastReceiver extends BroadcastReceiver {
private WifiP2pManager manager;
private Channel channel;
private WifiActivity activity;
public WifiDirectBroadcastReceiver(WifiP2pManager manager, Channel channel, WifiActivity activity){
this.manager = manager;
this.channel = channel;
this.activity = activity;
}
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)){
// Check to see if Wi-Fi is enabled and notify appropriate activity
}else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)){
// Call WifiP2pManager.requestPeers() to get a list of current peers
}else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)){
// Respond to new connection or disconnections
}else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)){
// Respond to this device's wifi state changing
}
}
}
Однако конструктор, похоже, работает только с одним действием. Должен ли я создавать приемник для каждого действия, использующего Wifi Direct? Как передать соединение различным действиям без необходимости каждый раз устанавливать соединение (например, находить одноранговые узлы, подключаться к одноранговым узлам и т. д.)?