2012-05-06 189 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();