1 2 package com.android.settings; 3 4 import android.content.BroadcastReceiver; 5 import android.content.Context; 6 import android.content.Intent; 7 import android.content.IntentFilter; 8 import android.net.ConnectivityManager; 9 import android.net.wifi.WifiManager; 10 import android.util.Log; 11 12 /** 13 * This receiver catches when quick settings turns off the hotspot, so we can 14 * cancel the alarm in that case. All other cancels are handled in tethersettings. 15 */ 16 public class HotspotOffReceiver extends BroadcastReceiver { 17 18 private static final String TAG = "HotspotOffReceiver"; 19 private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); 20 21 private Context mContext; 22 private boolean mRegistered; 23 24 public HotspotOffReceiver(Context context) { 25 mContext = context; 26 } 27 28 @Override 29 public void onReceive(Context context, Intent intent) { 30 if (WifiManager.WIFI_AP_STATE_CHANGED_ACTION.equals(intent.getAction())) { 31 WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 32 if (wifiManager.getWifiApState() == WifiManager.WIFI_AP_STATE_DISABLED) { 33 if (DEBUG) Log.d(TAG, "TetherService.cancelRecheckAlarmIfNecessary called"); 34 // The hotspot has been turned off, we don't need to recheck tethering. 35 TetherService.cancelRecheckAlarmIfNecessary( 36 context, ConnectivityManager.TETHERING_WIFI); 37 } 38 } 39 } 40 41 public void register() { 42 if (!mRegistered) { 43 mContext.registerReceiver(this, 44 new IntentFilter(WifiManager.WIFI_AP_STATE_CHANGED_ACTION)); 45 mRegistered = true; 46 } 47 } 48 49 public void unregister() { 50 if (mRegistered) { 51 mContext.unregisterReceiver(this); 52 mRegistered = false; 53 } 54 } 55 } 56