需求描述:当指纹移植包直接移植到Android系统里的时候满足不了一些特殊需求(指纹个数的限制,指纹解锁要跟其他方式(图案,密码)绑定),这个时候需要用apk来操控指纹绕过一些限制。apk直接调用指纹供应商提供的NDK接口(供应商提供NDK是收费的。动态库需要将自己的apk包名给到供应商让供应商帮忙编译出来)。NDK提供的指纹功能大概有注册指纹,删除指纹,存储指纹,熄屏休眠解锁等。apk来控制指纹的时候,Android系统需要对已经移植成功的指纹模块修改两个地方。
需要对指纹移植包做的修改如下:

  1. 驱动代码的修改
kernel-4.9/drivers/input/fingerprint/microarray_fp/madev.c@@ -493,7 +493,7 @@ unsigned long kernel_memesize = 0;
int mas_mmap(struct file *filp, struct vm_area_struct *vma){unsigned long page;if ( !kernel_memaddr ) {
-kernel_memaddr = kmalloc(128*1024, GFP_KERNEL);
+kernel_memaddr = kmalloc(1024*1024, GFP_KERNEL);    //  内存分配不够,会导致系统崩溃重启if( !kernel_memaddr ) { return -1; }

2.因为apk操作指纹的话会在apk的源码里引入动态库,所以Android系统里早先移植好的动态库需要删除掉,不然就冲突了导致apk操作指纹失败。
指纹动态库的编译文件修改(64位系统就不编译64位指纹动态库,32位系统就不编译32位指纹动态库。因为我修改的Android系统是32位的,所以把对应的32位动态库编译规则都给删除掉。修改完编译的时候需要将out目录下先前生成的指纹.so文件给删除掉)

vendor/microarrayfp/mafp.mk
+++ b/vendor/microarrayfp/mafp.mk
@@ -34,9 +34,9 @@ DEVICE_MANIFEST_FILE += $(MY_DEVICE_ROOTDIR)/fingerprint_manifest.xml#copy so libifeq ($(strip $(MICROTRUST_TEE_SUPPORT)), yes)PRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/microtrust/lib/libfprint-x32.so:$(TARGET_COPY_OUT_VENDOR)/lib/libfprint-x32.so
-PRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/microtrust/lib/hw/fingerprint.default.so:$(TARGET_COPY_OUT_VENDOR)/lib/hw/fingerpri
nt.default.so
-PRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/microtrust/lib/hw/microarray.default.so:$(TARGET_COPY_OUT_VENDOR)/lib/hw/microarray
.fingerprint.default.so
-PRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/microtrust/lib/hw/mafp_factory.default.so:$(TARGET_COPY_OUT_VENDOR)/lib/hw/mafp_fac
tory.default.so
+
+
+PRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/microtrust/lib64/libfprint-x64.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libfprint-x64.soPRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/microtrust/lib64/hw/fingerprint.default.so:$(TARGET_COPY_OUT_VENDOR)/lib64/hw/fingerpri
nt.default.soPRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/microtrust/lib64/hw/microarray.default.so:$(TARGET_COPY_OUT_VENDOR)/lib64/hw/microarray
.fingerprint.default.so
@@ -45,9 +45,9 @@ PRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/microtrust/thh/edcf939535189elseifeq ($(strip $(TRUSTKERNEL_TEE_SUPPORT)), yes)PRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/trustkernel/lib/libfprint-x32.so:$(TARGET_COPY_OUT_VENDOR)/lib/libfprint-x32.so
-PRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/trustkernel/lib/hw/fingerprint.default.so:$(TARGET_COPY_OUT_VENDOR)/lib/hw/fingerpr
int.default.so
-PRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/trustkernel/lib/hw/microarray.default.so:$(TARGET_COPY_OUT_VENDOR)/lib/hw/microarra
y.fingerprint.default.so
-PRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/trustkernel/lib/hw/mafp_factory.default.so:$(TARGET_COPY_OUT_VENDOR)/lib/hw/mafp_fa
ctory.default.so
+
+
+PRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/trustkernel/lib64/libfprint-x64.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libfprint-x64.soPRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/trustkernel/lib64/hw/fingerprint.default.so:$(TARGET_COPY_OUT_VENDOR)/lib64/hw/fingerpr
int.default.soPRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/trustkernel/lib64/hw/microarray.default.so:$(TARGET_COPY_OUT_VENDOR)/lib64/hw/microarra
y.fingerprint.default.so
@@ -56,9 +56,9 @@ PRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/trustkernel/app/t6/edcf9395-elsePRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/ree/lib/libfprint-x32.so:$(TARGET_COPY_OUT_VENDOR)/lib/libfprint-x32.soPRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/ree/lib/libma-fpservice.so:$(TARGET_COPY_OUT_VENDOR)/lib/libma-fpservice.so
-PRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/ree/lib/hw/fingerprint.default.so:$(TARGET_COPY_OUT_VENDOR)/lib/hw/fingerprint.defa
ult.so
-PRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/ree/lib/hw/microarray.default.so:$(TARGET_COPY_OUT_VENDOR)/lib/hw/microarray.finger
print.default.so
-PRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/ree/lib/hw/mafp_factory.default.so:$(TARGET_COPY_OUT_VENDOR)/lib/hw/mafp_factory.de
fault.so
+
+
+PRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/ree/lib64/libfprint-x64.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libfprint-x64.soPRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/ree/lib64/libma-fpservice.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libma-fpservice.soPRODUCT_COPY_FILES += $(MY_DEVICE_ROOTDIR)/prebuilt/ree/lib64/hw/fingerprint.default.so:$(TARGET_COPY_OUT_VENDOR)/lib64/hw/fingerprint.defa
ult.so

3.工厂测试app的修改
完成上述的1,2两步后,就没办法在工模里直接调用Android官方的指纹api来对指纹模块做硬件通信测试。
由于指纹模块使用spi协议进行通信,可以使用jni的方式对指纹节点进行读写寄存器来检测硬件是否通信正常。这部分代码可以找供应商提供

使用apk来控制指纹(指纹型号迈瑞微 ECS120)相关推荐

  1. Game On Serverless:SAE 助力广州小迈提升微服务研发效能

    作者:洛浩 小迈于 2015 年 1 月成立,是一家致力以数字化领先为优势,实现业务高质量自增长的移动互联网科技公司.始终坚持以用户价值为中心,以数据为驱动,为用户开发丰富的工具应用.休闲游戏.益智. ...

  2. 【招聘(深圳)】迈瑞招.NET 开发Leader和PM

    应用开发管理(开发leader) 工作职责: 1.负责应用开发小组管理: 2.协助项目经理制定项目计划和控制项目进度: 3.评估用户需求,设计解决方案.系统功能,并带领开发小组进行交付: 4.对开发过 ...

  3. mindray心电监护仪使用说明_迈瑞心电监护仪说明书

    迈瑞心电监护仪常用问题及报警处理_基础医学_医药卫生_专业资料.精品文档 迈瑞心电监护仪常用问题及报警处理 一. 打开监护仪的电源,需按住该按键 2 秒钟以上.(...... 监护仪的简单使用说明 A ...

  4. 橙汁的面试经验汇总(百度、平安壹钱包、诺瓦、快手、bigo、海信、奇安信、小米、迈瑞医疗、顺丰、网易互娱、多益游戏、京东、穆迪)

    百度 二面 1.首先1到2分钟进行一个自我介绍 2.然后介绍一下你最拿手的项目 3.介绍完项目之后,因为涉及到数据库和监控问道如下问题 4.为什么选择zabbix 5.如果你的项目商用,你觉得哪里还可 ...

  5. 2G金士顿U盘修复工具迈科微MW6208E/8208_v1.2.0.8

    不知道山寨金士顿U盘在各地有没有区别,我在成都拿到的山寨金士顿2GU盘.使用的是MW6208E(检测出来的不一定准确,我是直接打开U盘看主控芯片型号)的主控. 量产工具识别FALSH为TC58DVG0 ...

  6. 腾讯 AI Lab 联手迈瑞医疗,助力血液病筛查与体外诊断

    感谢阅读腾讯AI Lab微信号第118篇文章.本文将介绍 「AI+医疗/医药」助力血液病筛查与体外诊断. 2021年1月29日深圳 - 腾讯 AI Lab 宣布与深圳迈瑞生物医疗电子股份有限公司(以下 ...

  7. 迈瑞BC5800出图

    迈瑞BC的血球图数据采用Base64串传输.RBC和PLT仪器传输的是Base64串的比特流,把他转换成比特数组,直接当float为Y坐标画图.DIFF和Baso就是标准的图片Base64串格式(仪器 ...

  8. IVD首个AI产品进入创新通道,腾讯AI Lab联手迈瑞引领智慧医疗

    感谢阅读腾讯AI Lab微信号第137篇文章.本文将介绍腾讯AI Lab与迈瑞医疗共研的AI细胞形态学分析仪进入创新医疗器械特别审查程序. 3月16日,迈瑞和腾讯Al Lab共同研发的「全自动外周血细 ...

  9. mindray心电监护仪使用说明_迈瑞心电监护仪操作流程

    2012.8.10 [ 评估 ] 1 .病人的年龄.病情.知识水平.合作程度:胸部皮肤情况. 2 .迈瑞心电监护仪性能良好. [ 准备 ] 护士:着装整洁→洗手→戴口罩. 物品:治疗车:治疗盘内电极片 ...

最新文章

  1. 响应式编程RxJava (一)
  2. 自定义注解与validation结合使用案例
  3. 前端学习(1436):vue特点
  4. JAVA中神奇的双刃剑--Unsafe
  5. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 角色权限的配置页面改进优化...
  6. anaconda和python都有_Anaconda和python有什么区别-Anaconda和python区别介绍
  7. 自己写的.Net(C#)代码×××
  8. CMake简介及使用实例
  9. 9.iterm 颜色
  10. android集成建行龙支付,龙支付及建行信用卡分期支付SDK
  11. 美国交通安全管理局出台更加严格机场安全检查新规
  12. 葡萄酒逻辑回归分类(scala实现)
  13. Zabbix 5.0 配置短信报警
  14. 教程:微信公众号的链接如何提取出来?非常简单!
  15. cmake:foreach、endforeach
  16. 卡尔曼滤波之观测值的似然估计
  17. Android仿京东、淘宝商品详情页上拉查看更多详情
  18. bugku 告诉你个秘密(ISCCCTF) (636A56355279427363446C4A49454A7154534230526D6843 56445A31614342354E326C4B494)
  19. 华为魔术2手机拆机图解_Honor Magic2拆解图形教程
  20. Firebird中文社区已开通

热门文章

  1. 2022鹏业安装算量软件10大常见问题整理
  2. 如何有效的避免空指针异常
  3. Lingo 简单的背包问题
  4. 《禅与摩托车维修艺术》读后感
  5. 禅与摩托车维修艺术摘录
  6. 【数分】7. AB实验篇
  7. 局域网SDN技术硬核内幕 二 云网CP的日常恩爱——硬件VXLAN转发平面
  8. ​华为麒麟1020首曝光;全球首款 5G 扩展现实平台发布;英特尔将开拓“全硅”市场;京东周伯文掌舵,申元庆出局……...
  9. mysql mysqlhotcopy_MySQL 备份和恢复 (mysqlhotcopy)
  10. 泰坦尼克号生存者预测(细节篇)