2016-09-26 17 views
12

Telefonun ekranının dört durumunu belirleme işlevim var: ekran açık, ekran kapalı, kilitli ekranda açma, kilit olmadan açma. Benim fonksiyonumBir hata sonucunu inKeyguardRestrictedInputMode() içinde döndürün.

private KeyguardManager keyguardManager; 
public String getScreenStatus() 
{ 
    String sreen_State="unknown"; 
    keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); 
    PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { 
     if (pm.isInteractive()) { 
      sreen_State="screen_on"; 
      if(!keyguardManager.inKeyguardRestrictedInputMode()) { 
       sreen_State="screen_on_no_lock_screen"; 

      }else{ 
       Log.i(TAG, "screen_on_lock_screen"); 
       sreen_State="screen_on_lock_screen"; 
      } 
     } 
     else { 
      sreen_State="screen_off"; 
     } 
    } 
    else if(Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT_WATCH){ 
     if(pm.isScreenOn()){ 
      sreen_State="screen_on"; 
      if(!keyguardManager.inKeyguardRestrictedInputMode()) { 
       Log.i(TAG, "screen_on_no_lock_screen"); 
       sreen_State="screen_on_no_lock_screen"; 

      }else{ 
       Log.i(TAG, "screen_on_lock_screen"); 
       sreen_State="screen_on_lock_screen"; 
      } 

     } 
     else { 
      mIsScreenOn=false; 
      sreen_State="screen_off"; 
     } 
    } 
    return sreen_State; 
} 
Yukarıdaki fonksiyon, ekranın düzeltilmiş durumlarını geri döndürür. Ancak, aşağıdaki gibi bir kod daha eklediğimde hata var:

KeyguardManager.KeyguardLock 
kl = keyguardManager.newKeyguardLock("MyKeyguardLock"); 
if(index.equals("1")) 
     kl.disableKeyguard(); 
    else if(indexequals("2")) 
     kl.reenableKeyguard(); 
    getScreenStatus(); 

Dizin bir düğme ile değişebilir. Şimdi, yanlış ekran durumu. Ekran screen_on_no_lock_screen'da olmasına rağmen, her zaman screen_on_lock_screen'u döndürür. Sorunumu nasıl giderebilirim?

+0

Daha fazla kod ekleyebilir misiniz? İkinci kod snippet'ini hangi sınıf ve yöntem içerir? – Vall0n

cevap

2

, KeyguardManager.NewKeyguardLock kullanarak API 13. Seviyeden beri kullanımdan kaldırılmıştır. Bunu, WindowManager.LayoutParams öğesinin FLAG_DISMISS_KEYGUARD ve FLAG_SHOW_WHEN_LOCKED ile denediniz.

Bu sınıf 13. kullanımı FLAG_DISMISS_KEYGUARD ve/API seviyesi önerilmemekte veya bunun yerine FLAG_SHOW_WHEN_LOCKED edildi; Bu, uygulamanızın ön plana girip çıktığı sırada tuş kilidini kesintisiz olarak gizlemenize izin verir ve herhangi bir özel izin talep edilmesini gerektirmez. > Tuþ tuþunu yeniden etkinleþtirmenize izin veren newKeyguardLock (String) tarafýndan iade edilen tutaç.

Link Android documentation formunu oluşturur.

Umut eder!