How to get wifi hotspot state
Asked Answered
A

4

5

I am creating wifi hotspot in my phone and I want get its state change event when I switched on or off hotspot.

Atombomb answered 7/8, 2012 at 7:48 Comment(0)
C
9

Please look at the following code. This will help you

public class WifiApManager {
    private final WifiManager mWifiManager;

    public WifiApManager(Context context) {
        mWifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
    }

    /*the following method is for getting the wifi hotspot state*/

    public WIFI_AP_STATE getWifiApState() {
        try {
            Method method = mWifiManager.getClass().getMethod("getWifiApState");

            int tmp = ((Integer) method.invoke(mWifiManager));

            // Fix for Android 4
            if (tmp > 10) {
                tmp = tmp - 10;
            }

            return WIFI_AP_STATE.class.getEnumConstants()[tmp];
        } catch (Exception e) {
            Log.e(this.getClass().toString(), "", e);
            return WIFI_AP_STATE.WIFI_AP_STATE_FAILED;
        }
    }

    /**
     * Return whether Wi-Fi Hotspot is enabled or disabled.
     * 
     * @return {@code true} if Wi-Fi AP is enabled
     * @see #getWifiApState()
     */
    public boolean isWifiApEnabled() {
        return getWifiApState() == WIFI_AP_STATE.WIFI_AP_STATE_ENABLED;
    }

}

Where WIFI_AP_STATE is an enum which is as follows

  public enum WIFI_AP_STATE {
      WIFI_AP_STATE_DISABLING, 
      WIFI_AP_STATE_DISABLED, 
      WIFI_AP_STATE_ENABLING, 
      WIFI_AP_STATE_ENABLED, 
      WIFI_AP_STATE_FAILED
  }
Chiccory answered 21/9, 2012 at 13:41 Comment(4)
This seems to have come from whitebyte.info/android/android-wifi-hotspot-manager-class . A link to the source would be nice, not just a copy and paste. There is also sample code that is downloadable.Socage
@Ivan: may be you are correct. But I got this code from another source , not from internet. Any ways thanx for your suggestion.Chiccory
@AtulPanda Then you want to source that other source? You denied it's not your code by admitting it's not yoursHarlen
@Harlen I am sorry. Right now I don't remember the source. I answered it 6 years back.Chiccory
Y
8

To get the current state of the hotspot AP, I use:

final WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
final int apState = (Integer) wifiManager.getClass().getMethod("getWifiApState").invoke(wifiManager);

if (apState == 13) {
    // Ap Enabled
}

And to get updates when the hotspot AP gets enabled/disabled, receive the "android.net.wifi.WIFI_AP_STATE_CHANGED" intent in a BroadcastReceiver:

public class WifiAPReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction() == "android.net.wifi.WIFI_AP_STATE_CHANGED") {
            int apState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);
            if (apState == 13) {
                // Hotspot AP is enabled
            } else {
                // Hotspot AP is disabled/not ready
            }
        }
    }
}

Also, don't forget your declaration and permissions in the Manifest:

<receiver android:name=".WifiAPReceiver">
    <intent-filter>
        <action android:name="android.net.wifi.WIFI_AP_STATE_CHANGED" />
    </intent-filter>
</receiver>

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Yean answered 22/3, 2016 at 18:47 Comment(0)
F
0

You can monitor the wifi state with a BroadcastReciver. Here's an example of how to implement it: http://silverballsoftware.com/android-monitor-wifi-state-with-broadcastreceiver

Fullrigged answered 7/8, 2012 at 8:2 Comment(4)
its valid for wifi state but i want to get hotspot status not wifi, when i switched on hotspot, the wifi will off get off automatically if wifi is on and when I switch off hotspot it does not through any event.Atombomb
My bad I think this post is what you need then: #9938331Fullrigged
I had already tried this but i did not get any notification is my Broadcast classAtombomb
Can you maybe help with an example then?Fullrigged
L
-2

try this

Write this code into OnCreate() method

ConnectivityManager cm = (ConnectivityManager) getSystemService(con.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (netInfo != null && netInfo.isConnectedOrConnecting()) {

            Success 
        }

        else {
                       Give Some Error Message
             }

also mention necessary permission to manifest file

Lightship answered 7/8, 2012 at 11:24 Comment(1)
what does this have to do with hotspots?Bassinet

© 2022 - 2024 — McMap. All rights reserved.