2016-05-30 43 views
0

我正在製作Android TV和Amazon Fire TV應用程序,該應用程序使用WAKELOCK來防止電視設備進入睡眠狀態。我需要做的是在屏幕關閉時釋放WAKELOCK,例如,當有人按下電視機上的電源按鈕時,因爲在這種情況下,雖然電視機已關閉,但Amazon Fire TV Stick等仍保持活動狀態。屏幕關閉時釋放WAKELOCK

然後我需要在電視機開機時重新添加WAKELOCK。處理這個問題的最佳做法是什麼?

回答

2

編輯:根據評論我正在用最有效的方法更新此響應。

簡單地說,你可以通過兩種方式實現:

  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) 
      } 
     } 
    } 
+0

在測試了兩種方法之後,在Amazon開發者論壇上進行了一些挖掘之後,看起來您是AUDIO_BECOMING_NOISY的唯一解決方案。 HDMI東西只檢測電纜是否實際連接,這對電話有好處,但對電視應用不好,因爲它們總是連接在一起。 – jskrwyk