Fix the display priority of the airplane mode icon.
The airplane icon is used as a fallback when no other radios are available *and* the AIRPLANE_MODE_ON system setting is set to 1. (NetworkController now tracks changes to the setting via ACTION_AIRPLANE_MODE_CHANGED broadcasts.) This fixes wifi-only devices, for which the previous logic did not correctly and consistently detect airplane mode. Bug: 3489820 Change-Id: I226bb0e977f6a5fd3f2d829ba51ca54c5c910ef3
This commit is contained in:
committed by
Daniel Sandler
parent
0eb6af8929
commit
bd15112a29
@ -98,6 +98,8 @@ public class NetworkController extends BroadcastReceiver {
|
|||||||
private int mInetCondition = 0;
|
private int mInetCondition = 0;
|
||||||
private static final int INET_CONDITION_THRESHOLD = 50;
|
private static final int INET_CONDITION_THRESHOLD = 50;
|
||||||
|
|
||||||
|
private boolean mAirplaneMode = false;
|
||||||
|
|
||||||
// our ui
|
// our ui
|
||||||
Context mContext;
|
Context mContext;
|
||||||
ArrayList<ImageView> mPhoneSignalIconViews = new ArrayList<ImageView>();
|
ArrayList<ImageView> mPhoneSignalIconViews = new ArrayList<ImageView>();
|
||||||
@ -155,8 +157,12 @@ public class NetworkController extends BroadcastReceiver {
|
|||||||
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
|
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
|
||||||
filter.addAction(ConnectivityManager.INET_CONDITION_ACTION);
|
filter.addAction(ConnectivityManager.INET_CONDITION_ACTION);
|
||||||
filter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
|
filter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
|
||||||
|
filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
|
||||||
context.registerReceiver(this, filter);
|
context.registerReceiver(this, filter);
|
||||||
|
|
||||||
|
// AIRPLANE_MODE_CHANGED is sent at boot; we've probably already missed it
|
||||||
|
updateAirplaneMode();
|
||||||
|
|
||||||
// yuck
|
// yuck
|
||||||
mBatteryStats = BatteryStatsService.getService();
|
mBatteryStats = BatteryStatsService.getService();
|
||||||
}
|
}
|
||||||
@ -212,6 +218,9 @@ public class NetworkController extends BroadcastReceiver {
|
|||||||
refreshViews();
|
refreshViews();
|
||||||
} else if (action.equals(Intent.ACTION_CONFIGURATION_CHANGED)) {
|
} else if (action.equals(Intent.ACTION_CONFIGURATION_CHANGED)) {
|
||||||
refreshViews();
|
refreshViews();
|
||||||
|
} else if (action.equals(Intent.ACTION_AIRPLANE_MODE_CHANGED)) {
|
||||||
|
updateAirplaneMode();
|
||||||
|
refreshViews();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -379,18 +388,16 @@ public class NetworkController extends BroadcastReceiver {
|
|||||||
return (levelEvdoDbm < levelEvdoSnr) ? levelEvdoDbm : levelEvdoSnr;
|
return (levelEvdoDbm < levelEvdoSnr) ? levelEvdoDbm : levelEvdoSnr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateAirplaneMode() {
|
||||||
|
mAirplaneMode = (Settings.System.getInt(mContext.getContentResolver(),
|
||||||
|
Settings.System.AIRPLANE_MODE_ON, 0) == 1);
|
||||||
|
}
|
||||||
|
|
||||||
private final void updateTelephonySignalStrength() {
|
private final void updateTelephonySignalStrength() {
|
||||||
// Display signal strength while in "emergency calls only" mode
|
if (!hasService()) {
|
||||||
if (mServiceState == null || (!hasService() && !mServiceState.isEmergencyOnly())) {
|
|
||||||
//Slog.d(TAG, "updateTelephonySignalStrength: no service");
|
//Slog.d(TAG, "updateTelephonySignalStrength: no service");
|
||||||
if (Settings.System.getInt(mContext.getContentResolver(),
|
mPhoneSignalIconId = R.drawable.stat_sys_signal_null;
|
||||||
Settings.System.AIRPLANE_MODE_ON, 0) == 1) {
|
mDataSignalIconId = R.drawable.stat_sys_signal_0; // note we use 0 instead of null
|
||||||
mPhoneSignalIconId = R.drawable.stat_sys_signal_flightmode;
|
|
||||||
mDataSignalIconId = R.drawable.stat_sys_signal_flightmode;
|
|
||||||
} else {
|
|
||||||
mPhoneSignalIconId = R.drawable.stat_sys_signal_null;
|
|
||||||
mDataSignalIconId = R.drawable.stat_sys_signal_0; // note we use 0 instead of null
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (mSignalStrength == null) {
|
if (mSignalStrength == null) {
|
||||||
mPhoneSignalIconId = R.drawable.stat_sys_signal_null;
|
mPhoneSignalIconId = R.drawable.stat_sys_signal_null;
|
||||||
@ -734,6 +741,12 @@ public class NetworkController extends BroadcastReceiver {
|
|||||||
label = mContext.getString(R.string.bluetooth_tethered);
|
label = mContext.getString(R.string.bluetooth_tethered);
|
||||||
combinedSignalIconId = mBluetoothTetherIconId;
|
combinedSignalIconId = mBluetoothTetherIconId;
|
||||||
dataTypeIconId = 0;
|
dataTypeIconId = 0;
|
||||||
|
} else if (mAirplaneMode &&
|
||||||
|
(mServiceState == null || (!hasService() && !mServiceState.isEmergencyOnly()))) {
|
||||||
|
// Only display the flight-mode icon if not in "emergency calls only" mode.
|
||||||
|
label = context.getString(R.string.status_bar_settings_signal_meter_disconnected);
|
||||||
|
combinedSignalIconId = R.drawable.stat_sys_signal_flightmode;
|
||||||
|
dataTypeIconId = 0;
|
||||||
} else {
|
} else {
|
||||||
label = context.getString(R.string.status_bar_settings_signal_meter_disconnected);
|
label = context.getString(R.string.status_bar_settings_signal_meter_disconnected);
|
||||||
// On devices without mobile radios, we want to show the wifi icon
|
// On devices without mobile radios, we want to show the wifi icon
|
||||||
@ -747,6 +760,7 @@ public class NetworkController extends BroadcastReceiver {
|
|||||||
+ Integer.toHexString(combinedSignalIconId)
|
+ Integer.toHexString(combinedSignalIconId)
|
||||||
+ "/" + getResourceName(combinedSignalIconId)
|
+ "/" + getResourceName(combinedSignalIconId)
|
||||||
+ " dataDirectionOverlayIconId=0x" + Integer.toHexString(dataDirectionOverlayIconId)
|
+ " dataDirectionOverlayIconId=0x" + Integer.toHexString(dataDirectionOverlayIconId)
|
||||||
|
+ " mAirplaneMode=" + mAirplaneMode
|
||||||
+ " mDataActivity=" + mDataActivity
|
+ " mDataActivity=" + mDataActivity
|
||||||
+ " mPhoneSignalIconId=0x" + Integer.toHexString(mPhoneSignalIconId)
|
+ " mPhoneSignalIconId=0x" + Integer.toHexString(mPhoneSignalIconId)
|
||||||
+ " mDataDirectionIconId=0x" + Integer.toHexString(mDataDirectionIconId)
|
+ " mDataDirectionIconId=0x" + Integer.toHexString(mDataDirectionIconId)
|
||||||
|
Reference in New Issue
Block a user