
Android
差唔多先生
编程最不重要的是源代码,最重要的是算法和数据结构。
展开
-
Android 隐藏锁机
Android 隐藏锁机Android 按电源键面部解锁或者抬手亮屏以及通过各种手势亮屏面部解锁,为了让用户感受不到解锁的速度快慢,会做一些特殊处理。比如本文要说的隐藏锁机,那什么时候又显示锁机呢?最好是解锁成功后立马显示锁机,同时移除锁机。隐藏锁机的同时需要拦截背光,否则就直接看到桌面了。显示锁机的同时需要释放拦截背光,否则手机就是黑屏的,无法设置背光,带来不好的用户体验。解锁成功后需要移除锁机,否则解锁成功还是看到锁屏,无法进到桌面或正在打开的应用。下面从代码看看对锁机的相关处理:public c原创 2020-08-04 13:26:09 · 911 阅读 · 0 评论 -
Android DevicePolicyManager
Android DevicePolicyManager用于管理在设备上实施策略的公共接口。可以用来禁用多个系统应用,例如系统相机、指纹解锁、面部解锁、生物识别解锁等。这个类的大多数客户端必须和系统被注册为设备管理员。此外,设别管理员可能被注册为个人资料或设备所有者。一个给定的方法可以访问所有设备管理员除非那个方法的文档指定它被限制为设备或个人资料所有者。任何调用 api 的应用只能将其拥有的设备管理员组件作为参数传递。否则,会抛出安全异常 SecurityException。需要 PackageMana原创 2020-08-04 13:21:49 · 1462 阅读 · 0 评论 -
Android StrongAuth 机制
Android StrongAuth 机制Strong Authentication 顾名思义强认证,即当生物识别失败次数过多时需要输入密码解锁,此时生物识别被禁用。常见的还有启动设备首次解锁需要输入密码、72 小时未输入密码禁用生物识别,需要输入密码解锁,所以当我们遇到需要输入密码以进一步确保安全时,就意味着我们太久没用过密码解锁了。Android 中通过 LockPatternUtils 来管理生物识别是否可用,其中 StrongAuthTracker 用来跟踪全局强认证状态。public sta原创 2020-08-04 13:16:04 · 933 阅读 · 0 评论 -
Android 耗电问题之一
Android 耗电问题之一在应用内打开了相机,退出后未关相机,这会导致耗电问题。不管是 Android 还是 iOS,相机和手电筒是无法同时打开的,不信你可以试试。所以相机未关最直观的表现就是不能打开手电筒,直到关闭相机。如果相机未关,可以通过打开拍照的相机,再关闭,使应用打开的相机被关闭,否则手机的电量很快就会被耗光。对于相机,有一个防呆机制,就是打开了相机,一定要有配对的关闭相机,保证相机不用时能被关闭,除非用户需要长时间打开相机。有很多场景需要用到相机,那不可避免要建立防呆机制。最常见的就是拍原创 2020-08-04 02:07:02 · 540 阅读 · 0 评论 -
如何判断导航键是否打开
如何判断导航键是否打开原生的方法:也是判断大多数手机导航键是否打开的方法。public boolean hasNavigationBar (Resources resources){ int id = resources.getIdentifier("config_showNavigationBar", "bool", "android"); return id > 0 && resources.getBoolean(id);}这个 Resources原创 2020-08-04 02:00:59 · 784 阅读 · 0 评论 -
Android HandlerThread 和 Looper
Android HandlerThread 和 LooperHandlerThread 是一个包含一个 Looper 对象的线程。这个 Looper 对象可以用来创建多个 Handler 对象。注意 HandlerThread 和普通的线程没什么两样,Thread.start() 仍需被调用。HandlerThread 的 getLooper() 方法返回和这个线程关联的 Looper 对象。如果这个线程还没被启动或者因为其他原因 isAlive() 方法返回 false,这个方法将返回一个空对象。如果原创 2020-08-04 01:50:08 · 693 阅读 · 1 评论 -
Android Handler 机制
Android Handler 机制Handler 与消息的传递和处理有关。Handler 可以用来发送和处理消息,有专门的 Message 类构建消息,还可以通过线程的消息队列处理 Runnable 对象,而 Runnable 对象就是一个子线程,所以 Handler 的用处真是太大了。每一个 Handler 实例会和一个单一的线程以及线程的消息队列关联,创建的 Handler 对象会绑定一个 Looper 对象,Looper 可以理解为一个循环者,处理 Handler 传递过来的消息和 Runna原创 2020-08-04 01:45:29 · 165 阅读 · 0 评论