Statut WiFi Direct
-
21-12-2019 - |
Question
Est-il possible de vérifier spécifiquement si WiFi Direct est activé ou désactivé ?J'ai écrit un code qui ne peut mettre à jour que l'état du wifi, qu'il soit connecté ou non, qu'il s'agisse d'un point d'accès ou d'un WiFi Direct.
ConnectivityManager connManager = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mWifi.isConnected()) {
}
if (!mWifi.isConnected()) {
}
Je souhaite vérifier spécifiquement l'état de WiFi Direct. Veuillez m'aider.
La solution
Oui, il existe un moyen de procéder.Vous utilisez appelez ceci WIFI_P2P_STATE_CHANGED_ACTION pour vérifier s'il est activé ou désactivé.Un exemple de code est ci-dessous :
Tout d’abord, vous avez besoin d’un récepteur de diffusion :
public class WiFiDirectBroadcastReceiver extends BroadcastReceiver {
private WifiP2pManager mManager;
private Channel mChannel;
private MyWiFiActivity mActivity;
public WiFiDirectBroadcastReceiver(WifiP2pManager manager, Channel channel,
MyWifiActivity activity) {
super();
this.mManager = manager;
this.mChannel = channel;
this.mActivity = 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
}
}
}
Puis, sur le OnRecieve
Une partie de votre code pour le récepteur de diffusion, vous avez ce code :
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Boolean isEnabled;
if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {
int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {
isEnabled = true;
} else {
isEnabled = false;
}
}
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow