2010-07-07 87 views
2

我正在使用VideoView播放mp4視頻。如果用戶選擇,我想讓用戶選擇以聲音觀看此視頻或將其靜音。我不使用mediaController允許用戶停下來玩,我有「觸摸」事件來控制它。向用戶提供播放帶或不帶音頻視頻的選項

更新:我有一個菜單,我已經添加了一個「靜音」圖標。現在我正試圖弄清楚如何將靜音添加到此按鈕。我正在從Android AudioManager讀取一些信息,特別是setStreamMute。下面是該API的說:

public void setStreamMute (int streamType, boolean state) 

自:API等級1

靜音或取消靜音音頻流。

靜音命令可以防止客戶端進程死亡:如果某個流上的活動靜音請求死亡,該流將自動取消靜音。

給定流的靜音請求是累積的:AudioManager可以接收來自一個或多個客戶端的多個靜音請求,並且只有在接收到相同數量的取消靜音請求時,流纔會取消靜音。

爲了獲得更好的用戶體驗,應用程序必須取消靜音onPause()中的靜音流並在適當的情況下再次靜音onResume()。

此方法只能用於替換音頻設置或主電話應用程序的平臺範圍管理的應用程序。參數 streamType要靜音/取消靜音的流。 state所需的靜音狀​​態:靜音開啓爲true,靜音爲false關閉

+0

看到這裏http://stackoverflow.com/a/38587396/228042 – 2016-07-26 10:31:37

回答

6

使用AudioManager服務來靜音和取消靜音與您的視頻相關的流。從方法(S)已宣佈響應用戶觸摸事件,稱類似的方法:

public void mute() { 
    AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
    am.setStreamMute(AudioManager.STREAM_MUSIC, true); 
} 

public void unmute() { 
    AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
    am.setStreamMute(AudioManager.STREAM_MUSIC, false); 
} 

這將使其他流(通知,報警等)主動這樣你就不會沉默整個設備只是爲了靜音視頻。

此外,如果您需要向您的活動建議哪個流應推送音頻,您可以撥打Activity.setVolumeControlStream(AudioManager.STREAM_MUSIC)將您的活動窗口與該流綁定。

+0

這是有道理的,但我很困惑如何從我的一個菜單按鈕調用這些。 case R.id.main_menu_mute: – taraloca 2010-07-07 17:41:41

+0

好的...我只是通過將靜音()放入我的「案例」中找出第一個按鈕,但現在我需要弄清楚如何取消靜音另一次點擊。 – taraloca 2010-07-07 17:53:40

1

我能夠實現我希望在菜單按鈕中包含靜音按鈕。用戶每次與按鈕交互時,視頻都會靜音或取消靜音。下面是代碼:

private AudioManager mAm; 
private boolean mIsMute; 

// Audio mgr 
mAm = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
mIsMute = false; 

public void isMute() { 

     if(mIsMute){  
      mAm.setStreamMute(AudioManager.STREAM_MUSIC, false); 
      mIsMute = false; 

     }else{ 
      mAm.setStreamMute(AudioManager.STREAM_MUSIC, true); 
      mIsMute = true; 
     } 
    } 

然後我盒內:

public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()){ 

    // Mute 
    case R.id.main_menu_mute: 
     isMute(); 
     break; 

    ......... 
    } 

    return super.onOptionsItemSelected(item); 
} 
+0

嗨Taraloca, 我已經嘗試過上述方法,它的工作原理..但如何在後臺播放音頻? – Samurai 2011-12-16 21:23:37