【问题标题】:Release WAKELOCK when screen is off屏幕关闭时释放 WAKELOCK
【发布时间】:2016-05-30 17:27:28
【问题描述】:

我正在制作一个 Android TV 和 Amazon Fire TV 应用,该应用使用 WAKELOCK 来防止电视设备进入睡眠状态。我需要做的是在屏幕关闭时释放 WAKELOCK,例如当有人按下电视上的电源按钮时,在这种情况下,尽管电视已关闭,亚马逊 Fire TV Stick 等仍保持活动状态。

然后我需要在电视开机时重新添加 WAKELOCK。处理此问题的公认最佳做法是什么?

【问题讨论】:

    标签: android android-tv android-wake-lock amazon-fire-tv


    【解决方案1】:

    编辑:根据评论,我正在使用最有效的方法更新此回复。

    简而言之,您可以通过两种方式实现这一目标:

    1. 检查 HDMI 是否断开(主要适用于手机,继续阅读电视)
    2. 检查音频通道是否有噪音。根据 Android 文档 (https://developer.android.com/guide/topics/media/mediaplayer.html#noisyintent),您可以执行以下操作(更改为 ):

    “您可以通过处理 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)
              }
           }
        }
    

    【讨论】:

    • 在测试了这两种方法并在亚马逊开发者论坛上进行了一些挖掘之后,似乎您的 AUDIO_BECOMING_NOISY 解决方案是唯一有效的解决方案。 HDMI 仅检测是否实际连接了电缆,这对手机有利,但对电视应用程序不利,因为它们始终处于连接状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多