diff options
author | Oleksandr Byelkin <sanja.byelkin@gmail.com> | 2012-12-27 19:28:31 +0100 |
---|---|---|
committer | Adnan Begovic <adnan@cyngn.com> | 2015-10-29 17:36:25 -0700 |
commit | 3d2a1042dd5187bbe1a43798670ab8e9bda42cea (patch) | |
tree | aa71dd00dcac528f8a18cb00d13304d93b8c7e8e /src/com/android/settings/ButtonSettings.java | |
parent | af657790a5cec1ff0e7d3004f252db65172e7628 (diff) | |
download | packages_apps_Settings-3d2a1042dd5187bbe1a43798670ab8e9bda42cea.zip packages_apps_Settings-3d2a1042dd5187bbe1a43798670ab8e9bda42cea.tar.gz packages_apps_Settings-3d2a1042dd5187bbe1a43798670ab8e9bda42cea.tar.bz2 |
Answer call with hardware HOME button (1/2)
Squashed commit of the following:
Author: Oleksandr Byelkin <sanja.byelkin@gmail.com>
Adds ability to answer call with hardware HOME button
preparation to winter time
Change-Id: I0d22a6fbb92a61f08b50cae5c14d0030b81ee6ec
Author: Michael Bestas <mikeioannina@gmail.com>
Settings: Move home answer & power end call options
Move 'Home answers call' & 'Power ends call' options to button settings
Change-Id: I2f365a3d278b0845b7c5ffcfe70c54160a00c24e
Diffstat (limited to 'src/com/android/settings/ButtonSettings.java')
-rw-r--r-- | src/com/android/settings/ButtonSettings.java | 74 |
1 files changed, 72 insertions, 2 deletions
diff --git a/src/com/android/settings/ButtonSettings.java b/src/com/android/settings/ButtonSettings.java index 227f5cb..df7623c 100644 --- a/src/com/android/settings/ButtonSettings.java +++ b/src/com/android/settings/ButtonSettings.java @@ -36,7 +36,6 @@ import android.util.Log; import android.view.IWindowManager; import android.view.KeyCharacterMap; import android.view.KeyEvent; -import android.view.IWindowManager; import android.view.WindowManagerGlobal; import com.android.internal.logging.MetricsLogger; @@ -56,6 +55,8 @@ public class ButtonSettings extends SettingsPreferenceFragment implements private static final String KEY_MENU_LONG_PRESS = "hardware_keys_menu_long_press"; private static final String KEY_VOLUME_KEY_CURSOR_CONTROL = "volume_key_cursor_control"; private static final String DISABLE_NAV_KEYS = "disable_nav_keys"; + private static final String KEY_POWER_END_CALL = "power_end_call"; + private static final String KEY_HOME_ANSWER_CALL = "home_answer_call"; private static final String CATEGORY_POWER = "power_key"; private static final String CATEGORY_HOME = "home_key"; @@ -94,11 +95,13 @@ public class ButtonSettings extends SettingsPreferenceFragment implements private ListPreference mMenuPressAction; private ListPreference mMenuLongPressAction; private ListPreference mVolumeKeyCursorControl; + private CheckBoxPreference mDisableNavigationKeys; + private CheckBoxPreference mPowerEndCall; + private CheckBoxPreference mHomeAnswerCall; private PreferenceCategory mNavigationPreferencesCat; private Handler mHandler; - private CheckBoxPreference mDisableNavigationKeys; @Override public void onCreate(Bundle savedInstanceState) { @@ -119,6 +122,8 @@ public class ButtonSettings extends SettingsPreferenceFragment implements final boolean hasAssistKey = (deviceKeys & KEY_MASK_ASSIST) != 0; boolean hasAnyBindableKey = false; + final PreferenceCategory powerCategory = + (PreferenceCategory) prefScreen.findPreference(CATEGORY_POWER); final PreferenceCategory homeCategory = (PreferenceCategory) prefScreen.findPreference(CATEGORY_HOME); final PreferenceCategory menuCategory = @@ -126,6 +131,12 @@ public class ButtonSettings extends SettingsPreferenceFragment implements final PreferenceCategory volumeCategory = (PreferenceCategory) prefScreen.findPreference(CATEGORY_VOLUME); + // Power button ends calls. + mPowerEndCall = (CheckBoxPreference) findPreference(KEY_POWER_END_CALL); + + // Home button answers calls. + mHomeAnswerCall = (CheckBoxPreference) findPreference(KEY_HOME_ANSWER_CALL); + mHandler = new Handler(); // Force Navigation bar related options @@ -151,11 +162,25 @@ public class ButtonSettings extends SettingsPreferenceFragment implements prefScreen.removePreference(mDisableNavigationKeys); } + if (hasPowerKey) { + if (!Utils.isVoiceCapable(getActivity())) { + powerCategory.removePreference(mPowerEndCall); + mPowerEndCall = null; + } + } else { + prefScreen.removePreference(powerCategory); + } + if (hasHomeKey) { if (!res.getBoolean(R.bool.config_show_homeWake)) { homeCategory.removePreference(findPreference(Settings.System.HOME_WAKE_SCREEN)); } + if (!Utils.isVoiceCapable(getActivity())) { + homeCategory.removePreference(mHomeAnswerCall); + mHomeAnswerCall = null; + } + int defaultLongPressAction = res.getInteger( com.android.internal.R.integer.config_longPressOnHomeBehavior); if (defaultLongPressAction < ACTION_NOTHING || @@ -210,6 +235,31 @@ public class ButtonSettings extends SettingsPreferenceFragment implements } } + @Override + public void onResume() { + super.onResume(); + + // Power button ends calls. + if (mPowerEndCall != null) { + final int incallPowerBehavior = Settings.Secure.getInt(getContentResolver(), + Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR, + Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_DEFAULT); + final boolean powerButtonEndsCall = + (incallPowerBehavior == Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_HANGUP); + mPowerEndCall.setChecked(powerButtonEndsCall); + } + + // Home button answers calls. + if (mHomeAnswerCall != null) { + final int incallHomeBehavior = Settings.Secure.getInt(getContentResolver(), + Settings.Secure.RING_HOME_BUTTON_BEHAVIOR, + Settings.Secure.RING_HOME_BUTTON_BEHAVIOR_DEFAULT); + final boolean homeButtonAnswersCall = + (incallHomeBehavior == Settings.Secure.RING_HOME_BUTTON_BEHAVIOR_ANSWER); + mHomeAnswerCall.setChecked(homeButtonAnswersCall); + } + } + private ListPreference initActionList(String key, int value) { ListPreference list = (ListPreference) getPreferenceScreen().findPreference(key); list.setValue(Integer.toString(value)); @@ -334,8 +384,28 @@ public class ButtonSettings extends SettingsPreferenceFragment implements if (preference == mDisableNavigationKeys) { writeDisableNavkeysOption(getActivity(), mDisableNavigationKeys.isChecked()); updateDisableNavkeysOption(); + } else if (preference == mPowerEndCall) { + handleTogglePowerButtonEndsCallPreferenceClick(); + return true; + } else if (preference == mHomeAnswerCall) { + handleToggleHomeButtonAnswersCallPreferenceClick(); + return true; } return super.onPreferenceTreeClick(preferenceScreen, preference); } + + private void handleTogglePowerButtonEndsCallPreferenceClick() { + Settings.Secure.putInt(getContentResolver(), + Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR, (mPowerEndCall.isChecked() + ? Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_HANGUP + : Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_SCREEN_OFF)); + } + + private void handleToggleHomeButtonAnswersCallPreferenceClick() { + Settings.Secure.putInt(getContentResolver(), + Settings.Secure.RING_HOME_BUTTON_BEHAVIOR, (mHomeAnswerCall.isChecked() + ? Settings.Secure.RING_HOME_BUTTON_BEHAVIOR_ANSWER + : Settings.Secure.RING_HOME_BUTTON_BEHAVIOR_DO_NOTHING)); + } } |