[2/2] OmniGears: allow disabling haptic feedback for virtual keys
Allows disabling haptic feedback for devices with
capacitive buttons (virtual keys)
Change-Id: I8a4ceac650e611f8a110b08c9e9f7f074e4b22c4
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index beb459b..ec9d69c 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -206,6 +206,8 @@
<string name="keys_action_double">Double tap</string>
<string name="dialog_no_home_key_title">No home action</string>
<string name="no_home_key">You have no button assigned to the \"Home\" action! This can make your device unusable!</string>
+ <string name="virtual_key_haptic_feedback_title">Vibrate on touch</string>
+ <string name="virtual_key_haptic_feedback_summary">Enable depends on \"Vibrate on touch\" in sound settings</string>
<!-- Power Menu Options-->
<string name="bars_and_menus_category_power_menu_title">Power menu</string>
diff --git a/res/xml/button_settings.xml b/res/xml/button_settings.xml
index 2260816..c5867e1 100644
--- a/res/xml/button_settings.xml
+++ b/res/xml/button_settings.xml
@@ -55,6 +55,12 @@
android:key="button_keys"
android:title="@string/button_keys_title" >
+ <CheckBoxPreference
+ android:key="virtual_key_haptic_feedback"
+ android:title="@string/virtual_key_haptic_feedback_title"
+ android:summary="@string/virtual_key_haptic_feedback_summary"
+ android:persistent="false"/>
+
<SwitchPreference
android:key="keys_enable_custom"
android:title="@string/keys_enable_custom_title"
diff --git a/src/org/omnirom/omnigears/ButtonSettings.java b/src/org/omnirom/omnigears/ButtonSettings.java
index d73b6e3..d35c92a 100644
--- a/src/org/omnirom/omnigears/ButtonSettings.java
+++ b/src/org/omnirom/omnigears/ButtonSettings.java
@@ -36,8 +36,10 @@
import android.content.ContentResolver;
import android.content.res.Resources;
+import android.content.Context;
import android.media.AudioSystem;
import android.os.Bundle;
+import android.os.Vibrator;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
@@ -87,6 +89,7 @@
private static final String KEYS_ASSIST_LONG_PRESS = "keys_assist_long_press";
private static final String KEYS_APP_SWITCH_PRESS = "keys_app_switch_press";
private static final String KEYS_APP_SWITCH_LONG_PRESS = "keys_app_switch_long_press";
+ private static final String VIRTUAL_KEY_HAPTIC_FEEDBACK = "virtual_key_haptic_feedback";
// Available custom actions to perform on a key press.
private static final int ACTION_NOTHING = 0;
@@ -124,6 +127,7 @@
private Map<String, Integer> mKeySettings = new HashMap<String, Integer>();
private ListPreference mVolumeDefault;
private CheckBoxPreference mHeadsetHookLaunchVoice;
+ private CheckBoxPreference mVirtualKeyHapticFeedback;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -131,7 +135,7 @@
addPreferencesFromResource(R.xml.button_settings);
- final ContentResolver resolver = getActivity().getContentResolver();
+ final ContentResolver resolver = getContentResolver();
final PreferenceScreen prefScreen = getPreferenceScreen();
final Resources res = getResources();
@@ -215,9 +219,11 @@
KEYS_APP_SWITCH_PRESS);
mAppSwitchLongPressAction = (ListPreference) prefScreen.findPreference(
KEYS_APP_SWITCH_LONG_PRESS);
+ mVirtualKeyHapticFeedback = (CheckBoxPreference) prefScreen.findPreference(
+ VIRTUAL_KEY_HAPTIC_FEEDBACK);
if (hasBackKey) {
- int backPressAction = Settings.System.getInt(getContentResolver(),
+ int backPressAction = Settings.System.getInt(resolver,
Settings.System.KEY_BACK_ACTION, ACTION_BACK);
mBackPressAction.setValue(Integer.toString(backPressAction));
@@ -226,7 +232,7 @@
mKeySettings.put(Settings.System.KEY_BACK_ACTION, backPressAction);
- int backLongPressAction = Settings.System.getInt(getContentResolver(),
+ int backLongPressAction = Settings.System.getInt(resolver,
Settings.System.KEY_BACK_LONG_PRESS_ACTION, ACTION_NOTHING);
mBackLongPressAction.setValue(Integer.toString(backLongPressAction));
@@ -239,7 +245,7 @@
}
if (hasHomeKey) {
- int homePressAction = Settings.System.getInt(getContentResolver(),
+ int homePressAction = Settings.System.getInt(resolver,
Settings.System.KEY_HOME_ACTION, ACTION_HOME);
mHomePressAction.setValue(Integer.toString(homePressAction));
@@ -261,11 +267,11 @@
}
if (hasAppSwitchKey) {
- homeLongPressAction = Settings.System.getInt(getContentResolver(),
+ homeLongPressAction = Settings.System.getInt(resolver,
Settings.System.KEY_HOME_LONG_PRESS_ACTION, ACTION_NOTHING);
} else {
int defaultAction = ACTION_NOTHING;
- homeLongPressAction = Settings.System.getInt(getContentResolver(),
+ homeLongPressAction = Settings.System.getInt(resolver,
Settings.System.KEY_HOME_LONG_PRESS_ACTION, longPressOnHomeBehavior);
}
mHomeLongPressAction.setValue(Integer.toString(homeLongPressAction));
@@ -277,7 +283,7 @@
int doubleTapOnHomeBehavior = getResources().getInteger(
com.android.internal.R.integer.config_doubleTapOnHomeBehavior);
- int homeDoubleTapAction = Settings.System.getInt(getContentResolver(),
+ int homeDoubleTapAction = Settings.System.getInt(resolver,
Settings.System.KEY_HOME_DOUBLE_TAP_ACTION,
doubleTapOnHomeBehavior == 1 ? ACTION_APP_SWITCH : ACTION_NOTHING);
@@ -291,7 +297,7 @@
}
if (hasMenuKey) {
- int menuPressAction = Settings.System.getInt(getContentResolver(),
+ int menuPressAction = Settings.System.getInt(resolver,
Settings.System.KEY_MENU_ACTION, ACTION_MENU);
mMenuPressAction.setValue(Integer.toString(menuPressAction));
mMenuPressAction.setSummary(mMenuPressAction.getEntry());
@@ -304,7 +310,7 @@
menuLongPressAction = ACTION_SEARCH;
}
- menuLongPressAction = Settings.System.getInt(getContentResolver(),
+ menuLongPressAction = Settings.System.getInt(resolver,
Settings.System.KEY_MENU_LONG_PRESS_ACTION, menuLongPressAction);
mMenuLongPressAction.setValue(Integer.toString(menuLongPressAction));
@@ -317,7 +323,7 @@
}
if (hasAssistKey) {
- int assistPressAction = Settings.System.getInt(getContentResolver(),
+ int assistPressAction = Settings.System.getInt(resolver,
Settings.System.KEY_ASSIST_ACTION, ACTION_SEARCH);
mAssistPressAction.setValue(Integer.toString(assistPressAction));
mAssistPressAction.setSummary(mAssistPressAction.getEntry());
@@ -325,7 +331,7 @@
mKeySettings.put(Settings.System.KEY_ASSIST_ACTION, assistPressAction);
- int assistLongPressAction = Settings.System.getInt(getContentResolver(),
+ int assistLongPressAction = Settings.System.getInt(resolver,
Settings.System.KEY_ASSIST_LONG_PRESS_ACTION, ACTION_VOICE_SEARCH);
mAssistLongPressAction.setValue(Integer.toString(assistLongPressAction));
mAssistLongPressAction.setSummary(mAssistLongPressAction.getEntry());
@@ -337,7 +343,7 @@
}
if (hasAppSwitchKey) {
- int appSwitchPressAction = Settings.System.getInt(getContentResolver(),
+ int appSwitchPressAction = Settings.System.getInt(resolver,
Settings.System.KEY_APP_SWITCH_ACTION, ACTION_APP_SWITCH);
mAppSwitchPressAction.setValue(Integer.toString(appSwitchPressAction));
mAppSwitchPressAction.setSummary(mAppSwitchPressAction.getEntry());
@@ -345,7 +351,7 @@
mKeySettings.put(Settings.System.KEY_APP_SWITCH_ACTION, appSwitchPressAction);
- int appSwitchLongPressAction = Settings.System.getInt(getContentResolver(),
+ int appSwitchLongPressAction = Settings.System.getInt(resolver,
Settings.System.KEY_APP_SWITCH_LONG_PRESS_ACTION, ACTION_NOTHING);
mAppSwitchLongPressAction.setValue(Integer.toString(appSwitchLongPressAction));
mAppSwitchLongPressAction.setSummary(mAppSwitchLongPressAction.getEntry());
@@ -356,10 +362,17 @@
prefScreen.removePreference(keysAppSwitchCategory);
}
- mEnableCustomBindings.setChecked((Settings.System.getInt(getActivity().
- getApplicationContext().getContentResolver(),
+ mEnableCustomBindings.setChecked((Settings.System.getInt(resolver,
Settings.System.HARDWARE_KEY_REBINDING, 0) == 1));
mEnableCustomBindings.setOnPreferenceChangeListener(this);
+
+ Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
+ if (vibrator == null || !vibrator.hasVibrator()) {
+ removePreference(VIRTUAL_KEY_HAPTIC_FEEDBACK);
+ } else {
+ mVirtualKeyHapticFeedback.setChecked(Settings.System.getInt(resolver,
+ Settings.System.VIRTUAL_KEYS_HAPTIC_FEEDBACK, 1) == 1);
+ }
}
final PreferenceCategory headsethookCategory =
@@ -374,16 +387,22 @@
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if (preference == mVolumeWake) {
boolean checked = ((CheckBoxPreference)preference).isChecked();
- Settings.System.putInt(getActivity().getContentResolver(),
+ Settings.System.putInt(getContentResolver(),
Settings.System.VOLUME_WAKE_SCREEN, checked ? 1:0);
return true;
}
else if (preference == mHeadsetHookLaunchVoice) {
boolean checked = ((CheckBoxPreference)preference).isChecked();
- Settings.System.putInt(getActivity().getContentResolver(),
+ Settings.System.putInt(getContentResolver(),
Settings.System.HEADSETHOOK_LAUNCH_VOICE, checked ? 1:0);
return true;
+ } else if (preference == mVirtualKeyHapticFeedback){
+ boolean checked = ((CheckBoxPreference)preference).isChecked();
+ Settings.System.putInt(getContentResolver(),
+ Settings.System.VIRTUAL_KEYS_HAPTIC_FEEDBACK, checked ? 1:0);
+
+ return true;
}
return super.onPreferenceTreeClick(preferenceScreen, preference);
@@ -507,7 +526,7 @@
return true;
} else if (preference == mVolumeDefault) {
String value = (String)newValue;
- Settings.System.putString(getActivity().getContentResolver(), Settings.System.VOLUME_KEYS_DEFAULT, value);
+ Settings.System.putString(getContentResolver(), Settings.System.VOLUME_KEYS_DEFAULT, value);
return true;
}
return false;