1
2package com.android.settings;
3
4import android.content.BroadcastReceiver;
5import android.content.Context;
6import android.content.Intent;
7import android.content.IntentFilter;
8import android.net.ConnectivityManager;
9import android.net.wifi.WifiManager;
10import 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 */
16public 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