2017-02-10 2 views
3

사용자 정의 lockscreen 역할을하는 앱이 있으며 지문을 사용하여 잠금 해제 기능을 유지하려고합니다. 기기 화면이 꺼져 있거나 내 lockscreen을보고있을 때 휴대 전화의 잠금을 해제하고 싶습니다. 잠금 화면은 다른 모든 구성 요소에서 실행되는 활동입니다. 기기가 유휴 상태 (화면 꺼짐)이고 지문을 사용하는 경우 휴대 전화가 켜지지 만 잠금 화면이 계속 표시됩니다. 내 lockscreen이 표시 될 때 지문을 사용하면 아무 일도 일어나지 않고 센서가 작동하지 않습니다. FingerprintManager으로 지문 청취를 구현하면 성공적인 지문 사용을들을 수 있지만 내 활동을 취소하면 잠금 화면이 계속 켜져 있습니다.FingerPrint가 지원되는 Android Lockscreen

나는 마이크로 소프트의 다음 작품을 보았고, 어떻게 든 그것을 이뤘다. 내 추측으로는 그들은 Activity를 자신의 lockscreen으로 실행하지 않지만 WindowManager에 자신의 뷰를 그리고 lockscreen unlock을 듣고 UI를 숨 깁니다. 이 접근 방식의 문제점 (필자는 적어도 액티비티가 없으면 몰입 형 모드의 Window 플래그를 설정할 수 없으며 상태/탐색 바를 그릴 수 없음)

답변

2

나는 마침내 그것을 풀었다. 열쇠는 지문을 직접 듣지 않고 시스템에서 처리하도록하는 것입니다. 내 잠금 화면은 사용자가 잠금 화면을 해제 할 수 있도록 사용자 정의 잠금 해제 메커니즘을 제공해야 그 다음 onViewAttached이

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) 

및 잠금 화면보기와 같은 창 관리자에 추가됩니다보기 설정 UI 가시성 플래그

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

입니다 및 additionaly 들어 lockscreen 잠금이 해제되었음을 나타내는 Intent.ACTION_USER_PRESENT 브로드 캐스트를 수신합니다 (예 : 지문과 함께)

+0

All Yours Dude :) 나에게 큰 일 –