看我七十二变----巧用Android手机指纹识别器扩充手势识别功能(一)

        最近Google推出了Pixel手机,上面有很多新的功能是其专享的,比如通过手指触摸指纹识别器就可以打开系统工具栏,或进行程序切换;作为上代的亲儿子nexus6p现在还暂时无法享受,正好最近有空研究了一下如何在nexus6p上实现手指触摸打开通知栏和手指快扫实现程序切换。

        实现以上功能主要克服两个问题:

        1、两个动作,一个是触摸指纹识别仪,一个是手指快扫指纹识别仪,指纹识别仪是如何告知程序?

        2、在不root手机的情况下,如何在Android系统中实现跨程序发送指令,打开系统通知栏和程序切换?

       对于第一个问题,在Android系统中从SDK23版本开始提供了处理指纹识别仪的API,具体用法可以查询网上的相关文章,Android下的处理指纹识别仪的API,主要接口函数是authenticate,在该函数中会传入回调函数类FingerprintManagerCompat.AuthenticationCallback,对于手指点击动作如果是设置在手机里开机指纹的,将调用函数onAuthenticationSucceeded,非开机指纹对应函数onAuthenticationFailed;可知这两个函数如果被回调是对应手指点击动作;如果手指快速扫过指纹识别仪,将调用函数onAuthenticationHelp,对应的helpMsgId值为5。

      对于第二个问题,由于Android的安全权限机制,最大的难度在与如何跨程序发送模拟点击动作,而且不需要root系统;其实Android提供的SDK里面有一套API非常有趣,可以跨程序完成很多有趣的功能———无障碍程序接口,目前很多“很酷”的程序都会调用该接口来完成很炫的功能,如“绿色守护”通过长按home键可以完成手机关屏,这里推荐对于Android有兴趣的朋友可以好好研究下。要成为无障碍程序通过继承AccessibilityService类,注册成为无障碍服务即可。

      写到这里解决了最大的两个问题,应该就很清楚了如果要实现文中的扩充手势识别功能,程序的逻辑应该是这样:

      1、实现一个Activity,通过按钮点击事件,注册无障碍服务;

      2、注册无障碍服务后,可以通过AccessibilityService类的函数onServiceConnected,该函数说明新注册的无障碍服务已经启动,可以在该函数里面进行指纹识别仪的初始化;

      3、在无障碍服务中有函数performGlobalAction,可以发送全局的模拟动作,如点击返回按钮,按home键,打开通知栏等,这些动作通过AccessibilityService.GLOBAL_ACTION_XXXX来实现,如果要打开通知栏就是发送AccessibilityService.GLOBAL_ACTION_NOTIFICATIONS,即可。

      下一篇将说明下相关代码具体实现。     



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值