Add setting to redirect vibrator to game controller.
Bug: 6334179 Change-Id: I62c9c163aa4ee2c88286daee77641418869a1dab
This commit is contained in:
@@ -2613,11 +2613,19 @@
|
|||||||
card numbers. It comes from the app
|
card numbers. It comes from the app
|
||||||
<xliff:g id="spellchecker_application_name">%1$s</xliff:g>.
|
<xliff:g id="spellchecker_application_name">%1$s</xliff:g>.
|
||||||
Use this spell checker?</string>
|
Use this spell checker?</string>
|
||||||
|
|
||||||
<!-- On Language & input settings screen, heading. Inside the "Language & input settings" screen, this is the header for settings that relate to mouse and trackpad devices. [CHAR LIMIT=40] -->
|
<!-- On Language & input settings screen, heading. Inside the "Language & input settings" screen, this is the header for settings that relate to mouse and trackpad devices. [CHAR LIMIT=40] -->
|
||||||
<string name="pointer_settings_category">Mouse/trackpad</string>
|
<string name="pointer_settings_category">Mouse/trackpad</string>
|
||||||
<!-- On Language & input settings screen, setting summary. Setting for mouse pointer speed. [CHAR LIMIT=35] -->
|
<!-- On Language & input settings screen, setting summary. Setting for mouse pointer speed. [CHAR LIMIT=35] -->
|
||||||
<string name="pointer_speed">Pointer speed</string>
|
<string name="pointer_speed">Pointer speed</string>
|
||||||
|
|
||||||
|
<!-- On Language & input settings screen, heading. Inside the "Language & input settings" screen, this is the header for settings that relate to game controller devices. [CHAR LIMIT=40] -->
|
||||||
|
<string name="game_controller_settings_category">Game Controller</string>
|
||||||
|
<!-- On Language & input settings screen, setting title. Setting to redirect vibration to input devices. [CHAR LIMIT=35] -->
|
||||||
|
<string name="vibrate_input_devices">Use vibrator</string>
|
||||||
|
<!-- On Language & input settings screen, setting summary. Setting to redirect vibration to input devices. [CHAR LIMIT=100] -->
|
||||||
|
<string name="vibrate_input_devices_summary">Redirect vibrator to game controller when connected.</string>
|
||||||
|
|
||||||
<!-- Keyboard Layout Picker --> <skip />
|
<!-- Keyboard Layout Picker --> <skip />
|
||||||
<!-- Title for the keyboard layout picker activity. [CHAR LIMIT=35] -->
|
<!-- Title for the keyboard layout picker activity. [CHAR LIMIT=35] -->
|
||||||
<string name="keyboard_layout_picker_title">Choose keyboard layout</string>
|
<string name="keyboard_layout_picker_title">Choose keyboard layout</string>
|
||||||
|
@@ -92,4 +92,14 @@
|
|||||||
android:title="@string/pointer_speed"
|
android:title="@string/pointer_speed"
|
||||||
android:dialogTitle="@string/pointer_speed" />
|
android:dialogTitle="@string/pointer_speed" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
<PreferenceCategory android:key="game_controller_settings_category"
|
||||||
|
android:title="@string/game_controller_settings_category">
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:key="vibrate_input_devices"
|
||||||
|
android:title="@string/vibrate_input_devices"
|
||||||
|
android:summaryOn="@string/vibrate_input_devices_summary"
|
||||||
|
android:summaryOff="@string/vibrate_input_devices_summary"
|
||||||
|
android:persistent="false"/>
|
||||||
|
</PreferenceCategory>
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
@@ -73,6 +73,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
|
|||||||
private ListPreference mShowInputMethodSelectorPref;
|
private ListPreference mShowInputMethodSelectorPref;
|
||||||
private PreferenceCategory mKeyboardSettingsCategory;
|
private PreferenceCategory mKeyboardSettingsCategory;
|
||||||
private PreferenceCategory mHardKeyboardCategory;
|
private PreferenceCategory mHardKeyboardCategory;
|
||||||
|
private PreferenceCategory mGameControllerCategory;
|
||||||
private Preference mLanguagePref;
|
private Preference mLanguagePref;
|
||||||
private final ArrayList<InputMethodPreference> mInputMethodPreferenceList =
|
private final ArrayList<InputMethodPreference> mInputMethodPreferenceList =
|
||||||
new ArrayList<InputMethodPreference>();
|
new ArrayList<InputMethodPreference>();
|
||||||
@@ -118,6 +119,8 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
|
|||||||
mHardKeyboardCategory = (PreferenceCategory)findPreference("hard_keyboard");
|
mHardKeyboardCategory = (PreferenceCategory)findPreference("hard_keyboard");
|
||||||
mKeyboardSettingsCategory = (PreferenceCategory)findPreference(
|
mKeyboardSettingsCategory = (PreferenceCategory)findPreference(
|
||||||
"keyboard_settings_category");
|
"keyboard_settings_category");
|
||||||
|
mGameControllerCategory = (PreferenceCategory)findPreference(
|
||||||
|
"game_controller_settings_category");
|
||||||
|
|
||||||
// Filter out irrelevant features if invoked from IME settings button.
|
// Filter out irrelevant features if invoked from IME settings button.
|
||||||
mIsOnlyImeSettings = Settings.ACTION_INPUT_METHOD_SETTINGS.equals(
|
mIsOnlyImeSettings = Settings.ACTION_INPUT_METHOD_SETTINGS.equals(
|
||||||
@@ -159,9 +162,9 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build hard keyboard preference category.
|
// Build hard keyboard and game controller preference categories.
|
||||||
mIm = (InputManager)getActivity().getSystemService(Context.INPUT_SERVICE);
|
mIm = (InputManager)getActivity().getSystemService(Context.INPUT_SERVICE);
|
||||||
updateHardKeyboards();
|
updateInputDevices();
|
||||||
|
|
||||||
// Spell Checker
|
// Spell Checker
|
||||||
final Intent intent = new Intent(Intent.ACTION_MAIN);
|
final Intent intent = new Intent(Intent.ACTION_MAIN);
|
||||||
@@ -245,7 +248,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateHardKeyboards();
|
updateInputDevices();
|
||||||
|
|
||||||
// IME
|
// IME
|
||||||
InputMethodAndSubtypeUtil.loadInputMethodSubtypeList(
|
InputMethodAndSubtypeUtil.loadInputMethodSubtypeList(
|
||||||
@@ -268,17 +271,17 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInputDeviceAdded(int deviceId) {
|
public void onInputDeviceAdded(int deviceId) {
|
||||||
updateHardKeyboards();
|
updateInputDevices();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInputDeviceChanged(int deviceId) {
|
public void onInputDeviceChanged(int deviceId) {
|
||||||
updateHardKeyboards();
|
updateInputDevices();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInputDeviceRemoved(int deviceId) {
|
public void onInputDeviceRemoved(int deviceId) {
|
||||||
updateHardKeyboards();
|
updateInputDevices();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -306,6 +309,11 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (chkPref == mGameControllerCategory.findPreference("vibrate_input_devices")) {
|
||||||
|
System.putInt(getContentResolver(), Settings.System.VIBRATE_INPUT_DEVICES,
|
||||||
|
chkPref.isChecked() ? 1 : 0);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return super.onPreferenceTreeClick(preferenceScreen, preference);
|
return super.onPreferenceTreeClick(preferenceScreen, preference);
|
||||||
}
|
}
|
||||||
@@ -382,6 +390,11 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
|
|||||||
return pref;
|
return pref;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateInputDevices() {
|
||||||
|
updateHardKeyboards();
|
||||||
|
updateGameControllers();
|
||||||
|
}
|
||||||
|
|
||||||
private void updateHardKeyboards() {
|
private void updateHardKeyboards() {
|
||||||
mHardKeyboardPreferenceList.clear();
|
mHardKeyboardPreferenceList.clear();
|
||||||
if (getResources().getConfiguration().keyboard == Configuration.KEYBOARD_QWERTY) {
|
if (getResources().getConfiguration().keyboard == Configuration.KEYBOARD_QWERTY) {
|
||||||
@@ -436,6 +449,30 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateGameControllers() {
|
||||||
|
if (haveInputDeviceWithVibrator()) {
|
||||||
|
getPreferenceScreen().addPreference(mGameControllerCategory);
|
||||||
|
|
||||||
|
CheckBoxPreference chkPref = (CheckBoxPreference)
|
||||||
|
mGameControllerCategory.findPreference("vibrate_input_devices");
|
||||||
|
chkPref.setChecked(System.getInt(getContentResolver(),
|
||||||
|
Settings.System.VIBRATE_INPUT_DEVICES, 1) > 0);
|
||||||
|
} else {
|
||||||
|
getPreferenceScreen().removePreference(mGameControllerCategory);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean haveInputDeviceWithVibrator() {
|
||||||
|
final int[] devices = InputDevice.getDeviceIds();
|
||||||
|
for (int i = 0; i < devices.length; i++) {
|
||||||
|
InputDevice device = InputDevice.getDevice(devices[i]);
|
||||||
|
if (device != null && !device.isVirtual() && device.getVibrator().hasVibrator()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
private class SettingsObserver extends ContentObserver {
|
private class SettingsObserver extends ContentObserver {
|
||||||
public SettingsObserver(Handler handler, Context context) {
|
public SettingsObserver(Handler handler, Context context) {
|
||||||
super(handler);
|
super(handler);
|
||||||
|
Reference in New Issue
Block a user