lp.screenBrightness = 0.01f + значение / 100.0f;

я есть приложение, которое используется для, скажем, 4 часа, но только каждые 5 минут пользователь должен сделать ввод или прочитать экран. Перевод телефона в спящий режим и блокировка экрана немного раздражают. Итак, у меня есть два варианта:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); который не блокирует экран, но экран всегда яркий, я хотел бы затемнить его, когда нет активности. Просто из-за срока службы батареи, или это не имеет большого значения для этих 4 часов?

замок для пробужденияSCREEN_DIM_WAKE_LOCK что делает то, что я хочу, но мне сказали, чтобы использовать вариант 1 выше.

Могу ли я достичь желаемого как-то без пробуждения?

Ответы на вопрос(3)

PowerManager pm = (PowerManager) getSystemService (Context.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock (PowerManager.SCREEN_DIM_WAKE_LOCK, "Мой тег"); wl.acquire (); ..screen останется включенным в течение этого раздела .. wl.release ();

Смотрите здесь для получения дополнительной информации:http://developer.android.com/reference/android/os/PowerManager.html

Итак, я имею в виду, что вы должны получить пробную блокировку для менеджеров электропитания, прежде чем запускать новую активность, чтобы предотвратить блокировку экрана. И отпустите, когда вы закончите.

Вы также можете использовать lp.screenBrightness вместо lp.dimAmount

И обязательно введите значение выше 0, чтобы избежать блокировки экрана:

lp.screenBrightness = 0.01f + значение / 100.0f;

Решение Вопроса

WindowManager.LayoutParams lp = getWindow().getAttributes();  
lp.dimAmount=1.0f; 
getWindow().setAttributes(lp);  

затемнить / отогнать экран, когда вы хотите.

lp.dimAmount=1.0f полностью затемнит экран, но вы можете установить его по своему желанию со значениями от 0 (без затемнения) до 1.0f.

Вы можете установить таймер для вызова этого через 5 минут бездействия, а затем снова включить экран при любом сенсорном событии или что-то подобное.

 Rick07 окт. 2013 г., 16:06
Turbo, диалог был просто реальной диалоговой переменной из моего кода, но вы можете вызывать ее прямо из действия, в котором вы хотите затемнить экран (просто удалите «диалоговое окно» из последней строки). Я отредактирую его для ясности
 Anonsage19 мая 2016 г., 02:24
Хм, этот код не работал на моих устройствах. Протестировано на Android 6.0 (Nexus 5X и Samsung S7) и Android 5.0 (Nexus 4). Я тестировал поплавки -1, 0 и 1 без изменений. Я могу получить dimAmount 1.
 Tony Chan05 окт. 2013 г., 01:19
какаяdialog объект вы имеете в виду здесь? Из документов кажется, что это поле будет затемнено только за тем окном, на которое вы его устанавливаете. Так вы предлагаете создать фиктивное (возможно, невидимое) окно / диалог?
 Tony Chan08 окт. 2013 г., 22:34
Понимаю. Я был смущен из-за формулировки вдокументы: «Флаг окна: все, что находится за этим окном, будет затемнено». Так что, даже если вы примените это кActivity«sWindow, этоActivity все равно будет затемнено, а не только что за этим стоит? Вот почему я думал, что ты делаешь манекенDialog применить его к такActivity позади это тускнеет. Но я думаю, это также влияет наWindow ты применяешь это к.

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

Если вам действительно нужно держать экран неярким, вы можете использовать SCREEN_DIM_WAKE_LOCK. Если вы хотите больше контроля, вы также можете попробовать напрямую установить яркость экрана с помощью WindowManager.LayoutParams.screenBrightness.

 AndyAndroid26 янв. 2011 г., 16:28
неплохо, но у него есть «забавный эффект»: сначала я жду, пока экран не станет черным, затем я нажимаю на экран, и я снова в своей деятельности. Идеально до сих пор. Я нажимаю кнопку, которая запускает новое действие, которое вызывает экран блокировки, либо до тех пор, пока я не разблокирую его, либо если во втором действии установлен тот же флаг, то только на полсекунды, а затем я нахожусь во втором действии. Ни чего я не хочу. Если бы этот экран блокировки не появился на короткое время, это было бы прекрасно, есть идеи, как этого добиться?

Ваш ответ на вопрос