2013-01-24 3 views
2

Я пытался несколько опубликованных решений, чтобы попытаться отключить экран в 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 с, он не встает, а подключенный отключен, android: keepScreenOn = "true" нигде не может быть найден ни в одном из XML-документов. Я не уверен, что еще может быть проблемой:/ – Jono

+0

На каком устройстве вы тестируете это? – CommonsWare

ответ

0

После написания простого ответа, чтобы попытаться опубликовать сообщение @CommonsWare, я обнаружил, что проблема не сохранилась.

Я несколько раз прочесывал свой код и до сих пор не нашел ничего, что могло бы заставить экран бодрствовать. Я переписал все приложение с нуля (всегда хорошее упражнение, в конечном итоге с более чистой логикой), и проблема исчезла.

Извлеченный урок - если все остальное не работает, перезапишите все снова. Это полезное упражнение само по себе :)