Merge "Make RadioInfo settings menu work for mSIM" into qt-dev

This commit is contained in:
Jordan Liu
2019-04-12 23:27:45 +00:00
committed by Android (Google) Code Review
3 changed files with 218 additions and 74 deletions

View File

@@ -25,6 +25,19 @@
android:descendantFocusability="beforeDescendants" android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"> android:focusableInTouchMode="true">
<!-- Phone index -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/phone_index_label"
style="@style/info_label"
/>
<Spinner android:id="@+id/phoneIndex"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<!-- IMEI --> <!-- IMEI -->
<LinearLayout style="@style/entry_layout"> <LinearLayout style="@style/entry_layout">
<TextView android:text="@string/radio_info_imei_label" style="@style/info_label" /> <TextView android:text="@string/radio_info_imei_label" style="@style/info_label" />
@@ -37,6 +50,18 @@
<TextView android:id="@+id/number" style="@style/info_value" /> <TextView android:id="@+id/number" style="@style/info_value" />
</LinearLayout> </LinearLayout>
<!-- Subscription ID -->
<LinearLayout style="@style/entry_layout">
<TextView android:text="@string/radio_info_subid" style="@style/info_label" />
<TextView android:id="@+id/subid" style="@style/info_value" />
</LinearLayout>
<!-- Default data subscription -->
<LinearLayout style="@style/entry_layout">
<TextView android:text="@string/radio_info_dds" style="@style/info_label" />
<TextView android:id="@+id/dds" style="@style/info_value" />
</LinearLayout>
<!-- IMSI --> <!-- IMSI -->
<LinearLayout style="@style/entry_layout"> <LinearLayout style="@style/entry_layout">
<TextView android:text="@string/radio_info_imsi_label" style="@style/info_label" /> <TextView android:text="@string/radio_info_imsi_label" style="@style/info_label" />

View File

@@ -484,6 +484,10 @@
<!-- HTTP proxy settings. Title for Proxy-Auto Config URL. [CHAR LIMIT=25] --> <!-- HTTP proxy settings. Title for Proxy-Auto Config URL. [CHAR LIMIT=25] -->
<string name="proxy_url_title">"PAC URL: "</string> <string name="proxy_url_title">"PAC URL: "</string>
<!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radio_info_subid">Current subId:</string>
<!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radio_info_dds">SubId of default data SIM:</string>
<!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed --> <!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radio_info_dl_kbps">DL Bandwidth (kbps):</string> <string name="radio_info_dl_kbps">DL Bandwidth (kbps):</string>
<!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed --> <!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
@@ -531,6 +535,8 @@
<!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed --> <!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radio_info_data_network_type_label">Data Network Type:</string> <string name="radio_info_data_network_type_label">Data Network Type:</string>
<!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed --> <!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
<string name="phone_index_label">Select phone index</string>
<!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radio_info_set_perferred_label">Set Preferred Network Type:</string> <string name="radio_info_set_perferred_label">Set Preferred Network Type:</string>
<!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed --> <!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radio_info_ping_hostname_v4">Ping Hostname(www.google.com) IPv4:</string> <string name="radio_info_ping_hostname_v4">Ping Hostname(www.google.com) IPv4:</string>

View File

@@ -125,6 +125,7 @@ public class RadioInfo extends Activity {
"Unknown" "Unknown"
}; };
private static String[] mPhoneIndexLabels;
private static final int CELL_INFO_LIST_RATE_DISABLED = Integer.MAX_VALUE; private static final int CELL_INFO_LIST_RATE_DISABLED = Integer.MAX_VALUE;
private static final int CELL_INFO_LIST_RATE_MAX = 0; private static final int CELL_INFO_LIST_RATE_MAX = 0;
@@ -160,7 +161,7 @@ public class RadioInfo extends Activity {
60000 60000
}; };
private void log(String s) { private static void log(String s) {
Log.d(TAG, s); Log.d(TAG, s);
} }
@@ -171,15 +172,17 @@ public class RadioInfo extends Activity {
private static final int EVENT_QUERY_SMSC_DONE = 1005; private static final int EVENT_QUERY_SMSC_DONE = 1005;
private static final int EVENT_UPDATE_SMSC_DONE = 1006; private static final int EVENT_UPDATE_SMSC_DONE = 1006;
private static final int MENU_ITEM_SELECT_BAND = 0; private static final int MENU_ITEM_SELECT_BAND = 0;
private static final int MENU_ITEM_VIEW_ADN = 1; private static final int MENU_ITEM_VIEW_ADN = 1;
private static final int MENU_ITEM_VIEW_FDN = 2; private static final int MENU_ITEM_VIEW_FDN = 2;
private static final int MENU_ITEM_VIEW_SDN = 3; private static final int MENU_ITEM_VIEW_SDN = 3;
private static final int MENU_ITEM_GET_IMS_STATUS = 4; private static final int MENU_ITEM_GET_IMS_STATUS = 4;
private static final int MENU_ITEM_TOGGLE_DATA = 5; private static final int MENU_ITEM_TOGGLE_DATA = 5;
private TextView mDeviceId; //DeviceId is the IMEI in GSM and the MEID in CDMA private TextView mDeviceId; //DeviceId is the IMEI in GSM and the MEID in CDMA
private TextView number; private TextView number;
private TextView mSubscriptionId;
private TextView mDds;
private TextView mSubscriberId; private TextView mSubscriberId;
private TextView callState; private TextView callState;
private TextView operatorName; private TextView operatorName;
@@ -219,12 +222,13 @@ public class RadioInfo extends Activity {
private Switch cbrsDataSwitch; private Switch cbrsDataSwitch;
private Switch dsdsSwitch; private Switch dsdsSwitch;
private Spinner preferredNetworkType; private Spinner preferredNetworkType;
private Spinner mSelectPhoneIndex;
private Spinner cellInfoRefreshRateSpinner; private Spinner cellInfoRefreshRateSpinner;
private ConnectivityManager mConnectivityManager; private ConnectivityManager mConnectivityManager;
private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager;
private ImsManager mImsManager = null; private ImsManager mImsManager = null;
private Phone phone = null; private Phone mPhone = null;
private String mPingHostnameResultV4; private String mPingHostnameResultV4;
private String mPingHostnameResultV6; private String mPingHostnameResultV6;
@@ -237,6 +241,7 @@ public class RadioInfo extends Activity {
private int mPreferredNetworkTypeResult; private int mPreferredNetworkTypeResult;
private int mCellInfoRefreshRateIndex; private int mCellInfoRefreshRateIndex;
private int mSelectedPhoneIndex;
private final NetworkRequest mDefaultNetworkRequest = new NetworkRequest.Builder() private final NetworkRequest mDefaultNetworkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
@@ -251,7 +256,9 @@ public class RadioInfo extends Activity {
} }
}; };
private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() { // not final because we need to recreate this object to register on a new subId (b/117555407)
private PhoneStateListener mPhoneStateListener = new RadioInfoPhoneStateListener();
private class RadioInfoPhoneStateListener extends PhoneStateListener {
@Override @Override
public void onDataConnectionStateChanged(int state) { public void onDataConnectionStateChanged(int state) {
updateDataState(); updateDataState();
@@ -319,7 +326,7 @@ public class RadioInfo extends Activity {
updatePhysicalChannelConfiguration(configs); updatePhysicalChannelConfiguration(configs);
} }
}; }
private void updatePhysicalChannelConfiguration(List<PhysicalChannelConfig> configs) { private void updatePhysicalChannelConfiguration(List<PhysicalChannelConfig> configs) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
@@ -346,6 +353,21 @@ public class RadioInfo extends Activity {
preferredNetworkType.setSelection(mPreferredNetworkTypeResult, true); preferredNetworkType.setSelection(mPreferredNetworkTypeResult, true);
} }
private void updatePhoneIndex(int phoneIndex, int subId) {
// unregister listeners on the old subId
unregisterPhoneStateListener();
mTelephonyManager.setCellInfoListRate(CELL_INFO_LIST_RATE_DISABLED);
// update the subId
mTelephonyManager = mTelephonyManager.createForSubscriptionId(subId);
// update the phoneId
mImsManager = ImsManager.getInstance(getApplicationContext(), phoneIndex);
mPhone = PhoneFactory.getPhone(phoneIndex);
updateAllFields();
}
private Handler mHandler = new Handler() { private Handler mHandler = new Handler() {
@Override @Override
public void handleMessage(Message msg) { public void handleMessage(Message msg) {
@@ -404,15 +426,17 @@ public class RadioInfo extends Activity {
mTelephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); mTelephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
mConnectivityManager = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE); mConnectivityManager = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);
phone = PhoneFactory.getDefaultPhone(); mPhone = PhoneFactory.getDefaultPhone();
//TODO: Need to update this if the default phoneId changes?
// Better to have an instance per phone?
mImsManager = ImsManager.getInstance(getApplicationContext(), mImsManager = ImsManager.getInstance(getApplicationContext(),
SubscriptionManager.getDefaultVoicePhoneId()); SubscriptionManager.getDefaultVoicePhoneId());
mPhoneIndexLabels = getPhoneIndexLabels(mTelephonyManager);
mDeviceId = (TextView) findViewById(R.id.imei); mDeviceId = (TextView) findViewById(R.id.imei);
number = (TextView) findViewById(R.id.number); number = (TextView) findViewById(R.id.number);
mSubscriptionId = (TextView) findViewById(R.id.subid);
mDds = (TextView) findViewById(R.id.dds);
mSubscriberId = (TextView) findViewById(R.id.imsi); mSubscriberId = (TextView) findViewById(R.id.imsi);
callState = (TextView) findViewById(R.id.call); callState = (TextView) findViewById(R.id.call);
operatorName = (TextView) findViewById(R.id.operator); operatorName = (TextView) findViewById(R.id.operator);
@@ -439,10 +463,17 @@ public class RadioInfo extends Activity {
mPhyChanConfig = (TextView) findViewById(R.id.phy_chan_config); mPhyChanConfig = (TextView) findViewById(R.id.phy_chan_config);
preferredNetworkType = (Spinner) findViewById(R.id.preferredNetworkType); preferredNetworkType = (Spinner) findViewById(R.id.preferredNetworkType);
ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, ArrayAdapter<String> preferredNetworkTypeAdapter = new ArrayAdapter<String> (this,
android.R.layout.simple_spinner_item, mPreferredNetworkLabels); android.R.layout.simple_spinner_item, mPreferredNetworkLabels);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); preferredNetworkTypeAdapter
preferredNetworkType.setAdapter(adapter); .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
preferredNetworkType.setAdapter(preferredNetworkTypeAdapter);
mSelectPhoneIndex = (Spinner) findViewById(R.id.phoneIndex);
ArrayAdapter<String> phoneIndexAdapter = new ArrayAdapter<String> (this,
android.R.layout.simple_spinner_item, mPhoneIndexLabels);
phoneIndexAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSelectPhoneIndex.setAdapter(phoneIndexAdapter);
cellInfoRefreshRateSpinner = (Spinner) findViewById(R.id.cell_info_rate_select); cellInfoRefreshRateSpinner = (Spinner) findViewById(R.id.cell_info_rate_select);
ArrayAdapter<String> cellInfoAdapter = new ArrayAdapter<String>(this, ArrayAdapter<String> cellInfoAdapter = new ArrayAdapter<String>(this,
@@ -455,7 +486,7 @@ public class RadioInfo extends Activity {
imsWfcProvisionedSwitch = (Switch) findViewById(R.id.wfc_provisioned_switch); imsWfcProvisionedSwitch = (Switch) findViewById(R.id.wfc_provisioned_switch);
eabProvisionedSwitch = (Switch) findViewById(R.id.eab_provisioned_switch); eabProvisionedSwitch = (Switch) findViewById(R.id.eab_provisioned_switch);
if (!ImsManager.isImsSupportedOnDevice(phone.getContext())) { if (!ImsManager.isImsSupportedOnDevice(mPhone.getContext())) {
imsVolteProvisionedSwitch.setVisibility(View.GONE); imsVolteProvisionedSwitch.setVisibility(View.GONE);
imsVtProvisionedSwitch.setVisibility(View.GONE); imsVtProvisionedSwitch.setVisibility(View.GONE);
imsWfcProvisionedSwitch.setVisibility(View.GONE); imsWfcProvisionedSwitch.setVisibility(View.GONE);
@@ -513,9 +544,10 @@ public class RadioInfo extends Activity {
mCellInfoRefreshRateIndex = 0; //disabled mCellInfoRefreshRateIndex = 0; //disabled
mPreferredNetworkTypeResult = mPreferredNetworkLabels.length - 1; //Unknown mPreferredNetworkTypeResult = mPreferredNetworkLabels.length - 1; //Unknown
mSelectedPhoneIndex = 0; //phone 0
//FIXME: Replace with TelephonyManager call //FIXME: Replace with TelephonyManager call
phone.getPreferredNetworkType( mPhone.getPreferredNetworkType(
mHandler.obtainMessage(EVENT_QUERY_PREFERRED_TYPE_DONE)); mHandler.obtainMessage(EVENT_QUERY_PREFERRED_TYPE_DONE));
restoreFromBundle(icicle); restoreFromBundle(icicle);
@@ -527,6 +559,10 @@ public class RadioInfo extends Activity {
log("Started onResume"); log("Started onResume");
updateAllFields();
}
private void updateAllFields() {
updateMessageWaiting(); updateMessageWaiting();
updateCallRedirect(); updateCallRedirect();
updateDataState(); updateDataState();
@@ -539,6 +575,7 @@ public class RadioInfo extends Activity {
updateLocation(mCellLocationResult); updateLocation(mCellLocationResult);
updateCellInfo(mCellInfoResult); updateCellInfo(mCellInfoResult);
updateSubscriptionIds();
mPingHostnameV4.setText(mPingHostnameResultV4); mPingHostnameV4.setText(mPingHostnameResultV4);
mPingHostnameV6.setText(mPingHostnameResultV6); mPingHostnameV6.setText(mPingHostnameResultV6);
@@ -552,6 +589,10 @@ public class RadioInfo extends Activity {
preferredNetworkType.setSelection(mPreferredNetworkTypeResult, true); preferredNetworkType.setSelection(mPreferredNetworkTypeResult, true);
preferredNetworkType.setOnItemSelectedListener(mPreferredNetworkHandler); preferredNetworkType.setOnItemSelectedListener(mPreferredNetworkHandler);
// set phone index
mSelectPhoneIndex.setSelection(mSelectedPhoneIndex, true);
mSelectPhoneIndex.setOnItemSelectedListener(mSelectPhoneIndexHandler);
radioPowerOnSwitch.setOnCheckedChangeListener(mRadioPowerOnChangeListener); radioPowerOnSwitch.setOnCheckedChangeListener(mRadioPowerOnChangeListener);
imsVolteProvisionedSwitch.setOnCheckedChangeListener(mImsVolteCheckedChangeListener); imsVolteProvisionedSwitch.setOnCheckedChangeListener(mImsVolteCheckedChangeListener);
imsVtProvisionedSwitch.setOnCheckedChangeListener(mImsVtCheckedChangeListener); imsVtProvisionedSwitch.setOnCheckedChangeListener(mImsVtCheckedChangeListener);
@@ -563,19 +604,8 @@ public class RadioInfo extends Activity {
cbrsDataSwitch.setOnCheckedChangeListener(mCbrsDataSwitchChangeListener); cbrsDataSwitch.setOnCheckedChangeListener(mCbrsDataSwitchChangeListener);
} }
mTelephonyManager.listen(mPhoneStateListener, unregisterPhoneStateListener();
PhoneStateListener.LISTEN_CALL_STATE registerPhoneStateListener();
//b/27803938 - RadioInfo currently cannot read PRECISE_CALL_STATE
// | PhoneStateListener.LISTEN_PRECISE_CALL_STATE
| PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
| PhoneStateListener.LISTEN_DATA_ACTIVITY
| PhoneStateListener.LISTEN_CELL_LOCATION
| PhoneStateListener.LISTEN_MESSAGE_WAITING_INDICATOR
| PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR
| PhoneStateListener.LISTEN_CELL_INFO
| PhoneStateListener.LISTEN_SERVICE_STATE
| PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
| PhoneStateListener.LISTEN_PHYSICAL_CHANNEL_CONFIGURATION);
mConnectivityManager.registerNetworkCallback( mConnectivityManager.registerNetworkCallback(
mDefaultNetworkRequest, mNetworkCallback, mHandler); mDefaultNetworkRequest, mNetworkCallback, mHandler);
@@ -611,6 +641,8 @@ public class RadioInfo extends Activity {
mPreferredNetworkTypeResult = b.getInt("mPreferredNetworkTypeResult", mPreferredNetworkTypeResult = b.getInt("mPreferredNetworkTypeResult",
mPreferredNetworkLabels.length - 1); mPreferredNetworkLabels.length - 1);
mSelectedPhoneIndex = b.getInt("mSelectedPhoneIndex", 0);
mCellInfoRefreshRateIndex = b.getInt("mCellInfoRefreshRateIndex", 0); mCellInfoRefreshRateIndex = b.getInt("mCellInfoRefreshRateIndex", 0);
} }
@@ -621,6 +653,7 @@ public class RadioInfo extends Activity {
outState.putString("mHttpClientTestResult", mHttpClientTestResult); outState.putString("mHttpClientTestResult", mHttpClientTestResult);
outState.putInt("mPreferredNetworkTypeResult", mPreferredNetworkTypeResult); outState.putInt("mPreferredNetworkTypeResult", mPreferredNetworkTypeResult);
outState.putInt("mSelectedPhoneIndex", mSelectedPhoneIndex);
outState.putInt("mCellInfoRefreshRateIndex", mCellInfoRefreshRateIndex); outState.putInt("mCellInfoRefreshRateIndex", mCellInfoRefreshRateIndex);
} }
@@ -636,7 +669,7 @@ public class RadioInfo extends Activity {
R.string.radioInfo_menu_viewFDN).setOnMenuItemClickListener(mViewFDNCallback); R.string.radioInfo_menu_viewFDN).setOnMenuItemClickListener(mViewFDNCallback);
menu.add(1, MENU_ITEM_VIEW_SDN, 0, menu.add(1, MENU_ITEM_VIEW_SDN, 0,
R.string.radioInfo_menu_viewSDN).setOnMenuItemClickListener(mViewSDNCallback); R.string.radioInfo_menu_viewSDN).setOnMenuItemClickListener(mViewSDNCallback);
if (ImsManager.isImsSupportedOnDevice(phone.getContext())) { if (ImsManager.isImsSupportedOnDevice(mPhone.getContext())) {
menu.add(1, MENU_ITEM_GET_IMS_STATUS, menu.add(1, MENU_ITEM_GET_IMS_STATUS,
0, R.string.radioInfo_menu_getIMS).setOnMenuItemClickListener(mGetImsStatus); 0, R.string.radioInfo_menu_getIMS).setOnMenuItemClickListener(mGetImsStatus);
} }
@@ -668,9 +701,61 @@ public class RadioInfo extends Activity {
return true; return true;
} }
// returns array of string labels for each phone index. The array index is equal to the phone
// index.
private static String[] getPhoneIndexLabels(TelephonyManager tm) {
int phones = tm.getPhoneCount();
String[] labels = new String[phones];
for (int i = 0; i < phones; i++) {
labels[i] = "Phone " + i;
}
return labels;
}
private void unregisterPhoneStateListener() {
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
// clear all fields so they are blank until the next listener event occurs
operatorName.setText("");
gprsState.setText("");
dataNetwork.setText("");
voiceNetwork.setText("");
sent.setText("");
received.setText("");
callState.setText("");
mLocation.setText("");
mMwiValue = false;
mMwi.setText("");
mCfiValue = false;
mCfi.setText("");
mCellInfo.setText("");
dBm.setText("");
gsmState.setText("");
roamingState.setText("");
mPhyChanConfig.setText("");
}
// register mPhoneStateListener for relevant fields using the current TelephonyManager
private void registerPhoneStateListener() {
mPhoneStateListener = new RadioInfoPhoneStateListener();
mTelephonyManager.listen(mPhoneStateListener,
PhoneStateListener.LISTEN_CALL_STATE
//b/27803938 - RadioInfo currently cannot read PRECISE_CALL_STATE
// | PhoneStateListener.LISTEN_PRECISE_CALL_STATE
| PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
| PhoneStateListener.LISTEN_DATA_ACTIVITY
| PhoneStateListener.LISTEN_CELL_LOCATION
| PhoneStateListener.LISTEN_MESSAGE_WAITING_INDICATOR
| PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR
| PhoneStateListener.LISTEN_CELL_INFO
| PhoneStateListener.LISTEN_SERVICE_STATE
| PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
| PhoneStateListener.LISTEN_PHYSICAL_CHANNEL_CONFIGURATION);
}
private void updateDnsCheckState() { private void updateDnsCheckState() {
//FIXME: Replace with a TelephonyManager call //FIXME: Replace with a TelephonyManager call
dnsCheckState.setText(phone.isDnsCheckDisabled() ? dnsCheckState.setText(mPhone.isDnsCheckDisabled() ?
"0.0.0.0 allowed" :"0.0.0.0 not allowed"); "0.0.0.0 allowed" :"0.0.0.0 not allowed");
} }
@@ -889,6 +974,11 @@ public class RadioInfo extends Activity {
mCellInfo.setText(buildCellInfoString(arrayCi)); mCellInfo.setText(buildCellInfoString(arrayCi));
} }
private final void updateSubscriptionIds() {
mSubscriptionId.setText(Integer.toString(mPhone.getSubId()));
mDds.setText(Integer.toString(SubscriptionManager.getDefaultDataSubscriptionId()));
}
private final void private final void
updateMessageWaiting() { updateMessageWaiting() {
mMwi.setText(String.valueOf(mMwiValue)); mMwi.setText(String.valueOf(mMwiValue));
@@ -975,12 +1065,12 @@ public class RadioInfo extends Activity {
} }
private final void updateNetworkType() { private final void updateNetworkType() {
if(phone != null) { if(mPhone != null) {
ServiceState ss = phone.getServiceState(); ServiceState ss = mPhone.getServiceState();
dataNetwork.setText(ServiceState.rilRadioTechnologyToString( dataNetwork.setText(ServiceState.rilRadioTechnologyToString(
phone.getServiceState().getRilDataRadioTechnology())); mPhone.getServiceState().getRilDataRadioTechnology()));
voiceNetwork.setText(ServiceState.rilRadioTechnologyToString( voiceNetwork.setText(ServiceState.rilRadioTechnologyToString(
phone.getServiceState().getRilVoiceRadioTechnology())); mPhone.getServiceState().getRilVoiceRadioTechnology()));
} }
} }
@@ -989,16 +1079,16 @@ public class RadioInfo extends Activity {
String s; String s;
Resources r = getResources(); Resources r = getResources();
s = phone.getDeviceId(); s = mPhone.getDeviceId();
if (s == null) s = r.getString(R.string.radioInfo_unknown); if (s == null) s = r.getString(R.string.radioInfo_unknown);
mDeviceId.setText(s); mDeviceId.setText(s);
s = phone.getSubscriberId(); s = mPhone.getSubscriberId();
if (s == null) s = r.getString(R.string.radioInfo_unknown); if (s == null) s = r.getString(R.string.radioInfo_unknown);
mSubscriberId.setText(s); mSubscriberId.setText(s);
//FIXME: Replace with a TelephonyManager call //FIXME: Replace with a TelephonyManager call
s = phone.getLine1Number(); s = mPhone.getLine1Number();
if (s == null) s = r.getString(R.string.radioInfo_unknown); if (s == null) s = r.getString(R.string.radioInfo_unknown);
number.setText(s); number.setText(s);
} }
@@ -1075,7 +1165,7 @@ public class RadioInfo extends Activity {
private void refreshSmsc() { private void refreshSmsc() {
//FIXME: Replace with a TelephonyManager call //FIXME: Replace with a TelephonyManager call
phone.getSmscAddress(mHandler.obtainMessage(EVENT_QUERY_SMSC_DONE)); mPhone.getSmscAddress(mHandler.obtainMessage(EVENT_QUERY_SMSC_DONE));
} }
private final void updateAllCellInfo() { private final void updateAllCellInfo() {
@@ -1147,8 +1237,7 @@ public class RadioInfo extends Activity {
// the content provider, which causes it to be loaded in a process // the content provider, which causes it to be loaded in a process
// other than the Dialer process, which causes a lot of stuff to // other than the Dialer process, which causes a lot of stuff to
// break. // break.
intent.setClassName("com.android.phone", intent.setClassName("com.android.phone", "com.android.phone.SimContacts");
"com.android.phone.SimContacts");
startActivity(intent); startActivity(intent);
return true; return true;
} }
@@ -1162,8 +1251,7 @@ public class RadioInfo extends Activity {
// the content provider, which causes it to be loaded in a process // the content provider, which causes it to be loaded in a process
// other than the Dialer process, which causes a lot of stuff to // other than the Dialer process, which causes a lot of stuff to
// break. // break.
intent.setClassName("com.android.phone", intent.setClassName("com.android.phone", "com.android.phone.settings.fdn.FdnList");
"com.android.phone.settings.fdn.FdnList");
startActivity(intent); startActivity(intent);
return true; return true;
} }
@@ -1178,8 +1266,7 @@ public class RadioInfo extends Activity {
// the content provider, which causes it to be loaded in a process // the content provider, which causes it to be loaded in a process
// other than the Dialer process, which causes a lot of stuff to // other than the Dialer process, which causes a lot of stuff to
// break. // break.
intent.setClassName("com.android.phone", intent.setClassName("com.android.phone", "com.android.phone.ADNList");
"com.android.phone.ADNList");
startActivity(intent); startActivity(intent);
return true; return true;
} }
@@ -1187,11 +1274,11 @@ public class RadioInfo extends Activity {
private MenuItem.OnMenuItemClickListener mGetImsStatus = new MenuItem.OnMenuItemClickListener() { private MenuItem.OnMenuItemClickListener mGetImsStatus = new MenuItem.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) { public boolean onMenuItemClick(MenuItem item) {
boolean isImsRegistered = phone.isImsRegistered(); boolean isImsRegistered = mPhone.isImsRegistered();
boolean availableVolte = phone.isVolteEnabled(); boolean availableVolte = mPhone.isVolteEnabled();
boolean availableWfc = phone.isWifiCallingEnabled(); boolean availableWfc = mPhone.isWifiCallingEnabled();
boolean availableVt = phone.isVideoEnabled(); boolean availableVt = mPhone.isVideoEnabled();
boolean availableUt = phone.isUtEnabled(); boolean availableUt = mPhone.isUtEnabled();
final String imsRegString = isImsRegistered ? final String imsRegString = isImsRegistered ?
getString(R.string.radio_info_ims_reg_status_registered) : getString(R.string.radio_info_ims_reg_status_registered) :
@@ -1248,7 +1335,7 @@ public class RadioInfo extends Activity {
private boolean isRadioOn() { private boolean isRadioOn() {
//FIXME: Replace with a TelephonyManager call //FIXME: Replace with a TelephonyManager call
return phone.getServiceState().getState() != ServiceState.STATE_POWER_OFF; return mPhone.getServiceState().getState() != ServiceState.STATE_POWER_OFF;
} }
private void updateRadioPowerState() { private void updateRadioPowerState() {
@@ -1280,7 +1367,7 @@ public class RadioInfo extends Activity {
} }
void setImsConfigProvisionedState(int configItem, boolean state) { void setImsConfigProvisionedState(int configItem, boolean state) {
if (phone != null && mImsManager != null) { if (mPhone != null && mImsManager != null) {
QueuedWork.queue(new Runnable() { QueuedWork.queue(new Runnable() {
public void run() { public void run() {
try { try {
@@ -1299,14 +1386,14 @@ public class RadioInfo extends Activity {
@Override @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
log("toggle radio power: currently " + (isRadioOn()?"on":"off")); log("toggle radio power: currently " + (isRadioOn()?"on":"off"));
phone.setRadioPower(isChecked); mPhone.setRadioPower(isChecked);
} }
}; };
private boolean isImsVolteProvisioned() { private boolean isImsVolteProvisioned() {
if (phone != null && mImsManager != null) { if (mPhone != null && mImsManager != null) {
return mImsManager.isVolteEnabledByPlatform(phone.getContext()) return mImsManager.isVolteEnabledByPlatform(mPhone.getContext())
&& mImsManager.isVolteProvisionedOnDevice(phone.getContext()); && mImsManager.isVolteProvisionedOnDevice(mPhone.getContext());
} }
return false; return false;
} }
@@ -1319,9 +1406,9 @@ public class RadioInfo extends Activity {
}; };
private boolean isImsVtProvisioned() { private boolean isImsVtProvisioned() {
if (phone != null && mImsManager != null) { if (mPhone != null && mImsManager != null) {
return mImsManager.isVtEnabledByPlatform(phone.getContext()) return mImsManager.isVtEnabledByPlatform(mPhone.getContext())
&& mImsManager.isVtProvisionedOnDevice(phone.getContext()); && mImsManager.isVtProvisionedOnDevice(mPhone.getContext());
} }
return false; return false;
} }
@@ -1334,9 +1421,9 @@ public class RadioInfo extends Activity {
}; };
private boolean isImsWfcProvisioned() { private boolean isImsWfcProvisioned() {
if (phone != null && mImsManager != null) { if (mPhone != null && mImsManager != null) {
return mImsManager.isWfcEnabledByPlatform(phone.getContext()) return mImsManager.isWfcEnabledByPlatform(mPhone.getContext())
&& mImsManager.isWfcProvisionedOnDevice(phone.getContext()); && mImsManager.isWfcProvisionedOnDevice(mPhone.getContext());
} }
return false; return false;
} }
@@ -1391,7 +1478,7 @@ public class RadioInfo extends Activity {
} }
private void updateImsProvisionedState() { private void updateImsProvisionedState() {
if (!ImsManager.isImsSupportedOnDevice(phone.getContext())) { if (!ImsManager.isImsSupportedOnDevice(mPhone.getContext())) {
return; return;
} }
log("updateImsProvisionedState isImsVolteProvisioned()=" + isImsVolteProvisioned()); log("updateImsProvisionedState isImsVolteProvisioned()=" + isImsVolteProvisioned());
@@ -1401,31 +1488,31 @@ public class RadioInfo extends Activity {
imsVolteProvisionedSwitch.setChecked(isImsVolteProvisioned()); imsVolteProvisionedSwitch.setChecked(isImsVolteProvisioned());
imsVolteProvisionedSwitch.setOnCheckedChangeListener(mImsVolteCheckedChangeListener); imsVolteProvisionedSwitch.setOnCheckedChangeListener(mImsVolteCheckedChangeListener);
imsVolteProvisionedSwitch.setEnabled(!Build.IS_USER imsVolteProvisionedSwitch.setEnabled(!Build.IS_USER
&& mImsManager.isVolteEnabledByPlatform(phone.getContext())); && mImsManager.isVolteEnabledByPlatform(mPhone.getContext()));
imsVtProvisionedSwitch.setOnCheckedChangeListener(null); imsVtProvisionedSwitch.setOnCheckedChangeListener(null);
imsVtProvisionedSwitch.setChecked(isImsVtProvisioned()); imsVtProvisionedSwitch.setChecked(isImsVtProvisioned());
imsVtProvisionedSwitch.setOnCheckedChangeListener(mImsVtCheckedChangeListener); imsVtProvisionedSwitch.setOnCheckedChangeListener(mImsVtCheckedChangeListener);
imsVtProvisionedSwitch.setEnabled(!Build.IS_USER imsVtProvisionedSwitch.setEnabled(!Build.IS_USER
&& mImsManager.isVtEnabledByPlatform(phone.getContext())); && mImsManager.isVtEnabledByPlatform(mPhone.getContext()));
imsWfcProvisionedSwitch.setOnCheckedChangeListener(null); imsWfcProvisionedSwitch.setOnCheckedChangeListener(null);
imsWfcProvisionedSwitch.setChecked(isImsWfcProvisioned()); imsWfcProvisionedSwitch.setChecked(isImsWfcProvisioned());
imsWfcProvisionedSwitch.setOnCheckedChangeListener(mImsWfcCheckedChangeListener); imsWfcProvisionedSwitch.setOnCheckedChangeListener(mImsWfcCheckedChangeListener);
imsWfcProvisionedSwitch.setEnabled(!Build.IS_USER imsWfcProvisionedSwitch.setEnabled(!Build.IS_USER
&& mImsManager.isWfcEnabledByPlatform(phone.getContext())); && mImsManager.isWfcEnabledByPlatform(mPhone.getContext()));
eabProvisionedSwitch.setOnCheckedChangeListener(null); eabProvisionedSwitch.setOnCheckedChangeListener(null);
eabProvisionedSwitch.setChecked(isEabProvisioned()); eabProvisionedSwitch.setChecked(isEabProvisioned());
eabProvisionedSwitch.setOnCheckedChangeListener(mEabCheckedChangeListener); eabProvisionedSwitch.setOnCheckedChangeListener(mEabCheckedChangeListener);
eabProvisionedSwitch.setEnabled(!Build.IS_USER eabProvisionedSwitch.setEnabled(!Build.IS_USER
&& isEabEnabledByPlatform(phone.getContext())); && isEabEnabledByPlatform(mPhone.getContext()));
} }
OnClickListener mDnsCheckButtonHandler = new OnClickListener() { OnClickListener mDnsCheckButtonHandler = new OnClickListener() {
public void onClick(View v) { public void onClick(View v) {
//FIXME: Replace with a TelephonyManager call //FIXME: Replace with a TelephonyManager call
phone.disableDnsCheck(!phone.isDnsCheckDisabled()); mPhone.disableDnsCheck(!mPhone.isDnsCheckDisabled());
updateDnsCheckState(); updateDnsCheckState();
} }
}; };
@@ -1452,7 +1539,7 @@ public class RadioInfo extends Activity {
OnClickListener mUpdateSmscButtonHandler = new OnClickListener() { OnClickListener mUpdateSmscButtonHandler = new OnClickListener() {
public void onClick(View v) { public void onClick(View v) {
updateSmscButton.setEnabled(false); updateSmscButton.setEnabled(false);
phone.setSmscAddress(smsc.getText().toString(), mPhone.setSmscAddress(smsc.getText().toString(),
mHandler.obtainMessage(EVENT_UPDATE_SMSC_DONE)); mHandler.obtainMessage(EVENT_UPDATE_SMSC_DONE));
} }
}; };
@@ -1497,14 +1584,40 @@ public class RadioInfo extends Activity {
// want this setting to be set, so that if the radio hiccups and this setting // want this setting to be set, so that if the radio hiccups and this setting
// is for some reason unsuccessful, future calls to the radio will reflect // is for some reason unsuccessful, future calls to the radio will reflect
// the users's preference which is set here. // the users's preference which is set here.
final int subId = phone.getSubId(); final int subId = mPhone.getSubId();
if (SubscriptionManager.isUsableSubIdValue(subId)) { if (SubscriptionManager.isUsableSubIdValue(subId)) {
Settings.Global.putInt(phone.getContext().getContentResolver(), Settings.Global.putInt(mPhone.getContext().getContentResolver(),
PREFERRED_NETWORK_MODE + subId, mPreferredNetworkTypeResult); PREFERRED_NETWORK_MODE + subId, mPreferredNetworkTypeResult);
} }
log("Calling setPreferredNetworkType(" + mPreferredNetworkTypeResult + ")"); log("Calling setPreferredNetworkType(" + mPreferredNetworkTypeResult + ")");
Message msg = mHandler.obtainMessage(EVENT_SET_PREFERRED_TYPE_DONE); Message msg = mHandler.obtainMessage(EVENT_SET_PREFERRED_TYPE_DONE);
phone.setPreferredNetworkType(mPreferredNetworkTypeResult, msg); mPhone.setPreferredNetworkType(mPreferredNetworkTypeResult, msg);
}
}
public void onNothingSelected(AdapterView parent) {
}
};
AdapterView.OnItemSelectedListener mSelectPhoneIndexHandler =
new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView parent, View v, int pos, long id) {
if (pos >= 0 && pos <= mPhoneIndexLabels.length - 1) {
// the array position is equal to the phone index
int phoneIndex = pos;
Phone[] phones = PhoneFactory.getPhones();
if (phones == null || phones.length <= phoneIndex) {
return;
}
// getSubId says it takes a slotIndex, but it actually takes a phone index
int[] subIds = SubscriptionManager.getSubId(phoneIndex);
if (subIds == null || subIds.length < 1) {
return;
}
mSelectedPhoneIndex = phoneIndex;
updatePhoneIndex(phoneIndex, subIds[0]);
} }
} }