Merge "Fix hotspot brokenness" into mnc-dev

This commit is contained in:
Jason Monk
2015-07-20 20:47:15 +00:00
committed by Android (Google) Code Review
3 changed files with 33 additions and 11 deletions

View File

@@ -23,10 +23,9 @@ import android.content.Intent;
import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.MetricsLogger;
import com.android.systemui.Prefs; import com.android.systemui.Prefs;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.qs.UsageTracker;
import com.android.systemui.qs.QSTile; import com.android.systemui.qs.QSTile;
import com.android.systemui.qs.UsageTracker;
import com.android.systemui.statusbar.policy.HotspotController; import com.android.systemui.statusbar.policy.HotspotController;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
/** Quick settings tile: Hotspot **/ /** Quick settings tile: Hotspot **/
public class HotspotTile extends QSTile<QSTile.BooleanState> { public class HotspotTile extends QSTile<QSTile.BooleanState> {
@@ -37,14 +36,12 @@ public class HotspotTile extends QSTile<QSTile.BooleanState> {
private final HotspotController mController; private final HotspotController mController;
private final Callback mCallback = new Callback(); private final Callback mCallback = new Callback();
private final UsageTracker mUsageTracker; private final UsageTracker mUsageTracker;
private final KeyguardMonitor mKeyguard;
public HotspotTile(Host host) { public HotspotTile(Host host) {
super(host); super(host);
mController = host.getHotspotController(); mController = host.getHotspotController();
mUsageTracker = newUsageTracker(host.getContext()); mUsageTracker = newUsageTracker(host.getContext());
mUsageTracker.setListening(true); mUsageTracker.setListening(true);
mKeyguard = host.getKeyguardMonitor();
} }
@Override @Override
@@ -97,7 +94,7 @@ public class HotspotTile extends QSTile<QSTile.BooleanState> {
if (arg instanceof Boolean) { if (arg instanceof Boolean) {
state.value = (boolean) arg; state.value = (boolean) arg;
} else { } else {
mController.isHotspotEnabled(); state.value = mController.isHotspotEnabled();
} }
state.icon = state.visible && state.value ? mEnable : mDisable; state.icon = state.visible && state.value ? mEnable : mDisable;
} }

View File

@@ -2677,6 +2677,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
if (mBluetoothController != null) { if (mBluetoothController != null) {
mBluetoothController.dump(fd, pw, args); mBluetoothController.dump(fd, pw, args);
} }
if (mHotspotController != null) {
mHotspotController.dump(fd, pw, args);
}
if (mCastController != null) { if (mCastController != null) {
mCastController.dump(fd, pw, args); mCastController.dump(fd, pw, args);
} }

View File

@@ -17,7 +17,6 @@
package com.android.systemui.statusbar.policy; package com.android.systemui.statusbar.policy;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
@@ -27,6 +26,8 @@ import android.util.Log;
import com.android.settingslib.TetherUtil; import com.android.settingslib.TetherUtil;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList; import java.util.ArrayList;
public class HotspotControllerImpl implements HotspotController { public class HotspotControllerImpl implements HotspotController {
@@ -43,11 +44,32 @@ public class HotspotControllerImpl implements HotspotController {
private final ArrayList<Callback> mCallbacks = new ArrayList<Callback>(); private final ArrayList<Callback> mCallbacks = new ArrayList<Callback>();
private final Receiver mReceiver = new Receiver(); private final Receiver mReceiver = new Receiver();
private final Context mContext; private final Context mContext;
private final WifiManager mWifiManager;
private int mHotspotState;
public HotspotControllerImpl(Context context) { public HotspotControllerImpl(Context context) {
mContext = context; mContext = context;
mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); }
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
pw.println("HotspotController state:");
pw.print(" mHotspotEnabled="); pw.println(stateToString(mHotspotState));
}
private static String stateToString(int hotspotState) {
switch (hotspotState) {
case WifiManager.WIFI_AP_STATE_DISABLED:
return "DISABLED";
case WifiManager.WIFI_AP_STATE_DISABLING:
return "DISABLING";
case WifiManager.WIFI_AP_STATE_ENABLED:
return "ENABLED";
case WifiManager.WIFI_AP_STATE_ENABLING:
return "ENABLING";
case WifiManager.WIFI_AP_STATE_FAILED:
return "FAILED";
}
return null;
} }
public void addCallback(Callback callback) { public void addCallback(Callback callback) {
@@ -66,7 +88,7 @@ public class HotspotControllerImpl implements HotspotController {
@Override @Override
public boolean isHotspotEnabled() { public boolean isHotspotEnabled() {
return mWifiManager.getWifiApState() == WifiManager.WIFI_AP_STATE_ENABLED; return mHotspotState == WifiManager.WIFI_AP_STATE_ENABLED;
} }
@Override @Override
@@ -76,7 +98,6 @@ public class HotspotControllerImpl implements HotspotController {
@Override @Override
public void setHotspotEnabled(boolean enabled) { public void setHotspotEnabled(boolean enabled) {
final ContentResolver cr = mContext.getContentResolver();
// Call provisioning app which is called when enabling Tethering from Settings // Call provisioning app which is called when enabling Tethering from Settings
if (enabled && TetherUtil.isProvisioningNeeded(mContext)) { if (enabled && TetherUtil.isProvisioningNeeded(mContext)) {
mContext.startServiceAsUser(TETHER_SERVICE_INTENT, UserHandle.CURRENT); mContext.startServiceAsUser(TETHER_SERVICE_INTENT, UserHandle.CURRENT);
@@ -113,7 +134,8 @@ public class HotspotControllerImpl implements HotspotController {
if (DEBUG) Log.d(TAG, "onReceive " + intent.getAction()); if (DEBUG) Log.d(TAG, "onReceive " + intent.getAction());
int state = intent.getIntExtra( int state = intent.getIntExtra(
WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_FAILED); WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_FAILED);
fireCallback(WifiManager.WIFI_AP_STATE_ENABLED == state); mHotspotState = state;
fireCallback(mHotspotState == WifiManager.WIFI_AP_STATE_ENABLED);
} }
} }
} }