b/12068020 Update calls to InputManager. Do not merge
This is a cherry-pick of https://googleplex-android-review.git.corp.google.com/#/c/400419/
This is part of work on making key layouts get saved per vendor/product
instead of per device. The corresponding change in fw is
https://googleplex-android-review.git.corp.google.com/#/c/399886/
This changes all uses of InputDevice descriptor to InputDeviceIdentifier.
Change-Id: I9072c5b5c822b73188a6c572945f87b4a7c03139
diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
index 3a94865..dbfa1bc 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
@@ -33,6 +33,7 @@
import android.content.res.Configuration;
import android.content.res.Resources;
import android.database.ContentObserver;
+import android.hardware.input.InputDeviceIdentifier;
import android.hardware.input.InputManager;
import android.hardware.input.KeyboardLayout;
import android.os.Bundle;
@@ -492,9 +493,9 @@
if (device != null
&& !device.isVirtual()
&& device.isFullKeyboard()) {
- final String inputDeviceDescriptor = device.getDescriptor();
+ final InputDeviceIdentifier identifier = device.getIdentifier();
final String keyboardLayoutDescriptor =
- mIm.getCurrentKeyboardLayoutForInputDevice(inputDeviceDescriptor);
+ mIm.getCurrentKeyboardLayoutForInputDevice(identifier);
final KeyboardLayout keyboardLayout = keyboardLayoutDescriptor != null ?
mIm.getKeyboardLayout(keyboardLayoutDescriptor) : null;
@@ -508,7 +509,7 @@
pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
- showKeyboardLayoutDialog(inputDeviceDescriptor);
+ showKeyboardLayoutDialog(identifier);
return true;
}
});
@@ -539,19 +540,19 @@
}
}
- private void showKeyboardLayoutDialog(String inputDeviceDescriptor) {
+ private void showKeyboardLayoutDialog(InputDeviceIdentifier inputDeviceIdentifier) {
KeyboardLayoutDialogFragment fragment =
- new KeyboardLayoutDialogFragment(inputDeviceDescriptor);
+ new KeyboardLayoutDialogFragment(inputDeviceIdentifier);
fragment.setTargetFragment(this, 0);
fragment.show(getActivity().getFragmentManager(), "keyboardLayout");
}
@Override
- public void onSetupKeyboardLayouts(String inputDeviceDescriptor) {
+ public void onSetupKeyboardLayouts(InputDeviceIdentifier inputDeviceIdentifier) {
final Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClass(getActivity(), KeyboardLayoutPickerActivity.class);
- intent.putExtra(KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_DESCRIPTOR,
- inputDeviceDescriptor);
+ intent.putExtra(KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_IDENTIFIER,
+ inputDeviceIdentifier);
mIntentWaitingForResult = intent;
startActivityForResult(intent, 0);
}
@@ -561,10 +562,10 @@
super.onActivityResult(requestCode, resultCode, data);
if (mIntentWaitingForResult != null) {
- String inputDeviceDescriptor = mIntentWaitingForResult.getStringExtra(
- KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_DESCRIPTOR);
+ InputDeviceIdentifier inputDeviceIdentifier = mIntentWaitingForResult
+ .getParcelableExtra(KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_IDENTIFIER);
mIntentWaitingForResult = null;
- showKeyboardLayoutDialog(inputDeviceDescriptor);
+ showKeyboardLayoutDialog(inputDeviceIdentifier);
}
}
diff --git a/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java b/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java
index a232a0f..451b36e 100644
--- a/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java
+++ b/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java
@@ -30,6 +30,7 @@
import android.content.Intent;
import android.content.Loader;
import android.content.res.Resources;
+import android.hardware.input.InputDeviceIdentifier;
import android.hardware.input.InputManager;
import android.hardware.input.KeyboardLayout;
import android.hardware.input.InputManager.InputDeviceListener;
@@ -48,9 +49,9 @@
public class KeyboardLayoutDialogFragment extends DialogFragment
implements InputDeviceListener, LoaderCallbacks<KeyboardLayoutDialogFragment.Keyboards> {
- private static final String KEY_INPUT_DEVICE_DESCRIPTOR = "inputDeviceDescriptor";
+ private static final String KEY_INPUT_DEVICE_IDENTIFIER = "inputDeviceIdentifier";
- private String mInputDeviceDescriptor;
+ private InputDeviceIdentifier mInputDeviceIdentifier;
private int mInputDeviceId = -1;
private InputManager mIm;
private KeyboardLayoutAdapter mAdapter;
@@ -58,8 +59,8 @@
public KeyboardLayoutDialogFragment() {
}
- public KeyboardLayoutDialogFragment(String inputDeviceDescriptor) {
- mInputDeviceDescriptor = inputDeviceDescriptor;
+ public KeyboardLayoutDialogFragment(InputDeviceIdentifier inputDeviceIdentifier) {
+ mInputDeviceIdentifier = inputDeviceIdentifier;
}
@Override
@@ -76,7 +77,7 @@
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
- mInputDeviceDescriptor = savedInstanceState.getString(KEY_INPUT_DEVICE_DESCRIPTOR);
+ mInputDeviceIdentifier = savedInstanceState.getParcelable(KEY_INPUT_DEVICE_IDENTIFIER);
}
getLoaderManager().initLoader(0, null, this);
@@ -85,7 +86,7 @@
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
- outState.putString(KEY_INPUT_DEVICE_DESCRIPTOR, mInputDeviceDescriptor);
+ outState.putParcelable(KEY_INPUT_DEVICE_IDENTIFIER, mInputDeviceIdentifier);
}
@Override
@@ -119,7 +120,8 @@
mIm.registerInputDeviceListener(this, null);
- InputDevice inputDevice = mIm.getInputDeviceByDescriptor(mInputDeviceDescriptor);
+ InputDevice inputDevice =
+ mIm.getInputDeviceByDescriptor(mInputDeviceIdentifier.getDescriptor());
if (inputDevice == null) {
dismiss();
return;
@@ -143,7 +145,7 @@
private void onSetupLayoutsButtonClicked() {
((OnSetupKeyboardLayoutsListener)getTargetFragment()).onSetupKeyboardLayouts(
- mInputDeviceDescriptor);
+ mInputDeviceIdentifier);
}
@Override
@@ -156,7 +158,7 @@
if (which >= 0 && which < mAdapter.getCount()) {
KeyboardLayout keyboardLayout = mAdapter.getItem(which);
if (keyboardLayout != null) {
- mIm.setCurrentKeyboardLayoutForInputDevice(mInputDeviceDescriptor,
+ mIm.setCurrentKeyboardLayoutForInputDevice(mInputDeviceIdentifier,
keyboardLayout.getDescriptor());
}
dismiss();
@@ -165,7 +167,7 @@
@Override
public Loader<Keyboards> onCreateLoader(int id, Bundle args) {
- return new KeyboardLayoutLoader(getActivity().getBaseContext(), mInputDeviceDescriptor);
+ return new KeyboardLayoutLoader(getActivity().getBaseContext(), mInputDeviceIdentifier);
}
@Override
@@ -289,11 +291,11 @@
}
private static final class KeyboardLayoutLoader extends AsyncTaskLoader<Keyboards> {
- private final String mInputDeviceDescriptor;
+ private final InputDeviceIdentifier mInputDeviceIdentifier;
- public KeyboardLayoutLoader(Context context, String inputDeviceDescriptor) {
+ public KeyboardLayoutLoader(Context context, InputDeviceIdentifier inputDeviceIdentifier) {
super(context);
- mInputDeviceDescriptor = inputDeviceDescriptor;
+ mInputDeviceIdentifier = inputDeviceIdentifier;
}
@Override
@@ -301,7 +303,7 @@
Keyboards keyboards = new Keyboards();
InputManager im = (InputManager)getContext().getSystemService(Context.INPUT_SERVICE);
String[] keyboardLayoutDescriptors = im.getKeyboardLayoutsForInputDevice(
- mInputDeviceDescriptor);
+ mInputDeviceIdentifier);
for (String keyboardLayoutDescriptor : keyboardLayoutDescriptors) {
KeyboardLayout keyboardLayout = im.getKeyboardLayout(keyboardLayoutDescriptor);
if (keyboardLayout != null) {
@@ -311,7 +313,7 @@
Collections.sort(keyboards.keyboardLayouts);
String currentKeyboardLayoutDescriptor =
- im.getCurrentKeyboardLayoutForInputDevice(mInputDeviceDescriptor);
+ im.getCurrentKeyboardLayoutForInputDevice(mInputDeviceIdentifier);
if (currentKeyboardLayoutDescriptor != null) {
final int numKeyboardLayouts = keyboards.keyboardLayouts.size();
for (int i = 0; i < numKeyboardLayouts; i++) {
@@ -349,6 +351,6 @@
}
public interface OnSetupKeyboardLayoutsListener {
- public void onSetupKeyboardLayouts(String inputDeviceDescriptor);
+ public void onSetupKeyboardLayouts(InputDeviceIdentifier mInputDeviceIdentifier);
}
}
\ No newline at end of file
diff --git a/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java b/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java
index 932dd10..645695e 100644
--- a/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java
+++ b/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java
@@ -20,6 +20,7 @@
import com.android.settings.SettingsPreferenceFragment;
import android.content.Context;
+import android.hardware.input.InputDeviceIdentifier;
import android.hardware.input.InputManager;
import android.hardware.input.InputManager.InputDeviceListener;
import android.hardware.input.KeyboardLayout;
@@ -35,7 +36,7 @@
public class KeyboardLayoutPickerFragment extends SettingsPreferenceFragment
implements InputDeviceListener {
- private String mInputDeviceDescriptor;
+ private InputDeviceIdentifier mInputDeviceIdentifier;
private int mInputDeviceId = -1;
private InputManager mIm;
private KeyboardLayout[] mKeyboardLayouts;
@@ -46,15 +47,15 @@
* Intent extra: The input device descriptor of the keyboard whose keyboard
* layout is to be changed.
*/
- public static final String EXTRA_INPUT_DEVICE_DESCRIPTOR = "input_device_descriptor";
+ public static final String EXTRA_INPUT_DEVICE_IDENTIFIER = "input_device_identifier";
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
- mInputDeviceDescriptor = getActivity().getIntent().getStringExtra(
- EXTRA_INPUT_DEVICE_DESCRIPTOR);
- if (mInputDeviceDescriptor == null) {
+ mInputDeviceIdentifier = getActivity().getIntent().getParcelableExtra(
+ EXTRA_INPUT_DEVICE_IDENTIFIER);
+ if (mInputDeviceIdentifier == null) {
getActivity().finish();
}
@@ -70,7 +71,8 @@
mIm.registerInputDeviceListener(this, null);
- InputDevice inputDevice = mIm.getInputDeviceByDescriptor(mInputDeviceDescriptor);
+ InputDevice inputDevice =
+ mIm.getInputDeviceByDescriptor(mInputDeviceIdentifier.getDescriptor());
if (inputDevice == null) {
getActivity().finish();
return;
@@ -97,10 +99,10 @@
if (layout != null) {
boolean checked = checkboxPref.isChecked();
if (checked) {
- mIm.addKeyboardLayoutForInputDevice(mInputDeviceDescriptor,
+ mIm.addKeyboardLayoutForInputDevice(mInputDeviceIdentifier,
layout.getDescriptor());
} else {
- mIm.removeKeyboardLayoutForInputDevice(mInputDeviceDescriptor,
+ mIm.removeKeyboardLayoutForInputDevice(mInputDeviceIdentifier,
layout.getDescriptor());
}
return true;
@@ -143,7 +145,7 @@
private void updateCheckedState() {
String[] enabledKeyboardLayouts = mIm.getKeyboardLayoutsForInputDevice(
- mInputDeviceDescriptor);
+ mInputDeviceIdentifier);
Arrays.sort(enabledKeyboardLayouts);
for (Map.Entry<CheckBoxPreference, KeyboardLayout> entry : mPreferenceMap.entrySet()) {