Merge "DO NOT MERGE Move IMS registration state to SIM status screen"
This commit is contained in:
@@ -30,7 +30,9 @@ import android.os.Bundle;
|
||||
import android.os.PersistableBundle;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.support.annotation.VisibleForTesting;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceScreen;
|
||||
import android.telephony.CarrierConfigManager;
|
||||
import android.telephony.CellBroadcastMessage;
|
||||
import android.telephony.PhoneStateListener;
|
||||
@@ -89,6 +91,9 @@ public class SimStatus extends SettingsPreferenceFragment {
|
||||
private static final String KEY_IMEI_SV = "imei_sv";
|
||||
private static final String KEY_ICCID = "iccid";
|
||||
|
||||
@VisibleForTesting
|
||||
static final String KEY_IMS_REGISTRATION_STATE = "ims_reg_state";
|
||||
|
||||
static private final String CB_AREA_INFO_RECEIVED_ACTION =
|
||||
"com.android.cellbroadcastreceiver.CB_AREA_INFO_RECEIVED";
|
||||
|
||||
@@ -101,10 +106,10 @@ public class SimStatus extends SettingsPreferenceFragment {
|
||||
private CarrierConfigManager mCarrierConfigManager;
|
||||
private Phone mPhone = null;
|
||||
private Resources mRes;
|
||||
private Preference mSignalStrength;
|
||||
private SubscriptionInfo mSir;
|
||||
private boolean mShowLatestAreaInfo;
|
||||
private boolean mShowICCID;
|
||||
private boolean mShowImsRegState;
|
||||
|
||||
// Default summary for items
|
||||
private String mDefaultText;
|
||||
@@ -148,8 +153,6 @@ public class SimStatus extends SettingsPreferenceFragment {
|
||||
|
||||
mRes = getResources();
|
||||
mDefaultText = mRes.getString(R.string.device_info_default);
|
||||
// Note - missing in zaku build, be careful later...
|
||||
mSignalStrength = findPreference(KEY_SIGNAL_STRENGTH);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -202,10 +205,11 @@ public class SimStatus extends SettingsPreferenceFragment {
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
if (mPhone != null) {
|
||||
updatePreference();
|
||||
updatePreference(false /* isTabChanged */);
|
||||
|
||||
updateSignalStrength(mPhone.getSignalStrength());
|
||||
updateServiceState(mPhone.getServiceState());
|
||||
updateImsRegistrationState();
|
||||
updateDataState();
|
||||
mTelephonyManager.listen(mPhoneStateListener,
|
||||
PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
|
||||
@@ -323,7 +327,7 @@ public class SimStatus extends SettingsPreferenceFragment {
|
||||
break;
|
||||
case ServiceState.STATE_OUT_OF_SERVICE:
|
||||
// Set signal strength to 0 when service state is STATE_OUT_OF_SERVICE
|
||||
mSignalStrength.setSummary("0");
|
||||
setSummaryText(KEY_SIGNAL_STRENGTH, "0");
|
||||
case ServiceState.STATE_EMERGENCY_ONLY:
|
||||
// Set summary string of service state to radioInfo_service_out when
|
||||
// service state is both STATE_OUT_OF_SERVICE & STATE_EMERGENCY_ONLY
|
||||
@@ -332,7 +336,7 @@ public class SimStatus extends SettingsPreferenceFragment {
|
||||
case ServiceState.STATE_POWER_OFF:
|
||||
display = mRes.getString(R.string.radioInfo_service_off);
|
||||
// Also set signal strength to 0
|
||||
mSignalStrength.setSummary("0");
|
||||
setSummaryText(KEY_SIGNAL_STRENGTH, "0");
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -353,32 +357,46 @@ public class SimStatus extends SettingsPreferenceFragment {
|
||||
}
|
||||
|
||||
void updateSignalStrength(SignalStrength signalStrength) {
|
||||
if (mSignalStrength != null) {
|
||||
final int state = mPhone.getServiceState().getState();
|
||||
final int state = mPhone.getServiceState().getState();
|
||||
|
||||
if ((ServiceState.STATE_OUT_OF_SERVICE == state) ||
|
||||
(ServiceState.STATE_POWER_OFF == state)) {
|
||||
mSignalStrength.setSummary("0");
|
||||
return;
|
||||
}
|
||||
|
||||
int signalDbm = signalStrength.getDbm();
|
||||
int signalAsu = signalStrength.getAsuLevel();
|
||||
|
||||
if (-1 == signalDbm) {
|
||||
signalDbm = 0;
|
||||
}
|
||||
|
||||
if (-1 == signalAsu) {
|
||||
signalAsu = 0;
|
||||
}
|
||||
|
||||
mSignalStrength.setSummary(mRes.getString(R.string.sim_signal_strength,
|
||||
signalDbm, signalAsu));
|
||||
if ((ServiceState.STATE_OUT_OF_SERVICE == state) ||
|
||||
(ServiceState.STATE_POWER_OFF == state)) {
|
||||
setSummaryText(KEY_SIGNAL_STRENGTH, "0");
|
||||
return;
|
||||
}
|
||||
|
||||
int signalDbm = signalStrength.getDbm();
|
||||
int signalAsu = signalStrength.getAsuLevel();
|
||||
|
||||
if (-1 == signalDbm) {
|
||||
signalDbm = 0;
|
||||
}
|
||||
|
||||
if (-1 == signalAsu) {
|
||||
signalAsu = 0;
|
||||
}
|
||||
|
||||
setSummaryText(KEY_SIGNAL_STRENGTH, mRes.getString(R.string.sim_signal_strength, signalDbm,
|
||||
signalAsu));
|
||||
}
|
||||
|
||||
private void updatePreference() {
|
||||
@VisibleForTesting
|
||||
void updateImsRegistrationState() {
|
||||
boolean isImsRegistered = mTelephonyManager.isImsRegistered(mSir.getSubscriptionId());
|
||||
setSummaryText(KEY_IMS_REGISTRATION_STATE, mRes.getString(isImsRegistered ?
|
||||
R.string.ims_reg_status_registered : R.string.ims_reg_status_not_registered));
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void updatePreference(boolean isTabChanged) {
|
||||
if (isTabChanged) {
|
||||
PreferenceScreen preferenceScreen = getPreferenceScreen();
|
||||
if (preferenceScreen != null) {
|
||||
preferenceScreen.removeAll();
|
||||
addPreferencesFromResource(R.xml.device_info_sim_status);
|
||||
}
|
||||
}
|
||||
|
||||
if (mPhone.getPhoneType() != TelephonyManager.PHONE_TYPE_CDMA) {
|
||||
mShowLatestAreaInfo = Resources.getSystem().getBoolean(
|
||||
com.android.internal.R.bool.config_showAreaUpdateInfoSettings);
|
||||
@@ -387,7 +405,8 @@ public class SimStatus extends SettingsPreferenceFragment {
|
||||
mSir.getSubscriptionId());
|
||||
mShowICCID = carrierConfig.getBoolean(
|
||||
CarrierConfigManager.KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL);
|
||||
|
||||
mShowImsRegState = carrierConfig.getBoolean(
|
||||
CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL);
|
||||
|
||||
// If formattedNumber is null or empty, it'll display as "Unknown".
|
||||
setSummaryText(KEY_PHONE_NUMBER,
|
||||
@@ -412,6 +431,10 @@ public class SimStatus extends SettingsPreferenceFragment {
|
||||
if (hideSignalStrength) {
|
||||
removePreferenceFromScreen(KEY_SIGNAL_STRENGTH);
|
||||
}
|
||||
|
||||
if (!mShowImsRegState) {
|
||||
removePreferenceFromScreen(KEY_IMS_REGISTRATION_STATE);
|
||||
}
|
||||
}
|
||||
|
||||
private void updatePhoneInfos() {
|
||||
@@ -448,29 +471,36 @@ public class SimStatus extends SettingsPreferenceFragment {
|
||||
@Override
|
||||
public void onServiceStateChanged(ServiceState serviceState) {
|
||||
updateServiceState(serviceState);
|
||||
updateImsRegistrationState();
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private OnTabChangeListener mTabListener = new OnTabChangeListener() {
|
||||
@Override
|
||||
public void onTabChanged(String tabId) {
|
||||
final int slotId = Integer.parseInt(tabId);
|
||||
mSir = mSelectableSubInfos.get(slotId);
|
||||
|
||||
// The User has changed tab; update the SIM information.
|
||||
updatePhoneInfos();
|
||||
mTelephonyManager.listen(mPhoneStateListener,
|
||||
PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
|
||||
| PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
|
||||
| PhoneStateListener.LISTEN_SERVICE_STATE);
|
||||
updateDataState();
|
||||
updateNetworkType();
|
||||
updatePreference();
|
||||
doTabChanged(tabId);
|
||||
}
|
||||
};
|
||||
|
||||
@VisibleForTesting
|
||||
void doTabChanged(String tabId) {
|
||||
final int slotId = Integer.parseInt(tabId);
|
||||
mSir = mSelectableSubInfos.get(slotId);
|
||||
|
||||
// The User has changed tab; update the SIM information.
|
||||
updatePhoneInfos();
|
||||
updatePreference(true /* isTabChanged */);
|
||||
mTelephonyManager.listen(mPhoneStateListener,
|
||||
PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
|
||||
| PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
|
||||
| PhoneStateListener.LISTEN_SERVICE_STATE);
|
||||
updateDataState();
|
||||
updateNetworkType();
|
||||
}
|
||||
|
||||
private TabContentFactory mEmptyTabContent = new TabContentFactory() {
|
||||
@Override
|
||||
public View createTabContent(String tag) {
|
||||
|
||||
@@ -28,16 +28,12 @@ import android.net.wifi.WifiManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.os.PersistableBundle;
|
||||
import android.os.SystemClock;
|
||||
import android.os.SystemProperties;
|
||||
import android.os.UserManager;
|
||||
import android.provider.SearchIndexableResource;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceScreen;
|
||||
import android.telephony.CarrierConfigManager;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
@@ -65,7 +61,6 @@ public class Status extends SettingsPreferenceFragment implements Indexable {
|
||||
private static final String KEY_WIMAX_MAC_ADDRESS = "wimax_mac_address";
|
||||
private static final String KEY_SIM_STATUS = "sim_status";
|
||||
private static final String KEY_IMEI_INFO = "imei_info";
|
||||
private static final String KEY_IMS_REGISTRATION_STATE = "ims_reg_state";
|
||||
|
||||
// Broadcasts to listen to for connectivity changes.
|
||||
private static final String[] CONNECTIVITY_INTENTS = {
|
||||
@@ -95,7 +90,6 @@ public class Status extends SettingsPreferenceFragment implements Indexable {
|
||||
private Preference mIpAddress;
|
||||
private Preference mWifiMacAddress;
|
||||
private Preference mWimaxMacAddress;
|
||||
private Preference mImsStatus;
|
||||
|
||||
private Handler mHandler;
|
||||
|
||||
@@ -174,7 +168,6 @@ public class Status extends SettingsPreferenceFragment implements Indexable {
|
||||
mWifiMacAddress = findPreference(KEY_WIFI_MAC_ADDRESS);
|
||||
mWimaxMacAddress = findPreference(KEY_WIMAX_MAC_ADDRESS);
|
||||
mIpAddress = findPreference(KEY_IP_ADDRESS);
|
||||
mImsStatus = findPreference(KEY_IMS_REGISTRATION_STATE);
|
||||
|
||||
mRes = getResources();
|
||||
mUnavailable = mRes.getString(R.string.status_unavailable);
|
||||
@@ -282,31 +275,11 @@ public class Status extends SettingsPreferenceFragment implements Indexable {
|
||||
}
|
||||
}
|
||||
|
||||
private void setImsRegistrationStatus() {
|
||||
CarrierConfigManager configManager = (CarrierConfigManager)
|
||||
getSystemService(Context.CARRIER_CONFIG_SERVICE);
|
||||
int subId = SubscriptionManager.getDefaultDataSubscriptionId();
|
||||
PersistableBundle config = null;
|
||||
if (configManager != null) {
|
||||
config = configManager.getConfigForSubId(subId);
|
||||
}
|
||||
if (config != null && config.getBoolean(
|
||||
CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)) {
|
||||
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
|
||||
mImsStatus.setSummary((tm != null && tm.isImsRegistered(subId)) ?
|
||||
R.string.ims_reg_status_registered : R.string.ims_reg_status_not_registered);
|
||||
} else {
|
||||
removePreferenceFromScreen(KEY_IMS_REGISTRATION_STATE);
|
||||
mImsStatus = null;
|
||||
}
|
||||
}
|
||||
|
||||
void updateConnectivity() {
|
||||
setWimaxStatus();
|
||||
setWifiStatus();
|
||||
setBtStatus();
|
||||
setIpAddressStatus();
|
||||
setImsRegistrationStatus();
|
||||
}
|
||||
|
||||
void updateTimes() {
|
||||
|
||||
Reference in New Issue
Block a user