"Add" enable video call setting to call settings.
+ Add in the sense that it is implemented, although it is always
removed for now. Further work needs to be done to condition the
display of this setting on VoLTE support.
+ Make PhoneInterfaceManager's storage of shared preferences more
generic. Add a key to store whether video calling is enabled.
+ Add "Turn on video calling" option to call settings, and update
the share preference when changed.
Bug: 16014284
Change-Id: Id6ac1f55b3933c33f8653622ae0fea961d1644eb
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index 6fae770..e59f4fb 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -184,6 +184,8 @@
private static final String PHONE_ACCOUNT_SETTINGS_KEY =
"phone_account_settings_preference_screen";
+ private static final String ENABLE_VIDEO_CALLING_KEY = "button_enable_video_calling";
+
private Intent mContactListIntent;
/** Event for Async voicemail change call */
@@ -257,6 +259,7 @@
private Preference mVoicemailNotificationRingtone;
private CheckBoxPreference mVoicemailNotificationVibrate;
private AccountSelectionPreference mDefaultOutgoingAccount;
+ private CheckBoxPreference mEnableVideoCalling;
private class VoiceMailProvider {
public VoiceMailProvider(String name, Intent intent) {
@@ -534,7 +537,7 @@
@Override
public boolean onPreferenceChange(Preference preference, Object objValue) {
if (DBG) {
- log("onPreferenceChange(). preferenece: \"" + preference + "\""
+ log("onPreferenceChange(). preference: \"" + preference + "\""
+ ", value: \"" + objValue + "\"");
}
@@ -577,6 +580,8 @@
mChangingVMorFwdDueToProviderChange = true;
saveVoiceMailAndForwardingNumber(newProviderKey, newProviderSettings);
}
+ } else if (preference == mEnableVideoCalling) {
+ PhoneGlobals.getInstance().phoneMgr.enableVideoCalling((boolean) objValue);
}
// always let the preference setting proceed.
return true;
@@ -1557,6 +1562,8 @@
mButtonHAC = (CheckBoxPreference) findPreference(BUTTON_HAC_KEY);
mButtonTTY = (ListPreference) findPreference(BUTTON_TTY_KEY);
mVoicemailProviders = (ListPreference) findPreference(BUTTON_VOICEMAIL_PROVIDER_KEY);
+ CheckBoxPreference mEnableVideoCalling =
+ (CheckBoxPreference) findPreference(ENABLE_VIDEO_CALLING_KEY);
if (mVoicemailProviders != null) {
mVoicemailProviders.setOnPreferenceChangeListener(this);
@@ -1670,6 +1677,11 @@
BUTTON_VOICEMAIL_NOTIFICATION_VIBRATE_KEY, false));
}
+ mEnableVideoCalling.setChecked(PhoneGlobals.getInstance().phoneMgr.isVideoCallingEnabled());
+ mEnableVideoCalling.setOnPreferenceChangeListener(this);
+ // TODO: Perform checks to determine whether we should remove the preference.
+ prefSet.removePreference(mEnableVideoCalling);
+
// Look up the voicemail ringtone name asynchronously and update its preference.
new Thread(mVoicemailRingtoneLookupRunnable).start();
}
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index f9a0989..ffbdebf 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -136,11 +136,12 @@
AppOpsManager mAppOps;
MainThreadHandler mMainThreadHandler;
- SharedPreferences carrierPrivilegeConfigs;
+ SharedPreferences mTelephonySharedPreferences;
private static final String PREF_CARRIERS_ALPHATAG_PREFIX = "carrier_alphtag_";
private static final String PREF_CARRIERS_NUMBER_PREFIX = "carrier_number_";
private static final String PREF_CARRIERS_SIMPLIFIED_NETWORK_SETTINGS_PREFIX =
"carrier_simplified_network_settings_";
+ private static final String PREF_ENABLE_VIDEO_CALLING = "enable_video_calling";
/**
* A request object to use for transmitting data to an ICC.
@@ -703,7 +704,7 @@
mCM = PhoneGlobals.getInstance().mCM;
mAppOps = (AppOpsManager)app.getSystemService(Context.APP_OPS_SERVICE);
mMainThreadHandler = new MainThreadHandler();
- carrierPrivilegeConfigs =
+ mTelephonySharedPreferences =
PreferenceManager.getDefaultSharedPreferences(mPhone.getContext());
publish();
}
@@ -1947,7 +1948,7 @@
String iccId = getIccId(subId);
if (iccId != null) {
String snsPrefKey = PREF_CARRIERS_SIMPLIFIED_NETWORK_SETTINGS_PREFIX + iccId;
- SharedPreferences.Editor editor = carrierPrivilegeConfigs.edit();
+ SharedPreferences.Editor editor = mTelephonySharedPreferences.edit();
if (enable) {
editor.putBoolean(snsPrefKey, true);
} else {
@@ -1963,7 +1964,7 @@
String iccId = getIccId(subId);
if (iccId != null) {
String snsPrefKey = PREF_CARRIERS_SIMPLIFIED_NETWORK_SETTINGS_PREFIX + iccId;
- return carrierPrivilegeConfigs.getBoolean(snsPrefKey, false);
+ return mTelephonySharedPreferences.getBoolean(snsPrefKey, false);
}
return false;
}
@@ -1975,7 +1976,7 @@
String iccId = getIccId(subId);
if (iccId != null) {
String alphaTagPrefKey = PREF_CARRIERS_ALPHATAG_PREFIX + iccId;
- SharedPreferences.Editor editor = carrierPrivilegeConfigs.edit();
+ SharedPreferences.Editor editor = mTelephonySharedPreferences.edit();
if (alphaTag == null) {
editor.remove(alphaTagPrefKey);
} else {
@@ -1999,7 +2000,7 @@
String iccId = getIccId(subId);
if (iccId != null) {
String numberPrefKey = PREF_CARRIERS_NUMBER_PREFIX + iccId;
- return carrierPrivilegeConfigs.getString(numberPrefKey, null);
+ return mTelephonySharedPreferences.getString(numberPrefKey, null);
}
return null;
}
@@ -2011,7 +2012,7 @@
String iccId = getIccId(subId);
if (iccId != null) {
String alphaTagPrefKey = PREF_CARRIERS_ALPHATAG_PREFIX + iccId;
- return carrierPrivilegeConfigs.getString(alphaTagPrefKey, null);
+ return mTelephonySharedPreferences.getString(alphaTagPrefKey, null);
}
return null;
}
@@ -2067,4 +2068,18 @@
public int getRadioAccessFamily(int phoneId) {
return ProxyController.getInstance().getRadioAccessFamily(phoneId);
}
+
+ @Override
+ public void enableVideoCalling(boolean enable) {
+ enforceModifyPermission();
+ SharedPreferences.Editor editor = mTelephonySharedPreferences.edit();
+ editor.putBoolean(PREF_ENABLE_VIDEO_CALLING, enable);
+ editor.commit();
+ }
+
+ @Override
+ public boolean isVideoCallingEnabled() {
+ enforceReadPermission();
+ return mTelephonySharedPreferences.getBoolean(PREF_ENABLE_VIDEO_CALLING, true);
+ }
}