2011-07-03 55 views
2

我試圖檢測Android聲音,並在他們發出噪音時暫停我的應用音樂(暫時或永久)。如何在電話鈴響,短信收到等時暫停音樂?

該代碼顯得無能爲力(停止暫停音樂和p寫入日誌),它永遠不會被調用:

public class PollyPrissyPants extends Activity implements OnAudioFocusChangeListener { 
    // Blah blah blah 
    public void onAudioFocusChange(int mal) { 
     p("--CHANGE!!!--" + mal); 
     stop(); 
    } 
    // Yada yada yada 
} 

我必須將它設置在其他地方,以及? @Override是否相關?

我還沒有嘗試PhoneStateListener,但如果可能的話,我不想分別對待電話,警報,通知,遊戲等。我現在使用振動,但它作爲解決方案很糟糕。如果我打電話,我必須回答,然後快速找到我的應用程序並暫停。

+0

[Pause song when phone rings]可能重複(http://stackoverflow.com/questions/6016800/pause-song-when-phone-rings) – Kon

回答

1

你必須註冊OnAudioFocusListenerAudioManager

audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
audio.requestAudioFocus(this, 
     AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN); 

this參數是要實現OnAudioFocusListener類的引用。

+0

太棒了!完美的工作:)這是否意味着我應該這樣做,無論何時我開始/停止音樂,如更改請求,至少要禮貌其他應用程序? – karnok

+0

創建活動或服務時,您只需要一次請求音頻焦點。但是這樣做是個好主意,所以沒有兩個應用程序試圖同時播放音樂。 –