Análisis del proceso del módulo de huellas digitales (2) Proceso de inicialización del marco de huellas digitales

Segundo, proceso de inicialización del marco de huellas dactilares

Cuando se enciende el sistema, se iniciarán varios servicios, incluido FingerprintService. Se puede ver desde el registro de arranque (sys_log.boot) en la siguiente figura:

05-29 10: 37: 57.870869 1127 1127 I SystemServiceManager: Iniciando com.android.server.dreams.DreamManagerService

05-29 10: 37: 57.874643 1127 1127 En SystemServer: StartAssetAtlasService

05-29 10: 37: 57.883240 1127 1127 I SystemServiceManager: Inicio de com.android.server.print.PrintManagerService

05-29 10: 37: 57.910104 1127 1127 I SystemServiceManager: Inicio de com.android.server.restrictions.RestrictionsManagerService

05-29 10: 37: 57.913926 1127 1127 I SystemServiceManager: Inicio de com.android.server.media.MediaSessionService

05-29 10: 37: 57.926584 1127 1127 I SystemServer: StartMediaRouterService

05-29 10: 37: 57.939619 1127 1127 I SystemServiceManager: Inicio de com.android.server.trust.TrustManagerService

05-29 10: 37: 57.952689 1127 1127 I SystemServiceManager: Inicio de com.android.server.fingerprint.FingerprintService

05-29 10: 37: 58.866228 1127 1127 V Servicio de huellas digitales: Identificación de HAL de huellas digitales: 488345235968

05-29 10: 37: 58.867305 1127 1127 I SystemServer: StartBackgroundDexOptService

 

El inicio de FingerprintService se encuentra en el método startOtherService de SystemServer.Java

/ **

* Inicia una bolsa de sorpresas de cosas que aún no se han refactorizado

* y organizado.

* /

privado void startOtherServices () {

   Contexto final contexto = mSystemContext;

   VibratorService vibrator = null;

   IMountService mountService = nulo;

   .......

   // Iniciar FingerprintService

   if (mPackageManager.hasSystemFeature (PackageManager.FEATURE_FINGERPRINT)) {

       mSystemServiceManager.startService (FingerprintService.class);

   }

        ......

Cuando se inicia aquí, FingerprintService se agregará a ServiceManager, como se muestra a continuación:

 

Después de agregar FingerprintService a ServiceManager, al registrar el servicio en el bloque de código estático en SystemServiceRegistry.java, puede obtener el objeto FingerprintService Binder de ServiceManager, que puede construir el objeto FingerprintManager, de modo que la aplicación pueda obtener el objeto FingerprintManager a través del Contexto . Además, el método onStart () de FingerprintService también llamará a getFingerprintDaemon () para completar los siguientes pasos:

// ① Obtener huellas digitales

// ② Registre la función de devolución de llamada mDaemonCallback con fingerprintd

// ③ Llama a la función openhal para obtener huellas

public IFingerprintDaemon getFingerprintDaemon () {

             // ① get fingerprintd

            mDaemon = IFingerprintDaemon.Stub.asInterface (ServiceManager.getService (

            HUELLA DIGITAL));

            mDaemon.asBinder (). linkToDeath (this, 0);

            // ② Registre la función de devolución de llamada mDaemonCallback con fingerprintd

            mDaemon.init (mDaemonCallback);

            // ③ llamar para obtener fingerprintd de openhal función

            mHalDeviceId = mDaemon.openHal ();

            ......

    }

El lado de la aplicación obtiene el FingerprintManager a través del Contexto e implementa la función correspondiente llamando a la interfaz FingerprintManager. El FingerprintManager transfiere los métodos en el FingerprintService. El FingerprintService es responsable de administrar todo el registro, identificar, eliminar huellas digitales y verificar la lógica del proceso. El FingerprintService llama a la interfaz de la huella digital, a través de la huella digital. Comuníquese con la capa FingerprintHal.

31 artículos originales publicados · Me gusta6 · Visitantes más de 10,000

Supongo que te gusta

Origin blog.csdn.net/u012824529/article/details/104498285
Recomendado
Clasificación