summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/tethering/WifiHotspotObserver.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/tethering/WifiHotspotObserver.java')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/tethering/WifiHotspotObserver.java55
1 files changed, 55 insertions, 0 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/tethering/WifiHotspotObserver.java b/app/src/main/java/se/leap/bitmaskclient/tethering/WifiHotspotObserver.java
new file mode 100644
index 00000000..578c5552
--- /dev/null
+++ b/app/src/main/java/se/leap/bitmaskclient/tethering/WifiHotspotObserver.java
@@ -0,0 +1,55 @@
+package se.leap.bitmaskclient.tethering;
+
+import android.content.Context;
+import android.content.IntentFilter;
+import android.net.wifi.WifiManager;
+
+import java.lang.reflect.Method;
+
+public class WifiHotspotObserver {
+ private static WifiHotspotObserver instance;
+
+ private boolean isEnabled;
+ private WifiManager wifiManager;
+ private WifiHotspotBroadcastReceiver broadcastReceiver;
+
+ private WifiHotspotObserver() {
+ }
+
+ public static void init(Context context) {
+ if (instance == null) {
+ instance = new WifiHotspotObserver();
+ instance.broadcastReceiver = new WifiHotspotBroadcastReceiver();
+ IntentFilter intentFilter = new IntentFilter("android.net.wifi.WIFI_AP_STATE_CHANGED");
+ context.getApplicationContext().registerReceiver(instance.broadcastReceiver, intentFilter);
+ instance.wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
+ instance.setEnabled(instance.isWifiApEnabled());
+ }
+ }
+
+ private boolean isWifiApEnabled() {
+ try {
+ Method method = instance.wifiManager.getClass().getMethod("getWifiApState");
+ int tmp = ((Integer) method.invoke(wifiManager));
+ return WifiHotspotState.WIFI_AP_STATE_ENABLED.ordinal() == tmp % 10;
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ public static WifiHotspotObserver getInstance() {
+ if (instance == null) {
+ throw new RuntimeException("Call init() first!");
+ }
+
+ return instance;
+ }
+
+ void setEnabled(boolean enabled) {
+ isEnabled = enabled;
+ }
+
+ public boolean isEnabled() {
+ return isEnabled;
+ }
+}