Loading java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java +40 −20 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import com.android.inputmethod.keyboard.Keyboard; import com.android.inputmethod.keyboard.KeyboardId; import com.android.inputmethod.keyboard.MainKeyboardView; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; public final class AccessibleKeyboardViewProxy extends AccessibilityDelegateCompat { private static final AccessibleKeyboardViewProxy sInstance = new AccessibleKeyboardViewProxy(); Loading Loading @@ -67,8 +68,8 @@ public final class AccessibleKeyboardViewProxy extends AccessibilityDelegateComp private int mEdgeSlop; /** The most recently set keyboard mode. */ private int mLastKeyboardMode; private static final int NOT_A_KEYBOARD_MODE = -1; private int mLastKeyboardMode = KEYBOARD_IS_HIDDEN; private static final int KEYBOARD_IS_HIDDEN = -1; public static void init(final InputMethodService inputMethod) { sInstance.initInternal(inputMethod); Loading Loading @@ -124,20 +125,27 @@ public final class AccessibleKeyboardViewProxy extends AccessibilityDelegateComp if (keyboard == null) { return; } mKeyboard = keyboard; if (mAccessibilityNodeProvider != null) { mAccessibilityNodeProvider.setKeyboard(keyboard); } final int keyboardMode = keyboard.mId.mMode; final Keyboard lastKeyboard = mKeyboard; final int lastKeyboardMode = mLastKeyboardMode; mKeyboard = keyboard; mLastKeyboardMode = keyboard.mId.mMode; // Since this method is called even when accessibility is off, make sure // to check the state before announcing anything. Also, don't announce // changes within the same mode. if (AccessibilityUtils.getInstance().isAccessibilityEnabled() && (mLastKeyboardMode != keyboardMode)) { announceKeyboardMode(keyboardMode); // to check the state before announcing anything. if (!AccessibilityUtils.getInstance().isAccessibilityEnabled()) { return; } // Announce the language name only when the language is changed. if (lastKeyboard == null || !lastKeyboard.mId.mSubtype.equals(keyboard.mId.mSubtype)) { announceKeyboardLanguage(keyboard); } // Announce the mode only when the mode is changed. if (lastKeyboardMode != keyboard.mId.mMode) { announceKeyboardMode(keyboard); } mLastKeyboardMode = keyboardMode; } /** Loading @@ -148,23 +156,35 @@ public final class AccessibleKeyboardViewProxy extends AccessibilityDelegateComp return; } announceKeyboardHidden(); mLastKeyboardMode = NOT_A_KEYBOARD_MODE; mLastKeyboardMode = KEYBOARD_IS_HIDDEN; } /** * Announces which type of keyboard is being displayed. If the keyboard type * is unknown, no announcement is made. * Announces which language of keyboard is being displayed. * * @param mode The new keyboard mode. * @param keyboard The new keyboard. */ private void announceKeyboardMode(final int mode) { final int resId = KEYBOARD_MODE_RES_IDS.get(mode); if (resId == 0) { return; private void announceKeyboardLanguage(final Keyboard keyboard) { final String languageText = SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale( keyboard.mId.mSubtype); sendWindowStateChanged(languageText); } /** * Announces which type of keyboard is being displayed. * If the keyboard type is unknown, no announcement is made. * * @param keyboard The new keyboard. */ private void announceKeyboardMode(final Keyboard keyboard) { final int mode = keyboard.mId.mMode; final Context context = mView.getContext(); final String keyboardMode = context.getString(resId); final String text = context.getString(R.string.announce_keyboard_mode, keyboardMode); final int modeTextResId = KEYBOARD_MODE_RES_IDS.get(mode); if (modeTextResId == 0) { return; } final String modeText = context.getString(modeTextResId); final String text = context.getString(R.string.announce_keyboard_mode, modeText); sendWindowStateChanged(text); } Loading Loading
java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java +40 −20 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import com.android.inputmethod.keyboard.Keyboard; import com.android.inputmethod.keyboard.KeyboardId; import com.android.inputmethod.keyboard.MainKeyboardView; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; public final class AccessibleKeyboardViewProxy extends AccessibilityDelegateCompat { private static final AccessibleKeyboardViewProxy sInstance = new AccessibleKeyboardViewProxy(); Loading Loading @@ -67,8 +68,8 @@ public final class AccessibleKeyboardViewProxy extends AccessibilityDelegateComp private int mEdgeSlop; /** The most recently set keyboard mode. */ private int mLastKeyboardMode; private static final int NOT_A_KEYBOARD_MODE = -1; private int mLastKeyboardMode = KEYBOARD_IS_HIDDEN; private static final int KEYBOARD_IS_HIDDEN = -1; public static void init(final InputMethodService inputMethod) { sInstance.initInternal(inputMethod); Loading Loading @@ -124,20 +125,27 @@ public final class AccessibleKeyboardViewProxy extends AccessibilityDelegateComp if (keyboard == null) { return; } mKeyboard = keyboard; if (mAccessibilityNodeProvider != null) { mAccessibilityNodeProvider.setKeyboard(keyboard); } final int keyboardMode = keyboard.mId.mMode; final Keyboard lastKeyboard = mKeyboard; final int lastKeyboardMode = mLastKeyboardMode; mKeyboard = keyboard; mLastKeyboardMode = keyboard.mId.mMode; // Since this method is called even when accessibility is off, make sure // to check the state before announcing anything. Also, don't announce // changes within the same mode. if (AccessibilityUtils.getInstance().isAccessibilityEnabled() && (mLastKeyboardMode != keyboardMode)) { announceKeyboardMode(keyboardMode); // to check the state before announcing anything. if (!AccessibilityUtils.getInstance().isAccessibilityEnabled()) { return; } // Announce the language name only when the language is changed. if (lastKeyboard == null || !lastKeyboard.mId.mSubtype.equals(keyboard.mId.mSubtype)) { announceKeyboardLanguage(keyboard); } // Announce the mode only when the mode is changed. if (lastKeyboardMode != keyboard.mId.mMode) { announceKeyboardMode(keyboard); } mLastKeyboardMode = keyboardMode; } /** Loading @@ -148,23 +156,35 @@ public final class AccessibleKeyboardViewProxy extends AccessibilityDelegateComp return; } announceKeyboardHidden(); mLastKeyboardMode = NOT_A_KEYBOARD_MODE; mLastKeyboardMode = KEYBOARD_IS_HIDDEN; } /** * Announces which type of keyboard is being displayed. If the keyboard type * is unknown, no announcement is made. * Announces which language of keyboard is being displayed. * * @param mode The new keyboard mode. * @param keyboard The new keyboard. */ private void announceKeyboardMode(final int mode) { final int resId = KEYBOARD_MODE_RES_IDS.get(mode); if (resId == 0) { return; private void announceKeyboardLanguage(final Keyboard keyboard) { final String languageText = SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale( keyboard.mId.mSubtype); sendWindowStateChanged(languageText); } /** * Announces which type of keyboard is being displayed. * If the keyboard type is unknown, no announcement is made. * * @param keyboard The new keyboard. */ private void announceKeyboardMode(final Keyboard keyboard) { final int mode = keyboard.mId.mMode; final Context context = mView.getContext(); final String keyboardMode = context.getString(resId); final String text = context.getString(R.string.announce_keyboard_mode, keyboardMode); final int modeTextResId = KEYBOARD_MODE_RES_IDS.get(mode); if (modeTextResId == 0) { return; } final String modeText = context.getString(modeTextResId); final String text = context.getString(R.string.announce_keyboard_mode, modeText); sendWindowStateChanged(text); } Loading