2012-05-06 65 views
0

我想關閉android屏幕,然後再次打開幾秒鐘後。 「關閉」的部分作品,與此代碼:關閉/在Android屏幕上

WindowManager.LayoutParams layoutParam = getWindow().getAttributes(); 
oldBrightness = android.provider.Settings.System.getInt(getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS)/255f; 
layoutParam.screenBrightness = 0; 
layoutParam.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; 
getWindow().setAttributes(layoutParam); 

但後來,當我嘗試打開屏幕再次,它不與此代碼的工作:

WindowManager.LayoutParams layoutParam = getWindow().getAttributes(); 
layoutParam.screenBrightness = oldBrightness; 
layoutParam.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; 
getWindow().setAttributes(layoutParam); 

任何想法解決?

感謝

+0

何時,調試,你檢查'oldBrightness'值嗎? – Zakaria

回答

0

首先,你確定了 「/ 255F」 在這一行:

oldBrightness = android.provider.Settings.System.getInt(getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS)/255f; 

什麼是 「oldBrightness」 當你的get/set值嗎?

也許你可以試試這個:

PowerManager.WakeLock lck = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag"); 
lck.acquire(); 

正常的喚醒鎖不打開屏幕,但會導致它留在用戶導致它。但是這個標誌迫使屏幕立即打開。它需要「android.permission.WAKE_LOCK」。

更多一點:

http://developer.android.com/reference/android/os/PowerManager.html#PARTIAL_WAKE_LOCK

而且屏幕特性(開,關,明亮,暗淡等):

http://developer.android.com/reference/android/os/PowerManager.html

+0

android.provider.Settings.System.getInt(getContentResolver(),android.provider.Settings.System.SCREEN ...返回0到255之間的值,並且layoutParam.screenBrightness等待0和1. 隨着代碼只有手動關閉屏幕,而不是使用我的代碼才能打開屏幕,所以我嘗試使用喚醒鎖關閉,但它不會像這樣關閉: PowerManager pm =(PowerManager)SecureStopwatchExecActivity。 this.getSystemService(Context.POWER_SERVICE); \t \t \t \t \t \t PowerManager.WakeLock WL = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, 「標籤」); wl.acquire(); wl.release(); – user1029309

1

我覺得你可以試試PowerManager的激活鎖定也許它會工作。我在我的應用程序中使用此代碼。它運作良好。 :)

另外你需要在清單中設置權限。

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

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