2013-01-24 185 views
2

我尝试了好几种解决方案发布,试图关闭屏幕在Android,包括:让屏幕关闭全屏Android应用

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

导致没有变化。

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

导致轻微变暗屏幕(在Android 4.2.1)

//Release all previously held WakeLocks 
if (mWakeLock.isHeld()) { 
    mWakeLock.release(); 
} 
//Then acquire a partial wake lock (which should allow the display to turn off) 
PowerManager powerMan = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE); 
mWakeLock = powerMan.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Partial WakeLock"); 
mWakeLock.acquire(); 

导致没有变化。

最后,非法

PowerManager powerMan = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE); 
powerMan.goToSleep(1000); 

这显然不起作用,因为:

<uses-permission android:name="android.permission.DEVICE_POWER" /> 

是不允许的(非系统应用)。

我假设这些问题是因为我的应用程序是android:theme="@style/FullscreenTheme"

是否有任何可行的解决方案,让全屏应用程序去睡觉而不牺牲美妙的全屏主题?

+1

“全屏”与保持屏幕无关。如果您不强制屏幕保持打开状态,则会根据用户的设置自行关闭屏幕。 – CommonsWare

+0

屏幕被设置为15秒超时,在插入电源关闭时保持清醒状态,并且在任何XML文档中均无法找到android:keepScreenOn =“true”。 我不确定还有什么问题:/ – Jono

+0

你在测试什么设备? – CommonsWare

回答

0

在写了一个简单的答案来尝试发布到@CommonsWare后,我发现问题没有持续。

我梳理了我的代码几次,仍然没有找到任何会导致屏幕保持清醒的状态。我从零开始重写了整个应用程序(总是一个很好的练习,结束了更清洁的逻辑),问题就消失了。

获得的经验 - 如果所有其他方面都失败了,请重新写入所有内容。这本身是一个有用的练习:)