一种基于Android系统多模态生物识别终端进行增值应用的方法

文档序号:31224774发布日期:2022-08-23 18:45阅读:159来源:国知局
一种基于Android系统多模态生物识别终端进行增值应用的方法
一种基于android系统多模态生物识别终端进行增值应用的方法
技术领域
1.本发明涉及计算机生物识别系统应用领域,尤其是一种基于android系统多模态生物识别终端进行增值应用的方法。


背景技术:

2.随着人工智能技术的创新与发展,生物识别技术日益成熟起来并逐步走向应用。与此同时,越来越多的应用软件和智能终端设备通过搭载生物识别技术,不断优化服务效率,提升用户体验。
3.然而,面对“戴口罩”“零接触”的疫情常态化防护需求,以及指纹、人脸等生物特征信息频频泄露的个人隐私风险,单一生物识别技术的应用逐渐“乏力”。多模态生物识别技术凭借其准确度高、安全性强以及应用场景广的特点,正不断成为市场主流。
4.目前市场上的多模态生物识别终端一体机是一套集成了智能卡读卡器(接触式或非接触式)、指纹仪、虹膜识别与人脸识别摄像头、条码扫描仪等功能于一体的多模态生物识别集成终端设备。此类产品被广泛应用于许多场景,例如,在各种办公楼、写字楼或者室外场景,常用于出入口门禁管理,并结合门禁访客系统使用,联动闸机门禁,对每个来访人员的真实信息作完整登记,方便记录查询与快速通行,实现快速身份核验,大大提高了工作效率。
5.多模态生物识别技术是为了替代传统人工方式进行实名制验证,实现人脸识别、指纹识别、身份证件识别(包含但不限于学生证、身份证、工作证等)、人证混合识别、虹膜识别、条码识别等功能。其中最具代表性的人脸识别技术就是基于人的脸部特征信息进行身份识别的一种生物识别技术,预先建立人脸识别数据库,存储人脸特征值以及关联人员信息;在实时人脸识别比对中,生成人脸识别图像与库中数据作比对,计算相似度,在人脸识别结果中,对最终相似度进行排序,优先输出相似度高的库中人脸数据,检测出目标人物,从而提高效率,使得认证和识别过程更加精准。
6.现有技术的缺陷和不足:1)无法通过第三方独立app程序实现对多模态识别的二次核验,需要对宿主程序进行侵入式、耦合式的增量开发,单边式解决宿主程序和第三方增值应用程序在编码期、apk运行期以及后续运维期的各种问题,因此扩展性很低,侵入性和耦合化程度高,且开发周期长。
7.2)部分通过插件化进行需求增值的方式,会存在安全隐患问题。
8.3)无法对第三方增值应用进行监控,存在长时间无响应不能回归识别主控程序的问题,当组件通信异常或者第三方增值应用出现运行时异常,容易造成识别主控程序陷入假死状态。
9.针对现有技术存在的缺陷和不足,本发明提出了一种基于android系统多模态生物识别终端进行增值应用的方法,主要解决的问题有:
1)通过宿主系统开放增值接口,支持增值应用完成第三方扩展的增量需求,驱动增值应用具备多模态识别并进行二次核验的能力。
10.2)通过心跳保活服务对第三方增值应用作轮询监测,阻断异常,包含组件通信异常或第三方增值应用运行时异常等,避免多模态识别的前驱识别回调因后继增值应用处理程序长时间无响应而陷入假死状态。
11.3)第三方增值应用的安全校验,实现驱动核验和驱动解密,可以有效防止恶意篡改等安全问题,强有力地保障了用户隐私安全。此外,对第三方增值应用apk安装包重签名,可以阻断非法程序的安装。


技术实现要素:

12.为解决上述技术问题,本发明提出了一种基于android系统多模态生物识别终端进行增值应用的方法,具体包括以下步骤:步骤1.创建并编辑tdl.mi驱动配置文件,上传驱动配置文件至服务器后端,通过云同步驱动配置文件至终端机。在启动识别主控程序后,完成驱动核验和解密。从驱动配置文件中提取action关联操作标识,在执行识别操作后指定需要启动的第三方增值应用组件;步骤2.对第三方增值应用apk安装包重签名,通过本地或云部署第三方增值应用apk安装包到指定设备;步骤3.生物识别终端启动增值应用;步骤4.开启识别主控程序,完成初次识别核验,验证成功后将识别结果数据集封装,跳转至第三方增值应用组件做二次核验。
13.步骤5.通过搭建预定义的“action行为—组件间驱动模式—后继组件回调”的关系链信息库,根据识别主控程序的识别模式来映射到目标组件,实现识别数据传输与回传。
14.其中,步骤1所述的云同步驱动配置文件的方法是,在联网环境下通过云端模式推送驱动配置文件,终端机下载后存放至指定目录。
15.其中,步骤1所述的提取action关联操作标识的方法是,从所述tdl.mi驱动配置文件提取出操作数据集[m,c,p,r];其中,m代表功能识别模式,包含人脸识别、指纹识别、身份证件识别(包含但不限于学生证、身份证、工作证等)、人证混合识别、虹膜识别、条码识别等, 以此来关联第三方增值应用组件的活动域以及跳转时机;c代表组件间有向边集合,包含识别主控程序源组件和目标组件的关系三元组e《s,t,m》,s代表源启动组件,t为第三方目标组件(activity/service/contentprovide),m为心跳保活服务的时间阈值,保证到达触发策略末端节点时将主控界面复位;p代表初次识别核验结果的序列化数据;r代表回传执行模式。
[0016]
进一步地,所述的心跳保活服务的方法是,识别主控程序通过启动守护进程service设置计时器,若计时器累计达最大响应时间t时,将发送广播通知第三方增值应用执行销毁程序,回到主控程序操作界面,并执行程序恢复模块的识别功能;若计时器在达到最大响应时间t之前,收到第三方增值应用的心跳广播,则计时器清零重新计时,完成心跳保活。其目的是阻断异常,包含组件通信异常或第三方增值应用运行时异常等,避免多模态识别的前驱识别回调因后继增值应用处理程序长时间无响应而陷入假死状态。
[0017]
其中,步骤2所述apk安装包重签名的方法是,服务器收到第三方上传的增值应用apk安装包文件,通过构建自动化的重签名脚本;脚本程序将apk安装包重命名,更改源文件后缀名,解压包文件,删除meta-inf目录存放的签名文件,将安全签名证书复制到该目录下,利用 jarsigner执行相关运行命令完成签名程序,通过这一安全签名方式阻断非法程序的安装。
[0018]
其中,步骤2所述本地或云部署安装第三方增值应用的方法为,本地部署通过adb install指令或者u盘安装apk安装包;云部署根据映射表的终端机id,云服务器推送apk安装包到指定终端机,自动安装apk包,在多设备场景下可完成设备远程自动化、差异化部署;apk安装包名与驱动配置文件中的包名字段需保持一致。
[0019]
其中,步骤4所述实现跳转至第三方增值应用组件的方法是:对于多模态识别模式,即人脸识别、指纹识别、身份证件识别、人证混合识别、虹膜识别、条码识别等不同组合识别模式,检索出关系链信息库中对应的跳转执行方法,通过解析action值生成到达所绑定的第三方增值应用程序目标组件的交互序列,同时将初次识别核验的结果数据集序列化转为json格式数据,通过组件对应通信机制来传递数据。
[0020]
进一步地,所述的交互序列,是从activity/service/contentprovide组件中查找对应的交互模板,构造可跳转到目标组件位置的跳转序列、数据传递以及数据回传方法。
[0021]
进一步地,所述生成回传协议,是根据前驱组件—后继组件的导航关系,生成关键连接参数,并将后继节点的回传处理集构建协议要求的格式数据,并在前驱组件中完成响应。
[0022]
其中,步骤5所述的预定义的“action行为—组件间驱动模式—后继组件回调”的关系链信息库的搭建方法是,生成预设的action行为与组件间驱动的映射关系图,生成前驱组件与后继组件的通信方式及数据回传方法。
[0023]
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段, 而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
[0024]
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域技术人员将变得清楚明了。说明书附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。显而易见地,下面描述的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1示出了本发明实施例的增值应用驱动装载流程图;图2示出了本发明实施例的增值应用安装流程图;图3示出了本发明实施例的生物识别终端增值应用整体框架图;图4示出了本发明实施例的生物识别终端执行增值业务二次核验操作流程图;图5示出了本发明实施例的识别数据传输与回传框架图。
具体实施方式
[0025]
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明
的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了便于技术人员更透彻地理解本发明,并且能够将本发明的技术范围完整无误地传达给本领域的技术人员。
[0026]
为便于对本发明实施例的理解,下面将结合附图做进一步的解释说明,且各个附图并不构成对本发明实施例的限定。
[0027]
为了让android系统多模态生物识别终端可以动态扩展第三方增值应用程序,本发明提出了一种基于android系统多模态生物识别终端进行增值应用的方法。
[0028]
具体包括如下步骤:步骤s1: 增值应用驱动装载;创建并编辑tdl.mi驱动配置文件,上传驱动配置文件至服务器后端,通过云同步驱动配置文件至终端机。在启动识别主控程序后,完成驱动核验和解密。从驱动配置文件中提取action关联操作标识,在执行识别操作后指定需要启动的第三方增值应用组件。
[0029]
图1为本发明实施例的增值应用驱动装载流程图,包括了导入驱动配置文件,启动识别主控程序,驱动配置装载三部分,操作顺序依次为:步骤s101:导入驱动配置文件。
[0030]
其中,包含驱动配置文件tdl.mi编写上传和服务器下发驱动配置文件两个步骤。驱动配置文件的编写要素包含组件段、模式段、路径段、时间段、优先级段,其中组件段为具体目标组件类型(activity/service/contentprovide);模式段为具体源识别模式,如人脸识别、指纹识别等映射字段;路径段为增值应用启动组件的类名或uri(统一资源标识符);时间段为第三方增值应用无心跳的最大保活时长;优先级段为不同模式识别的优先级数,当第三方增值应用处于启动处理状态下,另外一种识别模式被触发时,默认优先级下是不响应处理,如果触发识别模式优先级高于当前模式,则中断当前操作,执行高优先级的识别操作。服务器下发驱动配置文件,终端机下载同步文件至指定文件目录,从网络接口中获取md5(密码散列函数)字段在内存或外存中存储。
[0031]
具体地,本发明实施例通过http协议将驱动配置文件tdl.mi上传到文件服务器,计算文件md5值,绑定终端机的id。终端机在驱动初始化时,通过唯一的id远程加载绑定的驱动配置文件。
[0032]
步骤s102:启动识别主控程序。
[0033]
该步骤包括完成驱动核验和驱动解密两个阶段。
[0034]
具体地,驱动核验是将服务器下发存储的md5值与驱动配置文件计算值比对,若不一致,则删除驱动配置文件,从服务器重新获取驱动配置文件。进一步地,驱动解密是对加密的驱动配置文件执行解密操作,在文件加密时是通过aes算法+aes密钥来加密文件,为了保证密钥的安全性,通过rsa算法+rsa私钥对aes密钥进行加密,而解密过程则是加密的逆操作。
[0035]
步骤s103:驱动配置装载。
[0036]
具体地,从s102步骤解密驱动配置文件内容后,提取action关联操作标识,生成操作数据集[m,c,p,r];其中,m是功能识别模式,包含人脸识别、指纹识别、身份证件识别(包含但不限于学生证、身份证、工作证等)、人证混合识别、虹膜识别、条码识别等, 以此来关联第三方组件的活动域以及跳转时机;c是组件间有向边集合,包含识别主控程序源组件和
目标组件的关系三元组e《s,t,m》,s代表源启动组件,t为第三方目标组件(activity/service/contentprovide),m为心跳保活服务的时间阈值,保证到达触发策略末端节点时将主控界面复位;p代表初次识别核验结果的序列化数据;r代表回传执行模式。
[0037]
步骤s2:第三方增值应用的安装本发明实施例中安装第三方增值应用apk安装包作为待扩展核验功能的外部文件,需要通过脚本程序对apk安装包重签名来保证私域安全,再安装第三方增值应用程序。如图2所示,操作顺序依次为:步骤s201:第三方增值应用apk安装包重签名。
[0038]
首先,将第三方开发完成的增值应用程序apk安装包文件,通过开放平台后端的重签名入口上传至文件服务器。
[0039]
进一步地,自动化脚本程序扫描apk安装包,并通过unzip对apk安装包直接进行解压,删除meta-inf目录存放的原始签名文件,将安全签名证书复制到该目录下。
[0040]
进一步地,利用 jarsigner执行相关运行命令完成签名程序,重新打包成新的apk安装包。
[0041]
步骤s202:安装第三方增值应用程序;具体地,在识别终端机上通过adb install命令安装第三方增值应用程序,或通过管理后台绑定终端机唯一id远程推送apk安装包;步骤s203:验证第三方增值应用程序。
[0042]
具体地,重启生物识别终端机,进入识别主控程序界面后验证第三方增值应用程序是否能被唤起。
[0043]
步骤s3:生物识别终端启动增值应用其整体框架如图3所示,操作顺序依次为:步骤s301:运行终端机识别主控程序;步骤s302:启动静态分析器;具体地,开启识别行为操作,根据识别模式定位到与用户指定行为所对应的api,分析找出源组件activity到触发目标组件的调用路径和方式,从识别主控程序中提取初次识别核验结果,封装成serializable数据对象;步骤s303:运行第三方增值应用程序;步骤s304:回传数据生成器。
[0044]
步骤s4:生物识别终端执行增值业务二次核验开启识别主控程序,完成初次识别核验,验证成功后将识别结果数据集封装,跳转至第三方增值应用组件做二次核验。其启动流程如图4所示,操作顺序依次为:步骤s401:启动/重启终端机识别主控程序;步骤s402:开启行为识别操作。具体地,识别主控程序等待行为触发第三方增值应用程序唤起;步骤s403:校验第三方增值应用/tdl.mi驱动配置,重新安装apk包/导入tdl.mi驱动配置文件。
[0045]
具体地,若第三方增值应用程序唤起失败,重新检查步骤1驱动装载与步骤2第三方增值应用程序安装流程;
步骤s404:进行第三方增值业务的二次核验;步骤s405:开启守护进程的心跳保活服务,对第三方增值应用作轮询监测;其中,待唤醒第三方增值应用并进行增值业务的处理后,在识别主控程序中开启守护进程service,实现心跳保活服务,其目的是阻断异常,包含组件通信异常或第三方增值应用运行时异常等,避免多模态识别的前驱识别回调因后继增值应用处理程序长时间无响应而陷入假死状态。
[0046]
具体地,心跳保活服务的方法是,识别主控程序通过启动守护进程service设置计时器,若计时器累计达最大响应时间t时,将发送广播通知第三方增值应用执行销毁程序,回到识别主控程序操作界面,并执行程序恢复模块的识别功能;若计时器在达到最大响应时间t之前,收到第三方增值应用程序的心跳广播,则计时器清零重新计时,完成心跳保活。
[0047]
步骤s5:识别数据传输与回传通过搭建预定义的“action行为—组件间驱动模式—后继组件回调”的关系链信息库,根据识别主控程序的识别模式来映射到目标组件,实现识别数据传输与回传。其识别数据传输与回传框架图,如图5所示,根据识别主控程序的识别模式映射目标组件的关系图,其中源activity启动目标组件activity,其方法是startactivity(intent intent),传入intent对象,通过intent对象来指定要完成的一个action操作,利用intent+extra传递json格式的识别数据对象data,具体示例代码如下:intent intent = new intent();intent.setaction(“com.jit.scope.zerf”);intent.putextra(key_rec,data);startactivityforresult(intent);进一步地,在第三方增值应用程序的配置文件androidmanifest.xml中,《activity》元素下指定一个《intent-filter》对象,然后其子元素声明一个《action》元素,将action动作绑定到目标组件activity上,代码如下:《activityandroid:name=”com.jit.scope.zerfactivity
”ꢀꢀꢀ
android:label=”zerfactivity”》《intent-filter》
ꢀꢀꢀꢀꢀꢀꢀ
《action android:name=”com.jit.scope.zerf”/》
ꢀꢀꢀꢀꢀꢀꢀ
《category android:name=”android.intent.category.default”/》《/intent-filter》《/activity》进一步地,在第三方增值应用处理完成后,通过extra回传数据,退出activity组件,返回识别主控程序,具体示例代码如下:intent intent = new intent();intent.putextra(key_match_result,result);setresult(activity.result_ok,intent);finish();进一步地,源组件activity启动目标组件service通过messenger进行通信交互,
增值应用组件service实现handler,来处理源组件activity发送的消息message,根据handler创建一个messenger对象,onbinder返回messenger的ibinder对象,源组件activity中使用ibinder将messenger实例化,然后通过messenger将message发送给增值应用组件service。
[0048]
源组件activity与增值应用组件service消息通信实现如下:首先,由源组件activity发送数据消息:message msg = message.obtain(null, messengerservice.msg_say_hello);msg.repayto = response;try {
ꢀꢀꢀꢀꢀꢀꢀ
mservice.send(msg);} catch (remoteexception e) {
ꢀꢀꢀꢀꢀꢀꢀ
e.printstacktrace();}源组件activity从增值应用组件service接受数据消息,实现如下:其次,在源组件activity创建messenger和handler,接受来自增值应用组件service消息,代码如下:
ꢀꢀꢀꢀ
messenger response = new messenger(new clienthandler());
ꢀꢀꢀꢀ
class clienthandler extends handler{
ꢀꢀꢀꢀꢀꢀꢀꢀ
@override
ꢀꢀꢀꢀꢀꢀꢀꢀ
public void handlemessage(message msg) {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
switch (msg.what){
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
case messengerservice.msg_repo_say_hello:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
bundle data = msgfromservice.getdata();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
processdata(data);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
break;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
default:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
super.handlemessage(msg);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
}最后,在增值应用组件service中处理来自源组件activty的message,再回传数据消息:class processhandler extends handler{
ꢀꢀꢀꢀꢀꢀꢀꢀ
@override
ꢀꢀꢀꢀꢀꢀꢀꢀ
public void handlemessage(message msg) {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
switch (msg.what){
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
case msg_say_hello:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
processmsgfromclient();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
sendmsgtoclient(msg);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
} catch (remoteexception e) {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
e.printstacktrace();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
break;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
default:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
super.handlemessage(msg);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
}进一步地,源组件activity启动目标组件contentprovide,两者进行通信交互的方式是,第三方增值应用程序需要实现query(uri uri, string[] projection, string selection, string[] selectionargs, string sortorder)接口,识别主控程序调用query接口传入selectionargs参数,第三方增值应用程序需要从selectionargs中解析所需要的识别数据;第三方增值应用程序通过返回的结果cursor实现数据回传。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1