2012-02-15 164 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