Loading core/java/android/hardware/fingerprint/FingerprintManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -686,7 +686,7 @@ public class FingerprintManager { private void sendAuthenticatedResult(Fingerprint fp) { if (mAuthenticationCallback != null) { if (fp.getFingerId() == 0 && fp.getGroupId() == 0) { if (fp.getFingerId() == 0) { // Fingerprint template valid but doesn't match one in database mAuthenticationCallback.onAuthenticationFailed(); } else { Loading packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +6 −48 Original line number Diff line number Diff line Loading @@ -100,7 +100,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { private static final int MSG_SIM_STATE_CHANGE = 304; private static final int MSG_RINGER_MODE_CHANGED = 305; private static final int MSG_PHONE_STATE_CHANGED = 306; private static final int MSG_CLOCK_VISIBILITY_CHANGED = 307; private static final int MSG_DEVICE_PROVISIONED = 308; private static final int MSG_DPM_STATE_CHANGED = 309; private static final int MSG_USER_SWITCHING = 310; Loading Loading @@ -172,9 +171,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { case MSG_PHONE_STATE_CHANGED: handlePhoneStateChanged((String) msg.obj); break; case MSG_CLOCK_VISIBILITY_CHANGED: handleClockVisibilityChanged(); break; case MSG_DEVICE_PROVISIONED: handleDeviceProvisioned(); break; Loading Loading @@ -756,15 +752,11 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { public void onUserSwitching(int newUserId, IRemoteCallback reply) { mHandler.sendMessage(mHandler.obtainMessage(MSG_USER_SWITCHING, newUserId, 0, reply)); mSwitchingUser = true; updateFingerprintListeningState(); } @Override public void onUserSwitchComplete(int newUserId) throws RemoteException { mHandler.sendMessage(mHandler.obtainMessage(MSG_USER_SWITCH_COMPLETE, newUserId, 0)); mSwitchingUser = false; updateFingerprintListeningState(); } @Override public void onForegroundProfileSwitch(int newProfileId) { Loading Loading @@ -869,6 +861,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { * Handle {@link #MSG_USER_SWITCHING} */ protected void handleUserSwitching(int userId, IRemoteCallback reply) { mSwitchingUser = true; updateFingerprintListeningState(); for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { Loading @@ -885,6 +880,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { * Handle {@link #MSG_USER_SWITCH_COMPLETE} */ protected void handleUserSwitchComplete(int userId) { mSwitchingUser = false; updateFingerprintListeningState(); for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { Loading Loading @@ -1043,19 +1041,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } } /** * Handle {@link #MSG_CLOCK_VISIBILITY_CHANGED} */ private void handleClockVisibilityChanged() { if (DEBUG) Log.d(TAG, "handleClockVisibilityChanged()"); for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { cb.onClockVisibilityChanged(); } } } /** * Handle {@link #MSG_KEYGUARD_VISIBILITY_CHANGED} */ Loading Loading @@ -1100,21 +1085,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } } public boolean isKeyguardVisible() { return mKeyguardIsVisible; } /** * @return if the keyguard is currently in bouncer mode. */ public boolean isKeyguardBouncer() { return mBouncer; } public boolean isSwitchingUser() { return mSwitchingUser; } private static boolean isBatteryUpdateInteresting(BatteryStatus old, BatteryStatus current) { final boolean nowPluggedIn = current.isPluggedIn(); final boolean wasPluggedIn = old.isPluggedIn(); Loading @@ -1139,13 +1109,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { return false; } /** * @return The default plmn (no service) */ private CharSequence getDefaultPlmn() { return mContext.getResources().getText(R.string.keyguard_carrier_default); } /** * Remove the given observer's callback. * Loading Loading @@ -1211,11 +1174,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { message.sendToTarget(); } public void reportClockVisible(boolean visible) { mClockVisible = visible; mHandler.obtainMessage(MSG_CLOCK_VISIBILITY_CHANGED).sendToTarget(); } /** * Report that the user successfully entered the SIM PIN or PUK/SIM PIN so we * have the information earlier than waiting for the intent Loading services/core/java/com/android/server/fingerprint/FingerprintService.java +42 −4 Original line number Diff line number Diff line Loading @@ -17,13 +17,16 @@ package com.android.server.fingerprint; import android.app.ActivityManager; import android.app.ActivityManagerNative; import android.app.AppOpsManager; import android.app.IUserSwitchObserver; import android.content.ContentResolver; import android.content.Context; import android.os.Binder; import android.os.Environment; import android.os.Handler; import android.os.IBinder; import android.os.IRemoteCallback; import android.os.Looper; import android.os.MessageQueue; import android.os.RemoteException; Loading Loading @@ -62,6 +65,7 @@ public class FingerprintService extends SystemService { private final AppOpsManager mAppOps; private static final int MSG_NOTIFY = 10; private static final int MSG_USER_SWITCHING = 11; private static final int ENROLLMENT_TIMEOUT_MS = 60 * 1000; // 1 minute Loading @@ -84,6 +88,10 @@ public class FingerprintService extends SystemService { handleNotify(m.type, m.arg1, m.arg2, m.arg3); break; case MSG_USER_SWITCHING: handleUserSwitching(msg.arg1); break; default: Slog.w(TAG, "Unknown message:" + msg.what); } Loading Loading @@ -166,6 +174,10 @@ public class FingerprintService extends SystemService { } } void handleUserSwitching(int userId) { updateActiveGroup(userId); } /* * Dispatch notify events to clients. * Loading Loading @@ -615,11 +627,37 @@ public class FingerprintService extends SystemService { publishBinderService(Context.FINGERPRINT_SERVICE, new FingerprintServiceWrapper()); mHalDeviceId = nativeOpenHal(); if (mHalDeviceId != 0) { int userId = ActivityManager.getCurrentUser(); File path = Environment.getUserSystemDirectory(userId); nativeSetActiveGroup(0, path.getAbsolutePath().getBytes()); updateActiveGroup(ActivityManager.getCurrentUser()); } if (DEBUG) Slog.v(TAG, "Fingerprint HAL id: " + mHalDeviceId); listenForUserSwitches(); } private void updateActiveGroup(int userId) { File path = Environment.getUserSystemDirectory(userId); nativeSetActiveGroup(userId, path.getAbsolutePath().getBytes()); } private void listenForUserSwitches() { try { ActivityManagerNative.getDefault().registerUserSwitchObserver( new IUserSwitchObserver.Stub() { @Override public void onUserSwitching(int newUserId, IRemoteCallback reply) { mHandler.obtainMessage(MSG_USER_SWITCHING, newUserId, 0 /* unused */) .sendToTarget(); } @Override public void onUserSwitchComplete(int newUserId) throws RemoteException { // Ignore. } @Override public void onForegroundProfileSwitch(int newProfileId) { // Ignore. } }); } catch (RemoteException e) { Slog.w(TAG, "Failed to listen for user switching event" ,e); } } } Loading
core/java/android/hardware/fingerprint/FingerprintManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -686,7 +686,7 @@ public class FingerprintManager { private void sendAuthenticatedResult(Fingerprint fp) { if (mAuthenticationCallback != null) { if (fp.getFingerId() == 0 && fp.getGroupId() == 0) { if (fp.getFingerId() == 0) { // Fingerprint template valid but doesn't match one in database mAuthenticationCallback.onAuthenticationFailed(); } else { Loading
packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +6 −48 Original line number Diff line number Diff line Loading @@ -100,7 +100,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { private static final int MSG_SIM_STATE_CHANGE = 304; private static final int MSG_RINGER_MODE_CHANGED = 305; private static final int MSG_PHONE_STATE_CHANGED = 306; private static final int MSG_CLOCK_VISIBILITY_CHANGED = 307; private static final int MSG_DEVICE_PROVISIONED = 308; private static final int MSG_DPM_STATE_CHANGED = 309; private static final int MSG_USER_SWITCHING = 310; Loading Loading @@ -172,9 +171,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { case MSG_PHONE_STATE_CHANGED: handlePhoneStateChanged((String) msg.obj); break; case MSG_CLOCK_VISIBILITY_CHANGED: handleClockVisibilityChanged(); break; case MSG_DEVICE_PROVISIONED: handleDeviceProvisioned(); break; Loading Loading @@ -756,15 +752,11 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { public void onUserSwitching(int newUserId, IRemoteCallback reply) { mHandler.sendMessage(mHandler.obtainMessage(MSG_USER_SWITCHING, newUserId, 0, reply)); mSwitchingUser = true; updateFingerprintListeningState(); } @Override public void onUserSwitchComplete(int newUserId) throws RemoteException { mHandler.sendMessage(mHandler.obtainMessage(MSG_USER_SWITCH_COMPLETE, newUserId, 0)); mSwitchingUser = false; updateFingerprintListeningState(); } @Override public void onForegroundProfileSwitch(int newProfileId) { Loading Loading @@ -869,6 +861,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { * Handle {@link #MSG_USER_SWITCHING} */ protected void handleUserSwitching(int userId, IRemoteCallback reply) { mSwitchingUser = true; updateFingerprintListeningState(); for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { Loading @@ -885,6 +880,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { * Handle {@link #MSG_USER_SWITCH_COMPLETE} */ protected void handleUserSwitchComplete(int userId) { mSwitchingUser = false; updateFingerprintListeningState(); for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { Loading Loading @@ -1043,19 +1041,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } } /** * Handle {@link #MSG_CLOCK_VISIBILITY_CHANGED} */ private void handleClockVisibilityChanged() { if (DEBUG) Log.d(TAG, "handleClockVisibilityChanged()"); for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { cb.onClockVisibilityChanged(); } } } /** * Handle {@link #MSG_KEYGUARD_VISIBILITY_CHANGED} */ Loading Loading @@ -1100,21 +1085,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } } public boolean isKeyguardVisible() { return mKeyguardIsVisible; } /** * @return if the keyguard is currently in bouncer mode. */ public boolean isKeyguardBouncer() { return mBouncer; } public boolean isSwitchingUser() { return mSwitchingUser; } private static boolean isBatteryUpdateInteresting(BatteryStatus old, BatteryStatus current) { final boolean nowPluggedIn = current.isPluggedIn(); final boolean wasPluggedIn = old.isPluggedIn(); Loading @@ -1139,13 +1109,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { return false; } /** * @return The default plmn (no service) */ private CharSequence getDefaultPlmn() { return mContext.getResources().getText(R.string.keyguard_carrier_default); } /** * Remove the given observer's callback. * Loading Loading @@ -1211,11 +1174,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { message.sendToTarget(); } public void reportClockVisible(boolean visible) { mClockVisible = visible; mHandler.obtainMessage(MSG_CLOCK_VISIBILITY_CHANGED).sendToTarget(); } /** * Report that the user successfully entered the SIM PIN or PUK/SIM PIN so we * have the information earlier than waiting for the intent Loading
services/core/java/com/android/server/fingerprint/FingerprintService.java +42 −4 Original line number Diff line number Diff line Loading @@ -17,13 +17,16 @@ package com.android.server.fingerprint; import android.app.ActivityManager; import android.app.ActivityManagerNative; import android.app.AppOpsManager; import android.app.IUserSwitchObserver; import android.content.ContentResolver; import android.content.Context; import android.os.Binder; import android.os.Environment; import android.os.Handler; import android.os.IBinder; import android.os.IRemoteCallback; import android.os.Looper; import android.os.MessageQueue; import android.os.RemoteException; Loading Loading @@ -62,6 +65,7 @@ public class FingerprintService extends SystemService { private final AppOpsManager mAppOps; private static final int MSG_NOTIFY = 10; private static final int MSG_USER_SWITCHING = 11; private static final int ENROLLMENT_TIMEOUT_MS = 60 * 1000; // 1 minute Loading @@ -84,6 +88,10 @@ public class FingerprintService extends SystemService { handleNotify(m.type, m.arg1, m.arg2, m.arg3); break; case MSG_USER_SWITCHING: handleUserSwitching(msg.arg1); break; default: Slog.w(TAG, "Unknown message:" + msg.what); } Loading Loading @@ -166,6 +174,10 @@ public class FingerprintService extends SystemService { } } void handleUserSwitching(int userId) { updateActiveGroup(userId); } /* * Dispatch notify events to clients. * Loading Loading @@ -615,11 +627,37 @@ public class FingerprintService extends SystemService { publishBinderService(Context.FINGERPRINT_SERVICE, new FingerprintServiceWrapper()); mHalDeviceId = nativeOpenHal(); if (mHalDeviceId != 0) { int userId = ActivityManager.getCurrentUser(); File path = Environment.getUserSystemDirectory(userId); nativeSetActiveGroup(0, path.getAbsolutePath().getBytes()); updateActiveGroup(ActivityManager.getCurrentUser()); } if (DEBUG) Slog.v(TAG, "Fingerprint HAL id: " + mHalDeviceId); listenForUserSwitches(); } private void updateActiveGroup(int userId) { File path = Environment.getUserSystemDirectory(userId); nativeSetActiveGroup(userId, path.getAbsolutePath().getBytes()); } private void listenForUserSwitches() { try { ActivityManagerNative.getDefault().registerUserSwitchObserver( new IUserSwitchObserver.Stub() { @Override public void onUserSwitching(int newUserId, IRemoteCallback reply) { mHandler.obtainMessage(MSG_USER_SWITCHING, newUserId, 0 /* unused */) .sendToTarget(); } @Override public void onUserSwitchComplete(int newUserId) throws RemoteException { // Ignore. } @Override public void onForegroundProfileSwitch(int newProfileId) { // Ignore. } }); } catch (RemoteException e) { Slog.w(TAG, "Failed to listen for user switching event" ,e); } } }