2011-08-25 45 views
5

Tôi không thể tắt màn hình bằng mã này. Tôi đã sử dụng phương pháp PowerManagerwl.release() nhưng phương pháp này không hoạt động. Ai đó có thể cho tôi xem một ví dụ không?Tắt màn hình Android

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen"); 

Đây là một phần chức năng của tôi:

stateString = "nextone"; 
    if(stateString=="nextone"){   
    wl.release(); 
    } 

Tôi cũng đã thêm sự cho phép trong biểu hiện nhưng kết quả không.

+1

Vâng, so sánh bạn với stateString sẽ không bao giờ thành sự thật. Để so sánh các chuỗi trong java, bạn nên sử dụng 'stateString.equals (" nextone ")' để thay thế. – Eloff

Trả lời

0

Nếu bạn không sử dụng quyền, chương trình sẽ gặp sự cố với số SecurityException khi cố gắng khóa, do đó không phải là vấn đề. Phương pháp đúng là: (lấy WakeLock trên đầu, mang lại cho nó lên khi ứng dụng mất tập trung (onPause)

//declared globally so both functions can access this 
public PowerManager.WakeLock wl; 

///////////onCreate 
//stop phone from sleeping 
PowerManager powman = (PowerManager) getSystemService(Context.POWER_SERVICE); 
wl = powman.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "NameOfLock"); 
wl.acquire(); 

///////////onPause 
wl.release(); 

//////////for completion's sake, onResume 
if(!wl.isHeld()){ 
    wl.acquire(); 
} 

Tuy nhiên, vấn đề của bạn là thực sự trong tầm kiểm soát này

if(stateString=="nextone")

Điều này phải là if(stateString.equals("nextone"))

0

vui lòng kiểm tra liên kết này trước khi tiếp tục với khóa chế độ thức ăn nếu nó không giải quyết được vấn đề của bạn sau đó bạn có thể tiến hành với khóa thức.

Force Screen On

2

Tôi tìm thấy câu trả lời ở đây trên stack overflow: Turn off screen on Android

sao chép từ đó:

WindowManager.LayoutParams params = getWindow().getAttributes(); 
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON; 
params.screenBrightness = 0; 
getWindow().setAttributes(params); 

tôi đã cố gắng này ra và có vẻ như để làm việc.

+0

điều này giải quyết vấn đề: getWindow(). AddFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); – ademar111190

+0

mã này hoạt động tốt để tắt màn hình, nhưng làm cách nào để bật lại? – astuter

+0

Đặt params.screenBrightness thành giá trị từ 0 đến 1 cho bạn độ sáng từ 0% đến 100%. Đặt giá trị âm thành giá trị âm cho bạn độ sáng tự động. Tôi quên nơi tôi lần đầu tiên nhìn thấy điều này, nhưng tôi sử dụng nó mọi lúc. – Gdalya

0

Bạn có thể sử dụng

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
Các vấn đề liên quan