Можно ли отключить устройство с помощью приложения для Android TV? - PullRequest
0 голосов
/ 30 января 2019

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

Прежде всего я попытался найти что-то в документации здесь https://developer.android.com/training/tv/start/hardware#hardware-permissions, но аппаратного управления питанием нет.

После этого я попробовал некоторые варианты мобильных устройств на Android, например, здесь: программно отключил экран на Android

Например: WRITE_SETTINGS

Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, 1000);

Я думаю, что здесь проблема с получением разрешения во время выполнения, которое не может решить Android TV.

Также я попробовал варианты отсюда Android: Как программно включать и выключать экран?

mWakeLock = mPowerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "tag");
     mWakeLock.acquire();

без эффекта.

Манипуляции с яркостью экрана также без эффекта:

params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);

Есть идеи, что можно попробовать?Спасибо за любую помощь

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

На Nvidia Shield с Oreo в приложении настроек есть такие кнопки, как «Спать сейчас» и «Перезагрузить».На вашем месте я бы взглянул на исходный код приложения настроек и попытался найти API, которые вызываются этими кнопками.Может быть, посмотрев на это, вы скажете, по крайней мере, с чего начать.

https://android.googlesource.com/platform/packages/apps/TvSettings/+/master/Settings/src/com/android/tv/settings

0 голосов
/ 30 января 2019

Некоторые телевизоры имеют REST API, который можно использовать для вызова эквивалента кликов на пульте дистанционного управления.Я использую его в серии Sony Bravia, но не уверен, что он будет у других телевизоров.

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

...