blob: 408308295825fed5d28a59d66a068c57f14d960d [file] [log] [blame]
Jason Monk37832d62014-12-10 17:21:51 -05001
2package com.android.settings;
3
4import android.content.BroadcastReceiver;
5import android.content.Context;
6import android.content.Intent;
Doris Lingf94401b2017-03-30 14:40:25 -07007import android.content.IntentFilter;
Jeremy Klein8a934762016-01-22 16:14:05 -08008import android.net.ConnectivityManager;
Jason Monk37832d62014-12-10 17:21:51 -05009import android.net.wifi.WifiManager;
Hyejin5565b5c2015-09-10 23:26:53 -070010import android.util.Log;
Jason Monk37832d62014-12-10 17:21:51 -050011
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 */
16public class HotspotOffReceiver extends BroadcastReceiver {
17
Hyejin5565b5c2015-09-10 23:26:53 -070018 private static final String TAG = "HotspotOffReceiver";
19 private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
20
Doris Lingf94401b2017-03-30 14:40:25 -070021 private Context mContext;
22 private boolean mRegistered;
23
24 public HotspotOffReceiver(Context context) {
25 mContext = context;
26 }
27
Jason Monk37832d62014-12-10 17:21:51 -050028 @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) {
Hyejin5565b5c2015-09-10 23:26:53 -070033 if (DEBUG) Log.d(TAG, "TetherService.cancelRecheckAlarmIfNecessary called");
Jason Monk37832d62014-12-10 17:21:51 -050034 // The hotspot has been turned off, we don't need to recheck tethering.
Jeremy Klein8a934762016-01-22 16:14:05 -080035 TetherService.cancelRecheckAlarmIfNecessary(
36 context, ConnectivityManager.TETHERING_WIFI);
Jason Monk37832d62014-12-10 17:21:51 -050037 }
38 }
39 }
Doris Lingf94401b2017-03-30 14:40:25 -070040
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 }
Jason Monk37832d62014-12-10 17:21:51 -050055}