2010-05-23 39 views
14

Tôi muốn mở khóa màn hình và bật màn hình để hiển thị cửa sổ bật lên trên trình kích hoạt sự kiện. Tôi có thể mở khóa màn hình bằng cách sử dụngBật màn hình theo chương trình

newKeyguardLock = km.newKeyguardLock(HANDSFREE); 
newKeyguardLock.disableKeyguard(); 

trên KeyGuardService nhưng tôi không thể bật màn hình. Tôi đang sử dụng

wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, HANDSFREE); 
wl.acquire(); 

nhưng không thành công. Màn hình vẫn tắt. Làm thế nào tôi có thể đạt được điều này?

Trả lời

30

câu trả lời Amir đã cho tôi gần gũi, nhưng bạn cần ACQUIRE_CAUSES_WAKEUP cờ ít nhất (Building chống lại Android 2.3.3).

WakeLock screenLock = ((PowerManager)getSystemService(POWER_SERVICE)).newWakeLock(
    PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG"); 
screenLock.acquire(); 

//later 
screenLock.release(); 
+0

Cảm ơn! nó hoạt động cho tôi – ihrupin

+0

Làm việc tốt cho tôi –

+0

Hoạt động tuyệt vời với tôi trên Marshmallow. – March3April4

-1

Tôi gặp vấn đề tương tự. Khi những người này thảo luận here, có một api ẩn để bật/tắt màn hình, xem: https://android.googlesource.com/platform/frameworks/base/+/froyo-release/core/java/android/os/Power.java

Nhưng tôi không biết gọi nó như thế nào. Tôi đã thực sự nhìn thấy một ứng dụng có thể bật màn hình, tự hỏi nếu nó là thiết bị cụ thể.

+0

Vì nó là accepted.i loại bỏ -1. –

2

Trong OnCreate hoạt động chính của bạn() viết đoạn mã sau:

((PowerManager)getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG").acquire(); 

Nó làm cho thiết bị để thức dậy.

Đừng quên disableKeyguard() để mở khóa thiết bị ...

0

undefined của câu trả lời với séc NullPointer và thời gian chờ thiết lập:

private void turnOnScreen() { 
    PowerManager.WakeLock screenLock = null; 
    if ((getSystemService(POWER_SERVICE)) != null) { 
     screenLock = ((PowerManager)getSystemService(POWER_SERVICE)).newWakeLock(
       PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG"); 
     screenLock.acquire(10*60*1000L /*10 minutes*/); 


     screenLock.release(); 
    } 
} 
Các vấn đề liên quan