Отпустите WAKELOCK, когда экран выключен

Я создаю приложение для Android TV и Amazon Fire TV, которое использует WAKELOCK для предотвращения перехода устройства в спящий режим. Что мне нужно сделать, так это разблокировать WAKELOCK, когда экран выключен, например, когда кто-то нажимает кнопку питания на телевизоре, так как в этом случае Amazon Fire TV Stick и т. Д. Остаются активными, хотя телевизор выключен.

Затем мне нужно снова добавить WAKELOCK, когда телевизор включен. Какова принятая лучшая практика для обработки этого?

1 ответ

Решение

РЕДАКТИРОВАТЬ: согласно комментарию я обновляю этот ответ с наиболее эффективным методом.

В двух словах, вы можете достичь этого двумя способами:

  1. Проверьте, не отключен ли HDMI (в основном работает на телефонах, продолжайте читать для ТВ)
  2. Проверьте, не становится ли аудиоканал шумным. Согласно документации Android ( https://developer.android.com/guide/topics/media/mediaplayer.html) вы можете сделать что-то вроде следующего (изменить с помощью):

"Вы можете убедиться, что ваше приложение перестает воспроизводить музыку в этих ситуациях, обрабатывая намерение ACTION_AUDIO_BECOMING_NOISY, для которого вы можете зарегистрировать получателя, добавив в свой манифест следующее:

    <receiver android:name=".MusicIntentReceiver">
   <intent-filter>
      <action android:name="android.media.AUDIO_BECOMING_NOISY" />
   </intent-filter>
</receiver>

Это регистрирует класс MusicIntentReceiver как широковещательный получатель для этого намерения. Затем вы должны реализовать этот класс:

public class MusicIntentReceiver extends android.content.BroadcastReceiver {
       @Override
       public void onReceive(Context ctx, Intent intent) {
          if (intent.getAction().equals(
                        android.media.AudioManager.ACTION_AUDIO_BECOMING_NOISY)) {
              // signal your service to stop playback
              // (via an Intent, for instance)
          }
       }
    }
Другие вопросы по тегам