2012-02-15 246 views
5

我正在製作一個應用程序,使用接近傳感器打開和關閉屏幕。 鄰近代碼已完成,但使用屏幕控件時遇到了問題。Android Java:關閉屏幕

我看過,我應該使用,

PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
manager.goToSleep(int amountOfTime); 

對於這一點,我需要以使它工作給予特殊的權限,但我還沒有想出如何做到這一點。

另外,我看了一下改變屏幕亮度

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

但這種方式只關閉屏幕上我的應用程序;如果我的應用程序在後臺運行,它不起作用。

我也看到了有關使用激活鎖定(我用它來喚醒從屏幕關閉我的手機),但是當我這樣做,沒有任何反應,當

PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Your Tag"); 
wl.acquire(); 
wl.release(); 

不過。

有沒有其他方法可以做到這一點?

+0

見http://stackoverflow.com/questions/3643907/putting-the-system-to-sleep-on-android – 2012-02-15 14:13:14

+0

感謝的,但似乎這個問題既沒有得到解決有 – Bertrand 2012-02-15 14:36:39

+0

@坐:你是怎麼解決這個問題的? – astuter 2014-06-10 10:43:48

回答

1

你需要給你的應用正確的權限要做到這一點:

添加<uses-permission android:name="android.permission.DEVICE_POWER" />到您的清單中的<manifest>標籤內

如果你想保持你的屏幕上使用此,由戴安娜Hackborn的建議在谷歌加: KeepScreenOn

+0

謝謝你的回答。我已將該權限放入清單中,但由於它是第2級權限,因此我們需要具有特定權限(系統)才能使用它。這就是我所說的「特殊權限」,對不起,我已經以非常糟糕的方式解釋了它。 – Bertrand 2012-02-16 06:52:49