2017-06-14 8 views
1

Comment vérifier que Wi-Fi Direct est activé sur un périphérique?Vérification Android Wi-Fi Direct est activé

J'ai essayé de vérifier Wi-Fi de la manière suivante:

WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); 
return wifiManager.isWifiEnabled(); 

mais il y a des appareils qui ne prennent pas en charge Wi-Fi simultanée et une connexion Wi-Fi Direct (Huawei Honor 4C, il ferme bas Wi-Fi, lorsque vous activez Wi-Fi Direct), cette façon de procéder ne fonctionne pas.

Écouter de WIFI_P2P_STATE_CHANGED_ACTION dans BroadcastReceiver comme there est pas trop acceptable, car il sera déclenché que lorsque je commence une action avec le Wi-Fi (comme la découverte), mais je dois vérifier son état avant.

+0

double possible de [WiFi statut direct] (https://stackoverflow.com/questions/20034736/wifi-direct-status) – Basix

+0

Check it out [https://stackoverflow.com/questions/21533616/is-it-possible-to-connect-two-or-more-wifi-direct-groups?rq=1](https://stackoverflow.com/questions/ 21533616/is-it-possible-to-connect-two-or-more-wifi-direct-groups? Rq = 1) –

Répondre

0

Vous devriez pouvoir utiliser ConnectivityManager pour connaître l'état du Wi-Fi.

ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

    if (mWifi.isConnected()) { 
     // Do whatever 
    } 

S'il vous plaît Vérifiez que vous permission ACCESS_NETWORK_STATE manifeste & & INTERNET.

+0

Il s'agit d'une connexion Wi-Fi, pas Wi-Fi Direct. Et cette méthode est obsolète. – Artyom

1

vous pouvez le faire par WifiDirectBroadcastReceiver comme ceci:

public class WiFiDirectBroadcastReceiver extends BroadcastReceiver { 

private WifiP2pManager mManager; 
private WifiP2pManager.Channel mChannel; 

public WiFiDirectBroadcastReceiver(WifiP2pManager manager, WifiP2pManager.Channel channel) { 
    super(); 
    this.mManager = manager; 
    this.mChannel = channel; 
} 

@Override 
public void onReceive(Context context, Intent intent) { 
    String action = intent.getAction(); 
    Boolean isEnabled; 

    if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) { 
     // check if Wi-Fi is enabled 
     int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1); 
     if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) { 
      isEnabled = true; 
     } else { 
      isEnabled = false; 
     } 
    } else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) { 
     // get list of peers by WifiP2pManager.requestPeers() 
    } else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) { 
     // Respond to new connections 
    } else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) { 
     // on device's wifi state changes 
    } 
} 
} 
+0

Ceci est un code d'une réponse, j'ai lié en question. Ce n'est pas acceptable dans mon cas. – Artyom