基于Dragonboard 410c的指纹锁(七)

2024-03-09 10:38
文章标签 指纹锁 dragonboard 410c

本文主要是介绍基于Dragonboard 410c的指纹锁(七),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       继续研究fingerprint在Android中的添加。上篇中HAL层的实现算是找到了,但是不知道是不是真的是这个,也不知道有没有被应用,既然驱动没有,那就往上看吧。

      开机时会开启各种服务,我们从开始启动指纹识别的service开始。

     路径:

    framework/base/services/java/com/android/server/SystemServer.java

   

private void run() {

 ........

startOtherServices();

..........

}


private void startOtherServices() {

..............

//这部分代码在Android M上是没有的,但是Android N上有,所以就加在这了。

if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) {                                                                                                        
          mSystemServiceManager.startService(FingerprintService.class);
       }
............

}

这里调用SystemServiceManager的startService来启动指纹识别服务。

路径:

frameworks/base/services/core/java/com/android/server/SystemServiceManager.java

public <T extends SystemService> T startService(Class<T> serviceClass) {

..............

 try {                                   
            service.onStart();                  
         } catch (RuntimeException ex) {         
             throw new RuntimeException("Failed to start service " + name
                     + ": onStart threw an exception", ex);
         }                                       
         return service;                         

     }

在FingerprintService.java中调用了onStart()

路径:

frameworks/base/services/core/java/com/android/server/fingerprint/FingerprintService.java

public void onStart() {                                                                                                                                                                        
         publishBinderService(Context.FINGERPRINT_SERVICE, new FingerprintServiceWrapper());
         IFingerprintDaemon daemon = getFingerprintDaemon();
         if (DEBUG) Slog.v(TAG, "Fingerprint HAL id: " + mHalDeviceId);
         listenForUserSwitches();
     }

接下来,先看看publishBinderService的实现,

路径:

frameworks/base/services/core/java/com/android/server/SystemService.java

protected final void publishBinderService(String name, IBinder service) {
         publishBinderService(name, service, false);
     }

protected final void publishBinderService(String name, IBinder service,
            boolean allowIsolated) {
        ServiceManager.addService(name, service, allowIsolated);                                                                                                                                    
    }

可以看到在ServiceManager.java中调用了addService

路径:

frameworks/base/core/java/android/os/ServiceManager.java

 public static void addService(String name, IBinder service, boolean allowIsolated) {
        try {                  
             getIServiceManager().addService(name, service, allowIsolated);
         } catch (RemoteException e) {
            Log.e(TAG, "error in addService", e);
         }                      
    }

可以看到到这里真正的将指纹识别的服务加进去了,今天先到这,后面在继续。


这篇关于基于Dragonboard 410c的指纹锁(七)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/790426

相关文章

【嵌入式DIY实例】-指纹锁

DIY指纹锁 文章目录 DIY指纹锁1、硬件准备1.1 R307指纹传感器模介绍2、硬件接线原理图3、代码实现 在这个项目中,我们将使用 Arduino 构建一个指纹门锁安全系统。 该系统可用于我们的家庭、办公室等提供安全保障。 我们还可以用它来打开门,只需将手指放在门锁上即可。 安全是许多房主的首要任务。 指纹门锁安全系统是为您的家添加额外安全层的好方法。 该门锁系统使用

MQTT协议的智能家居之指纹锁

基于之前的智能家居项目,这次添加了指纹锁设备的设计,硬件端主要使用0.96oled显示屏,ESP8266-NODEMCU,BYJ48步进电机以及配套驱动板,AS608指纹模块。 整个项目除了硬件端,还接入了我自己的服务器,可通过APP进行云端远程操控,对指纹锁进行模式设置和指纹设置。 装置器件图放在下面,以供参考: 附上演示视频: 智能家居-基于mqtt协议的APP控制指纹锁装置

【嵌入式实践】【芝麻】【硬件篇-1】从0到1给电动车添加指纹锁:电源电路调研及原理讲解

0. 前言         该项目是基于stm32F103和指纹模块做了一个通过指纹锁控制电动车的小工具。支持添加指纹、删除指纹,电动车进入P档等待时计时,计时超过5min则自动锁车,计时过程中按刹车可中断P档状态,同时中断锁车计时。改项目我称之为“芝麻”,取自芝麻开门(明明是车,哪里来的“门”,因为插钥匙的地方被修车师傅称之为“电门锁”)。 专栏目录:快速导航 视频地址:b站链接 软件、

基于Dragonboard 410c的燃气烟雾检测器(五)

经过一段时间的努力终于将燃气烟雾检测器做完了,现在简单描述一下其工作原理和操作过程。      首先燃气烟雾检测器肯定是放到容易发生有毒可燃气体泄漏和容易发生火灾的地方,这里我们就用一个打火机来模拟气体泄漏。      这个装置是通过app控制的,当打开app后,我们要进行一下复位打开设备,此时会看到温湿度传感器检测到的数据,当温度过高或者比较干燥时会温馨提示注意防火。

Dragonboard 410c开发过程中遇到的节点读写问题

前段时间基于Dragonboard 410c做了一个小东西,虽然比较简单但是遇到一个比较烦躁的问题,自己写了一个驱动程序,创建了几个文件节点,然后又在hal层写了一个小程序去对节点进行操作,但是问题来了,打开节点的时候没有问题,读取数据的时候也没有报错,唯独在写数据的时候报错了,让人很抓狂,接下来一起看看吧。       情况描述:       自己创建了pwm节点,但是hal层读

于Dragonboard 410c的智能照明系统(二)

在上篇blog中,我们已经准备好做这个小设计的物品了,现在到了真正开始做的时候了,其主要部分就是aw2013这颗芯片的控制,通过它就可以随意的控制灯了,但是,总感觉这颗芯片用在这里明显制约了这个照明系统,因为aw2013是用来控制led灯的,所以亮度上总感觉有点不够,不过后面我们可以慢慢完善,先来看看驱动代码吧。 #include <linux/leds-aw2013.h> #include <

基于Dragonboard 410c的燃气烟雾检测器(四)

前面已经简单的将燃气烟雾检测模块MQ-2和温湿度检测模块dht11的底层驱动实现了,下面再加一个简单的红灯的驱动,用于报警: #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/slab.h> #include <linux/interrupt.h>

基于Dragonboard 410c的燃气烟雾检测器(三)

燃气烟雾检测模块MQ-2在上篇博客中已经写好了,接下来是温湿度检测模块dht11了,模块信息在前面已经介绍过了,这里就不再赘述了,直接看程序: #include <linux/kernel.h> #include <linux/module.h> #include <linux/workqueue.h> #include <linux/slab.h> #include <linux/

基于Dragonboard 410c的燃气烟雾检测器(二)

前面已经将做一个燃气烟雾检测器需要用的主要模块介绍了一下,准备好这些模块后,就是硬件连接了,先说一下MQ-2这个模块,它有AO(模拟信号)输出和DO(TTL信号)输出,这里我是接的DO,接下来就是软件上如何去实现了,下面来看一下具体过程:   首先来看一下燃气烟雾检测模块MQ-2的底层驱动程序: #include <linux/module.h> #include <linux/kern

基于Dragonboard 410c的燃气烟雾检测器(一)

火是大家再熟悉不过的东西了,它可以在寒冷时给你温暖,在黑暗中给你光明,在饥饿时有热腾腾的食物,让人类摆脱了茹毛饮血的生活,火的作用和好处也是数不胜数,但是凡事都有两面性,一旦发生火灾,后果不堪设想,所以,最近想到用410c做一个简单的燃气烟雾检测器,让我们一起来了解一下吧。   其主要功能和模块如下:  (1)燃气烟雾检测模块MQ-2   首先说一下为什么选用这个模块,因为大部分家庭都至