#android #screen
#Android #экран
Вопрос:
Этот код уменьшает яркость экрана, и это работает для устройств Android 2.2. Но когда я попробовал это на своем эмуляторе (2.3) и на телефоне моего друга (2.3), я перешел на экран блокировки.
Есть идеи, почему и как я должен сделать, чтобы заставить его работать с 2.3?
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 0;
getWindow().setAttributes(lp);
Ответ №1:
На данный момент это старый вопрос, но эмулятор не поддерживает затемнение экрана, и такое поведение — просто сбой, мой делает то же самое в 2.1, 2.2 и т.д. В эмуляторе.
Что касается 2.3, я этого не видел. Пытались ли вы вместо этого установить 0 на что-то вроде 0.01, я читал (хотя никогда не видел), что на некоторых устройствах установка его на ноль приводит к этому, и на самом деле на эмуляторе, если вы используете 0.01, он не перейдет на экран блокировки, хотя, конечно, он по-прежнему ничего не делает (неподдерживаемое поведение)
Вы также можете попробовать логически или следующим образом
lp.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
Хотя я читал, что это противоречит интуиции, это позволяет поддерживать сенсорный экран включенным на устройствах, которые становятся черными при значении 0, и устраняет проблему, с которой также сталкивается телефон ваших друзей.
Честно говоря, учитывая все разные результаты, представленные на разных версиях ОС и платформах, я стараюсь держаться подальше от настройки screenBrightness, поскольку она кажется довольно ненадежной.