Android 智能手机在全球市场有着极高的市场占有率,越来越受到广大消费者的青睐。但 Android 作为开源操作系统,且很容易可以获得系统 root 权限,Android 系统的安全问题也是用户和开发者最关心的问题之一。

手势密码作为手机上方便的一种安全保护措施,受到了众多 APP 开发者的青睐,市场上一些金融类 APP 基本都配有手势密码,如下图即为手势绘制过程的一个状态。



目前大多数 Android 手机都具有手势锁屏功能,Android 系统自身是带了手势密码功能的,不同的 ROM 厂商做了不同的定制。本文通过Android自身的源码简单介绍手势密码的原理。

Android手势相关类
回忆或者尝试一下用手势解锁 Android 手机的过程:首先用户通过点击九宫格的点连接出一条路径,当手指抬起时,会判断此次连接的点路径是否和设置的相匹配。

在这个过程中,涉及到两个方面(不考虑设置手势时的存储):

  • 手势的绘制
  • 手势的验证/匹配
针对这两个过程,通过 AOSP 查找源码,我们可以发现两个相关类:

  • LockPatternView.java:View类,九宫格手势图形显示的类。
  • LockPatternUtils.java:手势转换、匹配工具类。