Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c960695f authored by Alan Viverette's avatar Alan Viverette
Browse files

Updated keyboard to use SPEAK_PASSWORD preference.

Bug: 5678383
Change-Id: Ie9bdc92f4b2c9014159d672b71e4438f8fa34f55
parent e5db3871
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.content.SharedPreferences;
import android.inputmethodservice.InputMethodService;
import android.media.AudioManager;
import android.os.SystemClock;
import android.provider.Settings;
import android.util.Log;
import android.view.MotionEvent;
import android.view.accessibility.AccessibilityEvent;
@@ -31,6 +32,7 @@ import com.android.inputmethod.compat.AccessibilityManagerCompatWrapper;
import com.android.inputmethod.compat.AudioManagerCompatWrapper;
import com.android.inputmethod.compat.InputTypeCompatUtils;
import com.android.inputmethod.compat.MotionEventCompatUtils;
import com.android.inputmethod.compat.SettingsSecureCompatUtils;
import com.android.inputmethod.latin.R;

public class AccessibilityUtils {
@@ -113,13 +115,23 @@ public class AccessibilityUtils {
    }

    /**
     * @return {@code true} if the device should not speak text (eg.
     *         non-control) characters
     * Returns whether the device should obscure typed password characters.
     * Typically this means speaking "dot" in place of non-control characters.
     * 
     * @return {@code true} if the device should obscure password characters.
     */
    public boolean shouldObscureInput(EditorInfo attribute) {
        if (attribute == null)
            return false;

        // The user can optionally force speaking passwords.
        if (SettingsSecureCompatUtils.ACCESSIBILITY_SPEAK_PASSWORD != null) {
            final boolean speakPassword = Settings.Secure.getInt(mContext.getContentResolver(),
                    SettingsSecureCompatUtils.ACCESSIBILITY_SPEAK_PASSWORD, 0) != 0;
            if (speakPassword)
                return false;
        }

        // Always speak if the user is listening through headphones.
        if (mAudioManager.isWiredHeadsetOn() || mAudioManager.isBluetoothA2dpOn())
            return false;
+34 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.inputmethod.compat;

import java.lang.reflect.Field;

public class SettingsSecureCompatUtils {
    private static final Field FIELD_ACCESSIBILITY_SPEAK_PASSWORD = CompatUtils.getField(
            android.provider.Settings.Secure.class, "ACCESSIBILITY_SPEAK_PASSWORD");

    private SettingsSecureCompatUtils() {
        // This class is non-instantiable.
    }

    /**
     * Whether to speak passwords while in accessibility mode.
     */
    public static final String ACCESSIBILITY_SPEAK_PASSWORD = (String) CompatUtils.getFieldValue(
            null, null, FIELD_ACCESSIBILITY_SPEAK_PASSWORD);
}