Je souhaite établir une connexion WiFi-Direct avec un autre périphérique analysé via NFC. Mes étapes sont les suivantes:android - Connexion à un périphérique WiFi P2P sans découvrir les pairs
Tout d'abord, le périphérique A reçoit sa propre adresse WiFiP2P et la transmet au périphérique B via NFC.
Ensuite, le périphérique B essaie d'établir une connexion avec le périphérique A en utilisant l'adresse fournie.
Comme vous pouvez le voir, je n'ai pas impliqué la découverte de pairs dans le processus. Mais quand le périphérique B essaye de se connecter, le résultat est toujours échoué (raison 0, cela devrait être ERROR).
Je pense que cela peut être lié à la visibilité de l'appareil, mais je ne sais pas et ne peux pas trouver de code pour rendre un appareil visible.
Voici mon code:
//NOTE: These code should be executed on Device B
//Starting WiFi Direct Transmission
//First we should establish a connection
WifiP2pConfig config = new WifiP2pConfig();
config.deviceAddress = remoteWifiP2pDevice;
//remoteWifiP2pDevice is the address of device A obtained from NFC
config.wps.setup = WpsInfo.PBC;
mManager.connect(mChannel, config, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
//success logic
Toast.makeText(MainActivity.this, "success", Toast.LENGTH_SHORT).show();
if (!FILE_RECV)
{
new SendFilesTask().execute("");
}
}
@Override
public void onFailure(int reason) {
//failure logic
Toast.makeText(MainActivity.this, "failed" + reason, Toast.LENGTH_SHORT).show();
}
});
En OnCreate() Je
intentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);
intentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);
intentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
intentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);
mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
mChannel = mManager.initialize(this, getMainLooper(), null);
mReceiver = new WiFiDirectBroadcastReceiver(mManager, mChannel, this);
Le WifiDirectBroadcastReceiver a le code que liés à l'obtention de l'adresse de l'appareil A et peut être considéré comme vide.
Alors, quel est le problème avec ceux-ci et comment puis-je le réparer? Merci d'avance.
P.S. Si je connecte les périphériques A et B manuellement et exécute à nouveau mon code, il renvoie le succès.