Android手势密码实践

作者: Jacen | 来源:发表于2016-07-09 00:34 被阅读4458次

手势密码

最近项目需要需要做一个手势密码功能,所以查找了一下相关的资料.其实Github上面相关的开源控件还是很多的,大体上实现也是类似的,本次使用的手势密码的开源框架的库是DreaminginCodeZH的PatternLock.另外一方面,其实实现手势密码的核心还是在于手势密码的触发机制,这一点就涉及到应用在前台与后台之间切换状态的监控了.

实现步骤

稍微逛了一下简书和CSDN,发现在监控应用前后台切换状态方面也有几种实现方式,本文选择一种比较简单的方式进行说明.

1.首先是需要继承Application类实现自己的的自定义Application.

2.在自定义的Application的onCreate()方法中使用registerActivityLifecycleCallbacks()方法,该方法引用的匿名类中的方法可以实现对应用的所有Activity进行状态统计,从而达到监控应用前后台切换状态的效果.

3.加入一些判断条件,例如在我们的应用中就加入了判断应用是冷启动还是热启动的条件,从而达到实现某些特定的需求.

实现如下

    private long time = -2;
    private int count = 0;
    registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
    
                @Override
                public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
                    LogUtils.D(TAG, "onActivityCreated()");
                }
    
                @Override
                public void onActivityStarted(Activity activity) {
                    LogUtils.D(TAG, "onActivityStarted()");
                    if (count == 0) {
                        //Log.v("tag", ">>>>>>>>>>>>>>>>>>>切到前台  lifecycle");
                        // 首先计算时间 网络请求判断是否进入手势密码验证界面
                        LogUtils.D(TAG, ">>>>>>>>>>>>>>>>>>>切到前台  lifecycle");
                            if (-2 == time) {
                                //判断进入解锁手势密
                            }
                        } else {
                             Date date2 = new Date();
                             long returnTime = date2.getTime();
                             double sub = new BigDecimal(returnTime).subtract(new BigDecimal(time)).doubleValue();
                             if (sub >= 3000d) {//此处是判断应用到后台多久时间以后需要开启手势密码
                                    //判断进入解锁手势密码\                                } else {
                                    time = -1;
                             }
                    } else {
                        if (-2 == time) {
                            //判断进入解锁手势密                             }
                        }
                        time = -1;
                    }
                    count++;
                }
    
                @Override
                public void onActivityResumed(Activity activity) {
                    LogUtils.D(TAG, "onActivityResumed()");
    
                }
    
                @Override
                public void onActivityPaused(Activity activity) {
                    LogUtils.D(TAG, "onActivityPaused()");
                }
    
                @Override
                public void onActivityStopped(Activity activity) {
                    LogUtils.D(TAG, "onActivityStopped()");
                    count--;
                    if (count == 0) {
                        LogUtils.D(TAG, ">>>>>>>>>>>>>>>>>>>切到后台  lifecycle");
                        Date date = new Date();
                        time = date.getTime();
                    } else {
                        time = -1;
                    }
                }
    
                @Override
                public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
                    LogUtils.D(TAG, "onActivitySaveInstanceState()");
                }
    
                @Override
                public void onActivityDestroyed(Activity activity) {
                    LogUtils.D(TAG, "onActivityDestroyed()");
                }
            });

好了,一个简单的手势密码功能就这样子实现了.这是我用MarkDown软件写的第一篇文章,也是我近几年第一次写的公开的正儿八经的文章吧,以后多坚持写作,积累,不会写不是不写的理由,而是多写的动力.Let's keep on moving.

相关文章

  • Android手势密码实践

    手势密码 最近项目需要需要做一个手势密码功能,所以查找了一下相关的资料.其实Github上面相关的开源控件还是很多...

  • android手势密码

    手势密码库 库的代码量比较少,扩展性不太好

  • iOS 手势密码

    源码参考:链接密码:37gm 源码可实现设置手势密码、登陆验证手势密码、修改手势密码 另外添加了钥匙串本地保存手势...

  • Android-手势密码

    效果图 实现思路 1. 正上方的提示区域,用一个类(LockIndicator.java)来实现,自定义view来...

  • Android手势密码开发

    前言 最近遇到手势密码的开发需求,花半天时间撸了一下,发现没有想象中难,在这里记录一下。 先上效果图 思路 自定义...

  • 登录注册知识点总集二——手势密码

    一、登录注册知识总集 二、手势密码知识点汇总 手势密码一般都是辅助密码,因为相对比指纹密码,手势密码的效率较低;相...

  • ViewDragHelper解析以及侧滑控件实现

    在前一篇文章从PhotoView看Android手势监听实践中,介绍了PhotoView这一控件的手势控制的分析,...

  • 1. Android中锁屏密码加密算法分析

    1.1 锁屏密码方式 Android 中现在支持的锁屏密码主要有两种:一种是手势解锁,也就是常见的九宫格密码图;一...

  • 手势密码Bug修改-2021-01-07

    说实话,本人一直不喜欢手势密码,可是偏偏经常遇到手势密码;我们自己做的APP的手势密码逻辑超级复杂,都感觉有心里阴...

  • 【Swift3】手势密码

    项目说明 初次打开设置并确认手势密码,超过五次后重置在设置中修改手势密码APP退至后台10S后需要手势密码解锁进入...

网友评论

  • 热带鱼和威士忌:包括手势解锁页面activity的启动模式,包括应该是从后台进入前台,或者是第一次启动的。然后解锁成功以后的逻辑处理。我觉得这些问题都是很难的
    热带鱼和威士忌:@Jacen 所以说 ,,,大神,你有没有比较完整的DEMO。
    Jacen:@热带鱼和威士忌 是的,这个跟产品有很大关系。这个例子比较纯粹,煎蛋
  • 43b7bde8a3b6: } else {
    Date date2 = new Date();
    long returnTime = date2.getTime();
    中 } 应该去掉 :grin:
    Jacen:@WJDKFF 好吧,没太注意到:smile:
    43b7bde8a3b6: @Jacen 那个地方的右括号} 是多余的😁
    Jacen:@WJDKFF 这个是用来判断应用切换到后台的时间的哈:smile:

本文标题:Android手势密码实践

本文链接:https://www.haomeiwen.com/subject/ecprjttx.html