WifiSummaryUpdater.java revision c4c9f4d50eec659eb50f8ed671c27d8c6ef0c924
1/* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.settings.wifi; 18 19import android.content.BroadcastReceiver; 20import android.content.Context; 21import android.content.Intent; 22import android.content.IntentFilter; 23import android.net.wifi.WifiManager; 24import android.support.annotation.VisibleForTesting; 25import com.android.settings.R; 26import com.android.settings.widget.SummaryUpdater; 27import com.android.settingslib.wifi.WifiStatusTracker; 28 29/** 30 * Helper class that listeners to wifi callback and notify client when there is update in 31 * wifi summary info. 32 */ 33public final class WifiSummaryUpdater extends SummaryUpdater { 34 35 private final WifiStatusTracker mWifiTracker; 36 private final BroadcastReceiver mReceiver; 37 38 private static final IntentFilter INTENT_FILTER; 39 static { 40 INTENT_FILTER = new IntentFilter(); 41 INTENT_FILTER.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); 42 INTENT_FILTER.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); 43 INTENT_FILTER.addAction(WifiManager.RSSI_CHANGED_ACTION); 44 } 45 46 public WifiSummaryUpdater(Context context, OnSummaryChangeListener listener) { 47 this(context, listener, new WifiStatusTracker(context.getSystemService(WifiManager.class))); 48 } 49 50 @VisibleForTesting 51 public WifiSummaryUpdater(Context context, OnSummaryChangeListener listener, 52 WifiStatusTracker wifiTracker) { 53 super(context, listener); 54 mWifiTracker = wifiTracker; 55 mReceiver = new BroadcastReceiver() { 56 @Override 57 public void onReceive(Context context, Intent intent) { 58 mWifiTracker.handleBroadcast(intent); 59 notifyChangeIfNeeded(); 60 } 61 }; 62 } 63 64 @Override 65 public void register(boolean register) { 66 if (register) { 67 mContext.registerReceiver(mReceiver, INTENT_FILTER); 68 } else { 69 mContext.unregisterReceiver(mReceiver); 70 } 71 } 72 73 @Override 74 public String getSummary() { 75 if (!mWifiTracker.enabled) { 76 return mContext.getString(R.string.wifi_disabled_generic); 77 } 78 if (!mWifiTracker.connected) { 79 return mContext.getString(R.string.disconnected); 80 } 81 return mWifiTracker.ssid; 82 } 83 84} 85