2014-12-04 4 views
2

У меня есть функция переднего плана, которая ждет дрожания. Когда он получает это движение, он посылает широковещательный с:Экран не включается с блокировкой бодрствования в Android

Intent i = new Intent("com.company.app.shakeDetectedMessage"); 
sendBroadcast(i); 

Моя основная деятельность получает это с радиовещательного приемника, который реализует метод:

@Override 
    public void onReceive(Context context, Intent intent) 
    { 
     MainActivity.this.turnOnScreen(); 
     Toast.makeText(getApplicationContext(), "Screen ON", Toast.LENGTH_SHORT).show(); 
    } 

И моя очередь на методе экрана:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

у меня есть частичный замок бодрствование с

PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE); 
    PowerManager.WakeLock mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "SensorRead"); 
    mWakeLock.acquire(); 

заявлено на обслуживание

Однако, когда я выключаю экран и трясусь, экран не включается! Я проверил, что каждый метод работает с журналами. OnReceive работает, даже когда экран выключен. Трансляция работает. Просто экран не включается!

ответ

5

вызвать метод приобретшего класса WakeLocker

Класс:

public abstract class WakeLocker { 
    private static PowerManager.WakeLock wakeLock; 

    public static void acquire(Context context) { 
     if (wakeLock != null) wakeLock.release(); 

     PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
     wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | 
     PowerManager.ACQUIRE_CAUSES_WAKEUP | 
     PowerManager.ON_AFTER_RELEASE, "WakeLock"); 
     wakeLock.acquire(); 
    } 

    public static void release() { 
     if (wakeLock != null) wakeLock.release(); wakeLock = null; 
    } 
} 

требуется разрешение:

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

Это работает для меня

PowerManager powerManager = getService(this, POWER_SERVICE); 
    mScreenLock = powerManager.newWakeLock(
      PowerManager.SCREEN_BRIGHT_WAKE_LOCK | 
      PowerManager.ACQUIRE_CAUSES_WAKEUP, "Lock"); 
    mScreenLock.acquire(); 

 Смежные вопросы

  • Нет связанных вопросов^_^