Android禁止其他多媒體聲音

對於多媒體的application經常有需要禁止其他多媒體聲音的需求。

在網上搜索了相關的方法:

 

Java代碼  收藏代碼
  1. Intent i = new Intent("com.android.music.musicservicecommand");  
  2. i.putExtra("command""pause");  
  3. sendBroadcast(i);  
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "pause");
sendBroadcast(i);
後來發現這個方法只能解決部分問題,對於那些不支持這個Intent的APP及收音機等是不起作用的。

 

有一個根本性解決問題的方法,就是獲取聲音播放的硬件的焦點(個人理解),從而使其它APP停止播放。因爲要發出聲音肯定要硬件支持的。這裏關鍵是使用AudioManager類。具體代碼如下:

 

Java代碼  收藏代碼
  1. AudioManager mAudioManager = (AudioManager) context  
  2.         .getSystemService(Context.AUDIO_SERVICE);  
  3. if (mAudioManager != null) {  
  4.     try {  
  5.         mAudioManager.requestAudioFocus(null,  
  6.                 AudioManager.STREAM_MUSIC,  
  7.                 AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);  
  8.     } catch (Exception ex) {  
  9.   
  10.     }  
  11. }  
			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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章