Merge changes from topic 'ims-radio-info-mr2' into nyc-mr2-dev

* changes:
  Add Ims Registration Info to RadioInfo
  Enable and Disable IMS Provisioning Based on Platform Capability
This commit is contained in:
Youhan Wang
2016-12-09 22:17:08 +00:00
committed by Android (Google) Code Review
2 changed files with 70 additions and 20 deletions

View File

@@ -81,7 +81,23 @@
<!-- Phone Info screen. Menu item label. Used for diagnostic info screens, precise translation isn't needed --> <!-- Phone Info screen. Menu item label. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radioInfo_menu_viewSDN">View Service Dialing Numbers</string> <string name="radioInfo_menu_viewSDN">View Service Dialing Numbers</string>
<!-- Phone Info screen. Menu item label. Used for diagnostic info screens, precise translation isn't needed --> <!-- Phone Info screen. Menu item label. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radioInfo_menu_getPDP">Get PDP List</string> <string name="radioInfo_menu_getIMS">IMS Service Status</string>
<!-- Phone Info screen. IMS Registration Title. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radio_info_ims_reg_status_title">IMS Status</string>
<!-- Phone Info screen. IMS Status - Registered. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radio_info_ims_reg_status_registered">Registered</string>
<!-- Phone Info screen. Ims Status - Unregistered. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radio_info_ims_reg_status_not_registered">Not Registered</string>
<!-- Phone Info screen. Ims Feature Status label. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radio_info_ims_feature_status_available">Available</string>
<!-- Phone Info screen. Ims Feature status label. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radio_info_ims_feature_status_unavailable">Unavailable</string>
<!-- Phone Info screen. IMS Registration. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radio_info_ims_reg_status">IMS Registration: <xliff:g id="status" example="registered">%1$s</xliff:g>\u000AVoice over LTE: <xliff:g id="availability" example="available">%2$s</xliff:g>\u000AVoice over WiFi: <xliff:g id="availability" example="available">%3$s</xliff:g>\u000AVideo Calling: <xliff:g id="availability" example="available">%4$s</xliff:g>\u000AUT Interface: <xliff:g id="availability" example="available">%5$s</xliff:g></string>
<!-- Phone Info screen. Status label. Used for diagnostic info screens, precise translation isn't needed --> <!-- Phone Info screen. Status label. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radioInfo_service_in">In Service</string> <string name="radioInfo_service_in">In Service</string>

View File

@@ -17,6 +17,8 @@
package com.android.settings; package com.android.settings;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.QueuedWork; import android.app.QueuedWork;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
@@ -160,7 +162,7 @@ public class RadioInfo extends Activity {
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_PDP_LIST = 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
@@ -497,7 +499,7 @@ public class RadioInfo extends Activity {
} }
private void restoreFromBundle(Bundle b) { private void restoreFromBundle(Bundle b) {
if( b == null) { if (b == null) {
return; return;
} }
@@ -537,8 +539,8 @@ 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);
menu.add(1, MENU_ITEM_GET_PDP_LIST, menu.add(1, MENU_ITEM_GET_IMS_STATUS,
0, R.string.radioInfo_menu_getPDP).setOnMenuItemClickListener(mGetPdpList); 0, R.string.radioInfo_menu_getIMS).setOnMenuItemClickListener(mGetImsStatus);
menu.add(1, MENU_ITEM_TOGGLE_DATA, menu.add(1, MENU_ITEM_TOGGLE_DATA,
0, R.string.radio_info_data_connection_disable).setOnMenuItemClickListener(mToggleData); 0, R.string.radio_info_data_connection_disable).setOnMenuItemClickListener(mToggleData);
return true; return true;
@@ -632,7 +634,7 @@ public class RadioInfo extends Activity {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
if (cids != null) { if (cids != null) {
if ( cids.isEmpty() ) { if (cids.isEmpty()) {
sb.append("no neighboring cells"); sb.append("no neighboring cells");
} else { } else {
for (NeighboringCellInfo cell : cids) { for (NeighboringCellInfo cell : cids) {
@@ -860,7 +862,7 @@ public class RadioInfo extends Activity {
} }
private final void updateNetworkType() { private final void updateNetworkType() {
if( phone != null ) { if (phone != null) {
ServiceState ss = phone.getServiceState(); ServiceState ss = phone.getServiceState();
dataNetwork.setText(ServiceState.rilRadioTechnologyToString( dataNetwork.setText(ServiceState.rilRadioTechnologyToString(
phone.getServiceState().getRilDataRadioTechnology())); phone.getServiceState().getRilDataRadioTechnology()));
@@ -1069,10 +1071,36 @@ public class RadioInfo extends Activity {
} }
}; };
private MenuItem.OnMenuItemClickListener mGetPdpList = new MenuItem.OnMenuItemClickListener() { private MenuItem.OnMenuItemClickListener mGetImsStatus = new MenuItem.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) { public boolean onMenuItemClick(MenuItem item) {
//FIXME: Replace with a TelephonyManager call boolean isImsRegistered = phone.isImsRegistered();
phone.getDataCallList(null); boolean availableVolte = phone.isVolteEnabled();
boolean availableWfc = phone.isWifiCallingEnabled();
boolean availableVt = phone.isVideoEnabled();
boolean availableUt = phone.isUtEnabled();
final String imsRegString = isImsRegistered ?
getString(R.string.radio_info_ims_reg_status_registered) :
getString(R.string.radio_info_ims_reg_status_not_registered);
final String available = getString(R.string.radio_info_ims_feature_status_available);
final String unavailable = getString(
R.string.radio_info_ims_feature_status_unavailable);
String imsStatus = getString(R.string.radio_info_ims_reg_status,
imsRegString,
availableVolte ? available : unavailable,
availableWfc ? available : unavailable,
availableVt ? available : unavailable,
availableUt ? available : unavailable);
AlertDialog imsDialog = new AlertDialog.Builder(RadioInfo.this)
.setMessage(imsStatus)
.setTitle(getString(R.string.radio_info_ims_reg_status_title))
.create();
imsDialog.show();
return true; return true;
} }
}; };
@@ -1119,22 +1147,22 @@ public class RadioInfo extends Activity {
radioPowerOnSwitch.setOnCheckedChangeListener(mRadioPowerOnChangeListener); radioPowerOnSwitch.setOnCheckedChangeListener(mRadioPowerOnChangeListener);
} }
void setImsVolteProvisionedState( boolean state ) { void setImsVolteProvisionedState(boolean state) {
Log.d(TAG, "setImsVolteProvisioned state: " + ((state)? "on":"off")); Log.d(TAG, "setImsVolteProvisioned state: " + ((state)? "on":"off"));
setImsConfigProvisionedState( IMS_VOLTE_PROVISIONED_CONFIG_ID, state ); setImsConfigProvisionedState(IMS_VOLTE_PROVISIONED_CONFIG_ID, state);
} }
void setImsVtProvisionedState( boolean state ) { void setImsVtProvisionedState(boolean state) {
Log.d(TAG, "setImsVtProvisioned() state: " + ((state)? "on":"off")); Log.d(TAG, "setImsVtProvisioned() state: " + ((state)? "on":"off"));
setImsConfigProvisionedState( IMS_VT_PROVISIONED_CONFIG_ID, state ); setImsConfigProvisionedState(IMS_VT_PROVISIONED_CONFIG_ID, state);
} }
void setImsWfcProvisionedState( boolean state ) { void setImsWfcProvisionedState(boolean state) {
Log.d(TAG, "setImsWfcProvisioned() state: " + ((state)? "on":"off")); Log.d(TAG, "setImsWfcProvisioned() state: " + ((state)? "on":"off"));
setImsConfigProvisionedState( IMS_WFC_PROVISIONED_CONFIG_ID, state ); setImsConfigProvisionedState(IMS_WFC_PROVISIONED_CONFIG_ID, state);
} }
void setImsConfigProvisionedState( int configItem, boolean state ) { void setImsConfigProvisionedState(int configItem, boolean state) {
if (phone != null && mImsManager != null) { if (phone != null && mImsManager != null) {
QueuedWork.singleThreadExecutor().submit(new Runnable() { QueuedWork.singleThreadExecutor().submit(new Runnable() {
public void run() { public void run() {
@@ -1170,7 +1198,7 @@ public class RadioInfo extends Activity {
@Override @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
setImsVolteProvisionedState(isChecked); setImsVolteProvisionedState(isChecked);
} }
}; };
private boolean isImsVtProvisioned() { private boolean isImsVtProvisioned() {
@@ -1185,7 +1213,7 @@ public class RadioInfo extends Activity {
@Override @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
setImsVtProvisionedState(isChecked); setImsVtProvisionedState(isChecked);
} }
}; };
private boolean isImsWfcProvisioned() { private boolean isImsWfcProvisioned() {
@@ -1200,7 +1228,7 @@ public class RadioInfo extends Activity {
@Override @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
setImsWfcProvisionedState(isChecked); setImsWfcProvisionedState(isChecked);
} }
}; };
private void updateImsProvisionedState() { private void updateImsProvisionedState() {
@@ -1210,14 +1238,20 @@ public class RadioInfo extends Activity {
imsVolteProvisionedSwitch.setOnCheckedChangeListener(null); imsVolteProvisionedSwitch.setOnCheckedChangeListener(null);
imsVolteProvisionedSwitch.setChecked(isImsVolteProvisioned()); imsVolteProvisionedSwitch.setChecked(isImsVolteProvisioned());
imsVolteProvisionedSwitch.setOnCheckedChangeListener(mImsVolteCheckedChangeListener); imsVolteProvisionedSwitch.setOnCheckedChangeListener(mImsVolteCheckedChangeListener);
imsVolteProvisionedSwitch.setEnabled(
mImsManager.isVolteEnabledByPlatform(phone.getContext()));
imsVtProvisionedSwitch.setOnCheckedChangeListener(null); imsVtProvisionedSwitch.setOnCheckedChangeListener(null);
imsVtProvisionedSwitch.setChecked(isImsVtProvisioned()); imsVtProvisionedSwitch.setChecked(isImsVtProvisioned());
imsVtProvisionedSwitch.setOnCheckedChangeListener(mImsVtCheckedChangeListener); imsVtProvisionedSwitch.setOnCheckedChangeListener(mImsVtCheckedChangeListener);
imsVtProvisionedSwitch.setEnabled(
mImsManager.isVtEnabledByPlatform(phone.getContext()));
imsWfcProvisionedSwitch.setOnCheckedChangeListener(null); imsWfcProvisionedSwitch.setOnCheckedChangeListener(null);
imsWfcProvisionedSwitch.setChecked(isImsWfcProvisioned()); imsWfcProvisionedSwitch.setChecked(isImsWfcProvisioned());
imsWfcProvisionedSwitch.setOnCheckedChangeListener(mImsWfcCheckedChangeListener); imsWfcProvisionedSwitch.setOnCheckedChangeListener(mImsWfcCheckedChangeListener);
imsWfcProvisionedSwitch.setEnabled(
mImsManager.isWfcEnabledByPlatform(phone.getContext()));
} }
OnClickListener mDnsCheckButtonHandler = new OnClickListener() { OnClickListener mDnsCheckButtonHandler = new OnClickListener() {