Android仿支付宝手势密码解锁功能

作者:lijiao 时间:2023-02-14 09:06:46 

Starting

创建手势密码可以查看 CreateGestureActivity.java 文件.

登陆验证手势密码可以看 GestureLoginActivity.java 文件.

Features

使用了 JakeWharton/butterknife butterknife

使用了 ACache 来存储手势密码


/**
* 保存手势密码
*/

private void saveChosenPattern(List<LockPatternView.Cell> cells)
{
byte[] bytes = LockPatternUtil.patternToHash(cells);
aCache.put(Constant.GESTURE_PASSWORD, bytes);
}

Warning: 使用 ACache 类保存密码并不是无限期的. 具体期限可以查看 ACache 类.

使用了 SHA 算法保存手势密码


/**
* Generate an SHA-1 hash for the pattern.
* Not the most secure, but it is at
* least a second level of protection. First level is that the file is in a
* location only readable by the system process.*
* @param pattern
* @return the hash of the pattern in a byte array.
*/
public static byte[] patternToHash(List<LockPatternView.Cell> pattern)
{
 if (pattern == null) {  
  return null;
 } else {
  int size = pattern.size();  
  byte[] res = new byte[size];
  for (int i = 0; i < size; i++) {  
   LockPatternView.Cell cell = pattern.get(i);
   res[i] = (byte) cell.getIndex();
  }  
  MessageDigest md = null;
  try {
   md = MessageDigest.getInstance("SHA-1");  
   return md.digest(res);
   } catch (NoSuchAlgorithmException e) {
   e.printStackTrace();  
   return res;
  }
 }
}

可以开启震动模式,当选中一个圈的时候,手机会震动


/** * Set whether the view will use tactile feedback.
*If true, there will be
* tactile feedback as the user enters the pattern.
* @param tactileFeedbackEnabled Whether tactile feedback is enabled
*/

public void setTactileFeedbackEnabled(boolean tactileFeedbackEnabled) {
mEnableHapticFeedback = tactileFeedbackEnabled;
}

可以开启绘制路径隐藏模式


/**
* Set whether the view is in stealth mode. If true, there will be no
* visible feedback as the user enters the pattern.
* @param inStealthMode Whether in stealth mode.
*/public void setInStealthMode(boolean inStealthMode) {
mInStealthMode = inStealthMode;
}

Example

Android仿支付宝手势密码解锁功能

标签:Android,支付宝,手势密码
0
投稿

猜你喜欢

  • MybatisPlus实现简单增删改查功能

    2021-12-27 06:25:21
  • Springboot整合企业微信机器人助手推送消息的实现

    2023-08-18 08:37:37
  • 浅谈Java 类中各成分加载顺序和内存中的存放位置

    2022-12-23 17:24:23
  • SpringCloud Zuul网关功能实现解析

    2022-09-12 14:30:31
  • Java爬虫实现爬取京东上的手机搜索页面 HttpCliient+Jsoup

    2023-02-19 23:22:37
  • java打印指定年月的日历

    2023-11-11 19:21:19
  • 详解Java volatile 内存屏障底层原理语义

    2023-05-08 19:25:47
  • java合并多个文件的实例代码

    2023-07-28 12:56:02
  • Windows10系统下JDK1.8的下载安装及环境变量配置的教程

    2022-03-18 18:14:03
  • SpringBoot过滤器的使用

    2023-08-28 21:28:56
  • IDEA+Maven搭建Spring环境的详细教程

    2023-11-25 07:50:34
  • Android提高之BLE开发Android手机搜索iBeacon基站

    2023-05-19 18:58:15
  • C#中数组段用法实例分析

    2022-06-11 23:08:05
  • Java Ehcache缓存框架入门级使用实例

    2022-08-23 20:51:54
  • 详解如何在Flutter中获取设备标识符

    2022-12-18 12:41:26
  • SpringBoot项目jar发布后如何获取jar包所在目录路径

    2023-02-23 08:36:04
  • 解决Android Studio安装后运行出错dose not...和Internal error...

    2023-04-24 11:54:42
  • Java注解(annotation)简述

    2022-03-07 08:10:12
  • Android应用开发中Fragment存储功能的基本用法

    2022-10-16 20:54:35
  • Android视频播放器屏幕左侧边随手指上下滑动亮度调节功能的原理实现

    2022-09-12 23:27:10
  • asp之家 软件编程 m.aspxhome.com