2014-11-21 66 views
0

我想在屏幕關閉時(黑暗)喚醒屏幕。爲什麼我在Android中調用獲取時屏幕沒有醒來?

我創建一個類如下面的代碼:

public class ScreenWakeLock { 

    private static PowerManager.WakeLock WakeLock; 

    @SuppressLint("Wakelock") 
    static void acquireCpuWakeLock(Context context) { 
     Log.i("ScreenWakeLock", "acquireCpuWakeLock"); 
     PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 

     WakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP,"okTag"); 
     WakeLock.acquire(); 
    } 

    static void releaseCpuLock() { 
     if (WakeLock != null) { 
      WakeLock.release(); 
      WakeLock = null; 
     } 
    } 
} 

當屏幕關閉時,應用程序調用​​。

但屏幕沒有醒來。我在日誌中看到了acquireCpuWakeLock,我確定函數acquireCpuWakeLock已被調用。我還在Manifest.xml中添加<uses-permission android:name="android.permission.WAKE_LOCK" />

爲什麼在Android中調用獲取時屏幕沒有醒來?

我錯過了什麼嗎?

在此先感謝。

+0

您是否在屏幕關閉後獲取了喚醒鎖?如果是,則獲取喚醒onCreate()或onStart()。 – Swap 2014-11-21 07:15:30

回答

1

直起PowerManager documentation

此外,您可以添加兩個標誌,隻影響 屏幕的行爲。這些標誌與 PARTIAL_WAKE_LOCK結合使用時不起作用。

使用別的東西而不是PowerManager.PARTIAL_WAKE_LOCK。嘗試SCREEN_DIM_WAKE_LOCK,看看你的用例是否足夠好;如果沒有,請嘗試SCREEN_BRIGHT_WAKE_LOCK

+0

謝謝,更改爲'SCREEN_DIM_WAKE_LOCK'後工作。還有一個小問題。如果我調用'WakeLock.acquire();'而不是'WakeLock.release();'調用一次。對電話有影響嗎? – Wun 2014-11-21 07:38:43

+0

**確保你的調用'acquire()'和'release()'是平衡的**你可以做的最糟糕的事情是意外(或故意)保持喚醒鎖,因爲你會阻止手機進入睡眠狀態,將耗盡用戶的電池。 – Karakuri 2014-11-21 15:32:04

相關問題