【问题标题】:Android Lockscreen with FingerPrint support支持指纹的 Android 锁屏
【发布时间】:2017-02-10 08:49:41
【问题描述】:

我有一个用作自定义锁屏的应用,我想保留使用指纹的解锁功能。我想在设备屏幕关闭或查看锁屏时解锁手机。锁屏是一个在所有其他组件之上运行的活动。如果设备空闲(屏幕关闭)并且我使用指纹,手机会打开,但我的锁屏仍然可见。如果我在显示锁屏时使用指纹,则没有任何反应,传感器未激活。如果我自己用FingerprintManager 监听指纹,我可以监听指纹是否成功使用,但如果我关闭我的活动,锁屏仍然打开。

我一直在关注 Microsoft 的 Next,他们以某种方式实现了这一目标。我的猜测是他们没有将 Activity 作为他们的锁屏运行,但他们只是将他们的视图绘制到 WindowManager 并以某种方式监听锁屏解锁,然后他们隐藏了他们的 UI。这种方法的问题(至少我认为)是没有 Activity 我无法为沉浸式模式设置 Window 标志,也无法绘制状态/导航栏。

【问题讨论】:

    标签: android lockscreen


    【解决方案1】:

    我终于解决了。关键是不要自己听指纹,而是让系统处理它。我的锁屏是像这样添加到 WindowManager 的视图

    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 可见性标志

    override fun onAttachedToWindow() {
        super.onAttachedToWindow()
        systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
     }
    

    然后您必须提供自己的自定义解锁机制,以便用户可以关闭您的锁屏并额外收听表明锁屏已解锁的Intent.ACTION_USER_PRESENT 广播(例如使用指纹)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 2019-10-01
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多