我有兩個設備:HTC One X的(安卓4.2.2)和三星N8000注(安卓4.1.2)的Android無線上網的P2P連接
我需要使用Wi-Fi點對點連接它們。
我以Creating P2P Connections with Wi-Fi爲例,創建了廣播接收器和Wifi P2P初始化。
private class WifiP2PBroadcastReceiver extends BroadcastReceiver {
public WifiP2PBroadcastReceiver() {
register();
}
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
if (action.equals(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION)) {
int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
logger.fine("WifiP2PBroadcastReceiver: WIFI_P2P_CONNECTION_CHANGED_ACTION " + ((state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) ? "enabled" : "disabled"));
}
else if (action.equals(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION)) {
peersUpdated();
}
}
public void register() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
intentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);
context.registerReceiver(this, intentFilter);
}
public void unregister() {
context.unregisterReceiver(this);
}
}
無線上網的P2P初始化:
private void initWifiP2p() {
// initialization
wifiP2pManager = (WifiP2pManager) context.getSystemService(Context.WIFI_P2P_SERVICE);
channel = wifiP2pManager.initialize(context, context.getMainLooper(), new WifiP2pManager.ChannelListener() {
@Override
public void onChannelDisconnected() {
logger.fine("onChannelDisconnected");
}
});
// peer disccovery
wifiP2pManager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
peersUpdated();
}
@Override
public void onFailure(int reason) {
}
});
}
// method called when discoverPeers listener's onSuccess is called
private void peersUpdated() {
logger.fine("peersUpdated");
wifiP2pManager.requestPeers(channel, new WifiP2pManager.PeerListListener() {
@Override
public void onPeersAvailable(WifiP2pDeviceList peers) {
// print all peers
for (WifiP2pDevice device : peers.getDeviceList()) {
logger.fine("peersUpdated: " + device.deviceName + " " + device.primaryDeviceType + " " + device.deviceAddress);
}
}
});
}
在這兩個設備:如果WiFi AP間斷開 - 什麼也沒有發生,無Wi-Fi連接被啓動。廣播接收器處於接收狀態,不會調用WIFI_P2P_CONNECTION_CHANGED_ACTION。 我需要做什麼來建立Wifi P2P連接?
如果設備連接到Wifi AP,則調用WIFI_P2P_PEERS_CHANGED_ACTION,但找不到對等方。
這些權限在AndroidManifest.xml中設置。 –