2016-03-21 20 views
0

lock screen numaralı stokun yerini alacak ve tipik bir lock screen temel işlevselliğini edinecek bir android uygulaması geliştirmeye çalışıyorum. Uygulamayı API level 15 ve daha üstü desteklemeyi planlıyorum. Ama ben lock screen davranış ile ilgili bir sorunla karşı karşıyayım. Henüz home ve recent button'un soft navigation bar'u devre dışı bırakamıyorum. Yığın, github ve diğer kaynaklarda çok fazla örnek buldum ama bunlar çok kullanışlı değil. Android için Kilit Ekranı Uygulaması = = 4.0.3

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | 
        WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
        WindowManager.LayoutParams.FLAG_FULLSCREEN); 

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 
        | WindowManager.LayoutParams.FLAG_FULLSCREEN 
        | WindowManager.LayoutParams.FLAG_DIM_BEHIND); 

LockActivity

yılında

<uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> 

Eklendi aşağıdaki bayraklarını Ama her etkin çözümler alamadım:

ben şu şekilde denedim. Ben gerçekten istediğimi yapıyor çok güzel bir uygulama ZUI Locker bulundu. Varsayılan kilit ekranı gibi çalışmak için izinlerine nasıl erişiyorlar?

Herhangi bir öneriniz var mı? Şimdiden teşekkürler!

+0

Kullanıcı sistem ekranını engelledikten sonra kilit ekranınızın mükemmel çalışmasını sağlayarak, kullanıcının sistem kilit ekranını Ayarlar'da (bir niyet göndererek) devre dışı bırakması için bir kılavuz hazırlamanız gerekir. –

+0

@SHICONGCAO bu şekilde çalışmadı. İşlevsellik için bazı izinler (cihaz yöneticisi gibi) almam gerektiğini düşünüyor musunuz? –

cevap

0

Ben de bir lockscreen uygulaması geliştirdim ve size de yardımcı olmak isterim.

Görüşlerin ve TYPE_SYSTEM_ERROR öğelerinin arkasındaki konsepti anlamak için here cevabını kontrol edebilirsiniz.

WindowManager mWindowManager; 
RelativeLayout mLscreenlayout; 

WindowManager.LayoutParams localLayoutParams = new WindowManager.LayoutParams(WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, 
      WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE| 
      WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL| 
      WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH| 
      WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN| 
      View.SYSTEM_UI_FLAG_LAYOUT_STABLE| 
      View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION| 
      View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| 
      View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| 
      View.SYSTEM_UI_FLAG_FULLSCREEN, 
      PixelFormat.TRANSLUCENT); 
    mWindowManager = ((WindowManager)getApplicationContext().getSystemService(WINDOW_SERVICE)); 
    mLscreenlayout = new RelativeLayout(getApplicationContext()); 
    getWindow().setAttributes(localLayoutParams); 


    View.inflate(this, R.layout.activity_lockscreen, this.mLscreenlayout); 
    this.mWindowManager.addView(mLscreenlayout, localLayoutParams); 

public void onDestroy() 
    { 
     mWindowManager.removeView(this.mLscreenlayout); 
     mLscreenlayout.removeAllViews(); 

     super.onDestroy(); 
     //myThread.interrupt(); 
     Log.i("Daze","Lockscreen Activity Destroyed"); 
    } 

Ayrıca, ev düğmesine kilitlemek için GitHub'dan here üzerine kütüphane var:

Ama kodunu biraz tweaked ve burada benim versiyonu. Umarım bu yardımcı olur :)

İlgili konular