zoukankan      html  css  js  c++  java
  • Android Q 指纹解锁流程

    Android Q 指纹解锁流程

    // Authentation Finger Schedule: (close Screen, Authentation with finger(Success))
            // PhoneWindowManager
            mKeyguardDelegate.onStartedGoingToSleep(why);
            // KeyguardServiceDelegate
            mKeyguardService.onStartedGoingToSleep(why);
            // KeyguardServiceWrapper
            mService.onStartedGoingToSleep(reason);
            // KeyguardService
            mKeyguardViewMediator.onStartedGoingToSleep(reason);
            // KeyguardViewMediator
            KeyguardUpdateMonitor.getInstance(mContext).dispatchStartedGoingToSleep(why);
            // KeyguardUpdateMonitor#
            handleStartedGoingToSleep(msg.arg1);
            updateBiometricListeningState();
            updateFingerprintListeningState()
            startListeningForFingerprint()
            mFpm.authenticate(null, mFingerprintCancelSignal, 0, mFingerprintAuthenticationCallback,null, userId);
                // FingerprintManager
                -> authenticate(
                    -> (IFingerprintService)mService.authenticate(mToken, sessionId, userId, mServiceReceiver, flags,mContext.getOpPackageName());
                    -> // FingerprintService# private final class FingerprintServiceWrapper extends IFingerprintService.Stub {
                        -> public void authenticate(final IBinder token, final long opId, final int groupId,
                              -> authenticateInternal(
                                    -> startAuthentication(
                                           startClient(client, true /* initiatedByClient */);
                                               // AuthenticationClient#start()
                                               final int result = getDaemonWrapper().authenticate(mOpId, getGroupId());
                                                   BiometricServiceBase#protected interface DaemonWrapper { -> int authenticate(long operationId, int groupId) throws RemoteException;
                                                       IBiometricsFingerprint daemon = getFingerprintDaemon();
                                                           IBiometricsFingerprint daemon = getFingerprintDaemon();
                                                               mHalDeviceId = mDaemon.setNotify(mDaemonCallback);
                                                                   public void onAuthenticated(final long deviceId, final int fingerId, final int groupId,
                                                                       FingerprintService.super.handleAuthenticated(fp, token);
                                                                           client.onAuthenticated(identifier, authenticated, token)
                                                                           // AuthenticationClient#
                                                                               (BiometricServiceBase.ServiceListener)listener.onAuthenticationSucceeded(getHalDeviceId(), identifier, getTargetUserId());
                                                                               Or: listener.onAuthenticationFailed(getHalDeviceId());
                                                                                   // FingerprintService#
                                                                                   mFingerprintServiceReceiver.onAuthenticationSucceeded(deviceId, (Fingerprint) biometric, userId);
                                                                                       //FingerprintManager#
                                                                                       mHandler.obtainMessage(MSG_AUTHENTICATION_SUCCEEDED, userId, 0, fp).sendToTarget();
                                                                                           sendAuthenticatedSucceeded((Fingerprint) msg.obj, msg.arg1 /* userId */);
                                                                                               mAuthenticationCallback.onAuthenticationSucceeded(result);
                                                                                                   // KeyguardUpdateMonitor
                                                                                                   handleFingerprintAuthenticated(result.getUserId());
    
    
  • 相关阅读:
    linux内存管理之数据结构必备
    Script快速入门与查表
    Bash编程linux诸多熟记命令
    NandFlash/NorFlash源码模型和驱动编写方法
    linux内存管理之uboot第一步
    《Magus Night》
    《P2447 [SDOI2010]外星千足虫》
    DFS 树的理解
    《2021CCPC桂林》
    《GRAPH》
  • 原文地址:https://www.cnblogs.com/AleiCui/p/12810821.html
Copyright © 2011-2022 走看看