對於多媒體的application經常有需要禁止其他多媒體聲音的需求。
在網上搜索了相關的方法:
- Intent i = new Intent("com.android.music.musicservicecommand");
- i.putExtra("command", "pause");
- sendBroadcast(i);
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "pause");
sendBroadcast(i);
後來發現這個方法只能解決部分問題,對於那些不支持這個Intent的APP及收音機等是不起作用的。
有一個根本性解決問題的方法,就是獲取聲音播放的硬件的焦點(個人理解),從而使其它APP停止播放。因爲要發出聲音肯定要硬件支持的。這裏關鍵是使用AudioManager類。具體代碼如下:
- AudioManager mAudioManager = (AudioManager) context
- .getSystemService(Context.AUDIO_SERVICE);
- if (mAudioManager != null) {
- try {
- mAudioManager.requestAudioFocus(null,
- AudioManager.STREAM_MUSIC,
- AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
- } catch (Exception ex) {
- }
- }
AudioManager mAudioManager = (AudioManager) context
.getSystemService(Context.AUDIO_SERVICE);
if (mAudioManager != null) {
try {
mAudioManager.requestAudioFocus(null,
AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
} catch (Exception ex) {
}
}
注意看requestAudioFocus函數第三個參數的使用,AudioManager.AUDIOFOCUS_GAIN_TRANSIENT表示臨時獲取音樂播放硬件焦點。
具體參考:官方文檔https://developer.android.google.cn/reference/android/media/AudioManager.html