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());
    
    
  • 相关阅读:
    弹出新窗口
    网页布局之二 二列和三列
    JavaScript prototype
    window和linux开启动顺序
    ASP.net和javascript结合产生乱码的问题
    网页布局之一:XHTML CSS基础知识
    Study Android Chapter 1 Reading
    C++文件的读取
    心智模式
    各种排序算法的稳定性和时间复杂度小结
  • 原文地址:https://www.cnblogs.com/AleiCui/p/12810821.html
Copyright © 2011-2022 走看看