Loading core/java/android/accessibilityservice/AccessibilityServiceInfo.java +10 −1 Original line number Diff line number Diff line Loading @@ -302,7 +302,16 @@ public class AccessibilityServiceInfo implements Parcelable { /** * This flag requests that all fingerprint gestures be sent to the accessibility service. * It is handled in {@link FingerprintGestureController} * <p> * Services that want to set this flag have to declare the capability * to retrieve window content in their meta-data by setting the attribute * {@link android.R.attr#canRequestFingerprintGestures} to * true, otherwise this flag will be ignored. For how to declare the meta-data * of a service refer to {@value AccessibilityService#SERVICE_META_DATA}. * </p> * * @see android.R.styleable#AccessibilityService_canRequestFingerprintGestures * @see AccessibilityService#getFingerprintGestureController() */ public static final int FLAG_REQUEST_FINGERPRINT_GESTURES = 0x00000200; Loading core/res/res/values/config.xml +3 −0 Original line number Diff line number Diff line Loading @@ -2853,6 +2853,9 @@ <!-- For performance and storage reasons, limit the number of fingerprints per user --> <integer name="config_fingerprintMaxTemplatesPerUser">5</integer> <!-- Specify if the fingerprint hardware support gestures--> <bool name="config_fingerprintSupportsGestures">false</bool> <!-- This config is used to force VoiceInteractionService to start on certain low ram devices. It declares the package name of VoiceInteractionService that should be started. --> <string translatable="false" name="config_forceVoiceInteractionServicePackage"></string> Loading core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -2407,6 +2407,7 @@ <!-- Fingerprint config --> <java-symbol type="integer" name="config_fingerprintMaxTemplatesPerUser"/> <java-symbol type="bool" name="config_fingerprintSupportsGestures"/> <!-- From various Material changes --> <java-symbol type="attr" name="titleTextAppearance" /> Loading services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -2232,7 +2232,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } if (service != null) { mFingerprintGestureDispatcher = new FingerprintGestureDispatcher( service, mLock); service, mContext.getResources(), mLock); break; } } Loading services/accessibility/java/com/android/server/accessibility/FingerprintGestureDispatcher.java +16 −3 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.accessibility; import android.accessibilityservice.FingerprintGestureController; import android.content.res.Resources; import android.hardware.fingerprint.IFingerprintClientActiveCallback; import android.hardware.fingerprint.IFingerprintService; import android.os.Binder; Loading @@ -42,6 +43,7 @@ public class FingerprintGestureDispatcher extends IFingerprintClientActiveCallba private final Object mLock; private final IFingerprintService mFingerprintService; private final Handler mHandler; private final boolean mHardwareSupportsGestures; // This field is ground truth for whether or not we are registered. Only write to it in handler. private boolean mRegisteredReadOnlyExceptInHandler; Loading @@ -50,8 +52,11 @@ public class FingerprintGestureDispatcher extends IFingerprintClientActiveCallba * @param fingerprintService The system's fingerprint service * @param lock A lock to use when managing internal state */ public FingerprintGestureDispatcher(IFingerprintService fingerprintService, Object lock) { public FingerprintGestureDispatcher(IFingerprintService fingerprintService, Resources resources, Object lock) { mFingerprintService = fingerprintService; mHardwareSupportsGestures = resources.getBoolean( com.android.internal.R.bool.config_fingerprintSupportsGestures); mLock = lock; mHandler = new Handler(this); } Loading @@ -61,9 +66,11 @@ public class FingerprintGestureDispatcher extends IFingerprintClientActiveCallba * @param lock A lock to use when managing internal state * @param handler A handler to use internally. Used for testing. */ public FingerprintGestureDispatcher(IFingerprintService fingerprintService, Object lock, Handler handler) { public FingerprintGestureDispatcher(IFingerprintService fingerprintService, Resources resources, Object lock, Handler handler) { mFingerprintService = fingerprintService; mHardwareSupportsGestures = resources.getBoolean( com.android.internal.R.bool.config_fingerprintSupportsGestures); mLock = lock; mHandler = handler; } Loading @@ -74,6 +81,8 @@ public class FingerprintGestureDispatcher extends IFingerprintClientActiveCallba * @param clientList The list of potential clients. */ public void updateClientList(List<? extends FingerprintGestureClient> clientList) { if (!mHardwareSupportsGestures) return; synchronized (mLock) { mCapturingClients.clear(); for (int i = 0; i < clientList.size(); i++) { Loading @@ -96,6 +105,8 @@ public class FingerprintGestureDispatcher extends IFingerprintClientActiveCallba @Override public void onClientActiveChanged(boolean nonGestureFingerprintClientActive) { if (!mHardwareSupportsGestures) return; synchronized (mLock) { for (int i = 0; i < mCapturingClients.size(); i++) { mCapturingClients.get(i).onFingerprintGestureDetectionActiveChanged( Loading @@ -105,6 +116,8 @@ public class FingerprintGestureDispatcher extends IFingerprintClientActiveCallba } public boolean isFingerprintGestureDetectionAvailable() { if (!mHardwareSupportsGestures) return false; long identity = Binder.clearCallingIdentity(); try { return !mFingerprintService.isClientActive(); Loading Loading
core/java/android/accessibilityservice/AccessibilityServiceInfo.java +10 −1 Original line number Diff line number Diff line Loading @@ -302,7 +302,16 @@ public class AccessibilityServiceInfo implements Parcelable { /** * This flag requests that all fingerprint gestures be sent to the accessibility service. * It is handled in {@link FingerprintGestureController} * <p> * Services that want to set this flag have to declare the capability * to retrieve window content in their meta-data by setting the attribute * {@link android.R.attr#canRequestFingerprintGestures} to * true, otherwise this flag will be ignored. For how to declare the meta-data * of a service refer to {@value AccessibilityService#SERVICE_META_DATA}. * </p> * * @see android.R.styleable#AccessibilityService_canRequestFingerprintGestures * @see AccessibilityService#getFingerprintGestureController() */ public static final int FLAG_REQUEST_FINGERPRINT_GESTURES = 0x00000200; Loading
core/res/res/values/config.xml +3 −0 Original line number Diff line number Diff line Loading @@ -2853,6 +2853,9 @@ <!-- For performance and storage reasons, limit the number of fingerprints per user --> <integer name="config_fingerprintMaxTemplatesPerUser">5</integer> <!-- Specify if the fingerprint hardware support gestures--> <bool name="config_fingerprintSupportsGestures">false</bool> <!-- This config is used to force VoiceInteractionService to start on certain low ram devices. It declares the package name of VoiceInteractionService that should be started. --> <string translatable="false" name="config_forceVoiceInteractionServicePackage"></string> Loading
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -2407,6 +2407,7 @@ <!-- Fingerprint config --> <java-symbol type="integer" name="config_fingerprintMaxTemplatesPerUser"/> <java-symbol type="bool" name="config_fingerprintSupportsGestures"/> <!-- From various Material changes --> <java-symbol type="attr" name="titleTextAppearance" /> Loading
services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -2232,7 +2232,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } if (service != null) { mFingerprintGestureDispatcher = new FingerprintGestureDispatcher( service, mLock); service, mContext.getResources(), mLock); break; } } Loading
services/accessibility/java/com/android/server/accessibility/FingerprintGestureDispatcher.java +16 −3 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.accessibility; import android.accessibilityservice.FingerprintGestureController; import android.content.res.Resources; import android.hardware.fingerprint.IFingerprintClientActiveCallback; import android.hardware.fingerprint.IFingerprintService; import android.os.Binder; Loading @@ -42,6 +43,7 @@ public class FingerprintGestureDispatcher extends IFingerprintClientActiveCallba private final Object mLock; private final IFingerprintService mFingerprintService; private final Handler mHandler; private final boolean mHardwareSupportsGestures; // This field is ground truth for whether or not we are registered. Only write to it in handler. private boolean mRegisteredReadOnlyExceptInHandler; Loading @@ -50,8 +52,11 @@ public class FingerprintGestureDispatcher extends IFingerprintClientActiveCallba * @param fingerprintService The system's fingerprint service * @param lock A lock to use when managing internal state */ public FingerprintGestureDispatcher(IFingerprintService fingerprintService, Object lock) { public FingerprintGestureDispatcher(IFingerprintService fingerprintService, Resources resources, Object lock) { mFingerprintService = fingerprintService; mHardwareSupportsGestures = resources.getBoolean( com.android.internal.R.bool.config_fingerprintSupportsGestures); mLock = lock; mHandler = new Handler(this); } Loading @@ -61,9 +66,11 @@ public class FingerprintGestureDispatcher extends IFingerprintClientActiveCallba * @param lock A lock to use when managing internal state * @param handler A handler to use internally. Used for testing. */ public FingerprintGestureDispatcher(IFingerprintService fingerprintService, Object lock, Handler handler) { public FingerprintGestureDispatcher(IFingerprintService fingerprintService, Resources resources, Object lock, Handler handler) { mFingerprintService = fingerprintService; mHardwareSupportsGestures = resources.getBoolean( com.android.internal.R.bool.config_fingerprintSupportsGestures); mLock = lock; mHandler = handler; } Loading @@ -74,6 +81,8 @@ public class FingerprintGestureDispatcher extends IFingerprintClientActiveCallba * @param clientList The list of potential clients. */ public void updateClientList(List<? extends FingerprintGestureClient> clientList) { if (!mHardwareSupportsGestures) return; synchronized (mLock) { mCapturingClients.clear(); for (int i = 0; i < clientList.size(); i++) { Loading @@ -96,6 +105,8 @@ public class FingerprintGestureDispatcher extends IFingerprintClientActiveCallba @Override public void onClientActiveChanged(boolean nonGestureFingerprintClientActive) { if (!mHardwareSupportsGestures) return; synchronized (mLock) { for (int i = 0; i < mCapturingClients.size(); i++) { mCapturingClients.get(i).onFingerprintGestureDetectionActiveChanged( Loading @@ -105,6 +116,8 @@ public class FingerprintGestureDispatcher extends IFingerprintClientActiveCallba } public boolean isFingerprintGestureDetectionAvailable() { if (!mHardwareSupportsGestures) return false; long identity = Binder.clearCallingIdentity(); try { return !mFingerprintService.isClientActive(); Loading