首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >支持FingerPrint的安卓锁屏

支持FingerPrint的安卓锁屏
EN

Stack Overflow用户
提问于 2017-02-10 16:49:42
回答 1查看 973关注 0票数 3

我有一个应用程序,作为自定义锁屏,我想保留使用指纹解锁功能。我想在设备屏幕关闭或查看锁屏时解锁我的手机。锁屏是一种运行在所有其他组件之上的活动。如果设备处于空闲状态(屏幕关闭),并且我使用了指纹,则手机会开机,但我的锁屏仍然可见。如果在显示锁屏时使用指纹,则没有任何反应,传感器处于非活动状态。如果我自己用FingerprintManager实现了指纹监听,我就能够监听指纹的成功使用,但如果我取消了我的活动,锁屏仍然是打开的。

我一直在关注微软的Next,他们以某种方式做到了这一点。我的猜测是,他们不会像锁屏一样运行Activity,而只是将视图绘制到WindowManager中,并以某种方式侦听锁屏解锁,然后隐藏UI。这种方法的问题(至少我认为)是,如果没有Activity,我就不能为沉浸式模式设置窗口标志,也不能在状态/导航栏上绘制。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-22 20:05:08

我终于解决了。关键是不要自己去监听指纹,而是让系统来处理它。我的锁屏是添加到WindowManager的视图,如下所示

代码语言:javascript
复制
val params = WindowManager.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
                    WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION or
                            WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN or
                            WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS or
                            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
                            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or
                            WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED
                    , PixelFormat.TRANSLUCENT)

manager.addView(lockscreenView, params)

onViewAttached中的锁屏视图设置UI可见性标志

代码语言:javascript
复制
override fun onAttachedToWindow() {
    super.onAttachedToWindow()
    systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
 }

然后,您必须提供自己的自定义解锁机制,以便用户可以解除您的锁屏,并另外监听指示锁屏已解锁的Intent.ACTION_USER_PRESENT广播(例如,使用指纹)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42155059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档