Hardware key: Customization support [2/2]
Based on DUI jhenrique09 edits: make it DUI independent Original commit message: Same robust action library as used on software navigation. Supports single tap, double tap, and long press. As a precautionary measure, single tap back and single tap home are fixed and can not be changed. Camera button actions are not supported at this time. We will bring in wake key support at a later time. Also includes: Change-Id: I29ff38678821ca80db36d49d3b10d8ac29a6b4de DUI: Initial checkin for Oreo [4/7] Signed-off-by: Shubham Singh <coolsks94@gmail.com> Signed-off-by: mhkjahromi <m.h.k.jahromi@gmail.com> Signed-off-by: SagarMakhar <sagarmakhar@gmail.com> Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
This commit is contained in:
@@ -170,4 +170,24 @@
|
||||
<item>0</item>
|
||||
</string-array>
|
||||
|
||||
<!-- HW Keys customization -->
|
||||
<string-array name="action_dialog_entries">
|
||||
<item>@string/action_entry_default_action</item>
|
||||
<item>@string/action_entry_custom_action</item>
|
||||
<item>@string/action_entry_select_app</item>
|
||||
</string-array>
|
||||
<string-array name="action_dialog_values" translatable="false">
|
||||
<item>@string/action_value_default_action</item>
|
||||
<item>@string/action_value_custom_action</item>
|
||||
<item>@string/action_value_select_app</item>
|
||||
</string-array>
|
||||
<string-array name="action_dialog_no_default_entries">
|
||||
<item>@string/action_entry_custom_action</item>
|
||||
<item>@string/action_entry_select_app</item>
|
||||
</string-array>
|
||||
<string-array name="action_dialog_no_default_values" translatable="false">
|
||||
<item>@string/action_value_custom_action</item>
|
||||
<item>@string/action_value_select_app</item>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -168,7 +168,38 @@
|
||||
<string name="torch_power_button_gesture_dt_toast">Jump to camera gesture is now disabled</string>
|
||||
<string name="torch_power_button_gesture_lp">Long press power button</string>
|
||||
|
||||
<!-- 4G icon -->
|
||||
<!-- Hardware button navigation -->
|
||||
<string name="action_value_default_action" translatable="false">default</string>
|
||||
<string name="action_value_select_app" translatable="false">app</string>
|
||||
<string name="action_value_custom_action" translatable="false">custom</string>
|
||||
<string name="action_value_back" translatable="false">task_back</string>
|
||||
<string name="action_value_home" translatable="false">task_home</string>
|
||||
<string name="action_value_search_assist" translatable="false">task_assist</string>
|
||||
<string name="action_value_recent_apps" translatable="false">task_recents</string>
|
||||
<string name="action_value_voice_search" translatable="false">task_voice_search</string>
|
||||
<string name="action_value_menu" translatable="false">task_menu</string>
|
||||
<string name="picker_activities">Activities</string>
|
||||
<string name="select_custom_app_title">Select custom app</string>
|
||||
<string name="select_custom_activity_title">Select custom activity</string>
|
||||
<string name="profile_applist_title">Applications</string>
|
||||
<string name="choose_action_title">Choose action</string>
|
||||
<string name="action_entry_default_action">Default settings</string>
|
||||
<string name="action_entry_select_app">Select application</string>
|
||||
<string name="action_entry_custom_action">Select custom action</string>
|
||||
<string name="hardware_keys_volume_keys_title">Volume rocker</string>
|
||||
<string name="hardware_keys_home_key_title">Home button</string>
|
||||
<string name="hardware_keys_menu_key_title">Menu button</string>
|
||||
<string name="hardware_keys_assist_key_title">Search button</string>
|
||||
<string name="hardware_keys_appswitch_key_title">Overview button</string>
|
||||
<string name="hardware_keys_back_key_title">Back button</string>
|
||||
<string name="hardware_keys_double_tap_summary">Set double tap action</string>
|
||||
<string name="hardware_keys_single_tap_summary">Set single tap action</string>
|
||||
<string name="hardware_keys_long_press_summary">Set long press action</string>
|
||||
<string name="hardware_keys_single_tap_title">Single tap action</string>
|
||||
<string name="hardware_keys_long_press_title">Long press action</string>
|
||||
<string name="hardware_keys_double_tap_title">Double tap action</string>
|
||||
|
||||
<!-- 4G icon -->
|
||||
<string name="show_fourg_icon_title">4G icon</string>
|
||||
<string name="show_fourg_icon_summary">Display 4G icon in signal icon instead LTE</string>
|
||||
|
||||
|
||||
@@ -41,6 +41,114 @@
|
||||
android:title="@string/volume_rocker_wake_title"
|
||||
android:defaultValue="false"
|
||||
android:disableDependentsState="true" />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="back_key"
|
||||
android:title="@string/hardware_keys_back_key_title" >
|
||||
|
||||
<com.cherish.settings.preferences.ActionPreference
|
||||
android:key="hwkeys_button_back_long_press"
|
||||
android:summary="@string/hardware_keys_long_press_summary"
|
||||
android:title="@string/hardware_keys_long_press_title" >
|
||||
</com.cherish.settings.preferences.ActionPreference>
|
||||
|
||||
<com.cherish.settings.preferences.ActionPreference
|
||||
android:key="hwkeys_button_back_double_tap"
|
||||
android:summary="@string/hardware_keys_double_tap_summary"
|
||||
android:title="@string/hardware_keys_double_tap_title" >
|
||||
</com.cherish.settings.preferences.ActionPreference>
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="home_key"
|
||||
android:title="@string/hardware_keys_home_key_title" >
|
||||
|
||||
<com.cherish.settings.preferences.ActionPreference
|
||||
android:key="hwkeys_button_home_long_press"
|
||||
android:summary="@string/hardware_keys_long_press_summary"
|
||||
android:title="@string/hardware_keys_long_press_title" >
|
||||
</com.cherish.settings.preferences.ActionPreference>
|
||||
|
||||
<com.cherish.settings.preferences.ActionPreference
|
||||
android:key="hwkeys_button_home_double_tap"
|
||||
android:summary="@string/hardware_keys_double_tap_summary"
|
||||
android:title="@string/hardware_keys_double_tap_title" >
|
||||
</com.cherish.settings.preferences.ActionPreference>
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="app_switch_key"
|
||||
android:title="@string/hardware_keys_appswitch_key_title" >
|
||||
|
||||
<com.cherish.settings.preferences.ActionPreference
|
||||
android:key="hwkeys_button_overview_single_tap"
|
||||
android:summary="@string/hardware_keys_single_tap_summary"
|
||||
android:title="@string/hardware_keys_single_tap_title" >
|
||||
</com.cherish.settings.preferences.ActionPreference>
|
||||
|
||||
<com.cherish.settings.preferences.ActionPreference
|
||||
android:key="hwkeys_button_overview_long_press"
|
||||
android:summary="@string/hardware_keys_long_press_summary"
|
||||
android:title="@string/hardware_keys_long_press_title" >
|
||||
</com.cherish.settings.preferences.ActionPreference>
|
||||
|
||||
<com.cherish.settings.preferences.ActionPreference
|
||||
android:key="hwkeys_button_overview_double_tap"
|
||||
android:summary="@string/hardware_keys_double_tap_summary"
|
||||
android:title="@string/hardware_keys_double_tap_title" >
|
||||
</com.cherish.settings.preferences.ActionPreference>
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="menu_key"
|
||||
android:title="@string/hardware_keys_menu_key_title" >
|
||||
|
||||
<com.cherish.settings.preferences.ActionPreference
|
||||
android:key="hwkeys_button_menu_single_tap"
|
||||
android:summary="@string/hardware_keys_single_tap_summary"
|
||||
android:title="@string/hardware_keys_single_tap_title" >
|
||||
</com.cherish.settings.preferences.ActionPreference>
|
||||
|
||||
<com.cherish.settings.preferences.ActionPreference
|
||||
android:key="hwkeys_button_menu_long_press"
|
||||
android:summary="@string/hardware_keys_long_press_summary"
|
||||
android:title="@string/hardware_keys_long_press_title" >
|
||||
</com.cherish.settings.preferences.ActionPreference>
|
||||
|
||||
<com.cherish.settings.preferences.ActionPreference
|
||||
android:key="hwkeys_button_menu_double_tap"
|
||||
android:summary="@string/hardware_keys_double_tap_summary"
|
||||
android:title="@string/hardware_keys_double_tap_title" >
|
||||
</com.cherish.settings.preferences.ActionPreference>
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="assist_key"
|
||||
android:title="@string/hardware_keys_assist_key_title" >
|
||||
|
||||
<com.cherish.settings.preferences.ActionPreference
|
||||
android:key="hwkeys_button_assist_single_tap"
|
||||
android:summary="@string/hardware_keys_single_tap_summary"
|
||||
android:title="@string/hardware_keys_single_tap_title" >
|
||||
</com.cherish.settings.preferences.ActionPreference>
|
||||
|
||||
<com.cherish.settings.preferences.ActionPreference
|
||||
android:key="hwkeys_button_assist_long_press"
|
||||
android:summary="@string/hardware_keys_long_press_summary"
|
||||
android:title="@string/hardware_keys_long_press_title" >
|
||||
</com.cherish.settings.preferences.ActionPreference>
|
||||
|
||||
<com.cherish.settings.preferences.ActionPreference
|
||||
android:key="hwkeys_button_assist_double_tap"
|
||||
android:summary="@string/hardware_keys_double_tap_summary"
|
||||
android:title="@string/hardware_keys_double_tap_title" >
|
||||
</com.cherish.settings.preferences.ActionPreference>
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<ListPreference
|
||||
|
||||
@@ -52,6 +52,24 @@ import java.util.List;
|
||||
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
|
||||
public class ButtonSettings extends ActionFragment implements OnPreferenceChangeListener {
|
||||
|
||||
// category keys
|
||||
private static final String CATEGORY_BACK = "back_key";
|
||||
private static final String CATEGORY_HOME = "home_key";
|
||||
private static final String CATEGORY_MENU = "menu_key";
|
||||
private static final String CATEGORY_ASSIST = "assist_key";
|
||||
private static final String CATEGORY_APPSWITCH = "app_switch_key";
|
||||
private static final String CATEGORY_VOLUME = "volume_keys";
|
||||
private static final String CATEGORY_POWER = "power_key";
|
||||
// Masks for checking presence of hardware keys.
|
||||
// Must match values in frameworks/base/core/res/res/values/config.xml
|
||||
public static final int KEY_MASK_HOME = 0x01;
|
||||
public static final int KEY_MASK_BACK = 0x02;
|
||||
public static final int KEY_MASK_MENU = 0x04;
|
||||
public static final int KEY_MASK_ASSIST = 0x08;
|
||||
public static final int KEY_MASK_APP_SWITCH = 0x10;
|
||||
public static final int KEY_MASK_CAMERA = 0x20;
|
||||
public static final int KEY_MASK_VOLUME = 0x40;
|
||||
|
||||
private static final String TORCH_POWER_BUTTON_GESTURE = "torch_power_button_gesture";
|
||||
|
||||
private ListPreference mTorchPowerButton;
|
||||
@@ -64,6 +82,49 @@ public class ButtonSettings extends ActionFragment implements OnPreferenceChange
|
||||
final Resources res = getResources();
|
||||
final ContentResolver resolver = getActivity().getContentResolver();
|
||||
final PreferenceScreen prefScreen = getPreferenceScreen();
|
||||
// bits for hardware keys present on device
|
||||
final int deviceKeys = getResources().getInteger(
|
||||
com.android.internal.R.integer.config_deviceHardwareKeys);
|
||||
// read bits for present hardware keys
|
||||
final boolean hasHomeKey = (deviceKeys & KEY_MASK_HOME) != 0;
|
||||
final boolean hasBackKey = (deviceKeys & KEY_MASK_BACK) != 0;
|
||||
final boolean hasMenuKey = (deviceKeys & KEY_MASK_MENU) != 0;
|
||||
final boolean hasAssistKey = (deviceKeys & KEY_MASK_ASSIST) != 0;
|
||||
final boolean hasAppSwitchKey = (deviceKeys & KEY_MASK_APP_SWITCH) != 0;
|
||||
// load categories and init/remove preferences based on device
|
||||
// configuration
|
||||
final PreferenceCategory backCategory = (PreferenceCategory) prefScreen
|
||||
.findPreference(CATEGORY_BACK);
|
||||
final PreferenceCategory homeCategory = (PreferenceCategory) prefScreen
|
||||
.findPreference(CATEGORY_HOME);
|
||||
final PreferenceCategory menuCategory = (PreferenceCategory) prefScreen
|
||||
.findPreference(CATEGORY_MENU);
|
||||
final PreferenceCategory assistCategory = (PreferenceCategory) prefScreen
|
||||
.findPreference(CATEGORY_ASSIST);
|
||||
final PreferenceCategory appSwitchCategory = (PreferenceCategory) prefScreen
|
||||
.findPreference(CATEGORY_APPSWITCH);
|
||||
// back key
|
||||
if (!hasBackKey) {
|
||||
prefScreen.removePreference(backCategory);
|
||||
}
|
||||
// home key
|
||||
if (!hasHomeKey) {
|
||||
prefScreen.removePreference(homeCategory);
|
||||
}
|
||||
// App switch key (recents)
|
||||
if (!hasAppSwitchKey) {
|
||||
prefScreen.removePreference(appSwitchCategory);
|
||||
}
|
||||
// menu key
|
||||
if (!hasMenuKey) {
|
||||
prefScreen.removePreference(menuCategory);
|
||||
}
|
||||
// search/assist key
|
||||
if (!hasAssistKey) {
|
||||
prefScreen.removePreference(assistCategory);
|
||||
}
|
||||
// let super know we can load ActionPreferences
|
||||
onPreferenceScreenLoaded(ActionConstants.getDefaults(ActionConstants.HWKEYS));
|
||||
|
||||
// screen off torch
|
||||
mTorchPowerButton = (ListPreference) findPreference(TORCH_POWER_BUTTON_GESTURE);
|
||||
|
||||
Reference in New Issue
Block a user