2012-09-15 60 views
12

我想在我的Android應用程序中通過VideoView將播放視頻靜音。 我在VideoView Class中找不到任何方法。 任何想法如何做到這一點?在Android應用程序中通過VideoView將播放視頻靜音

我在MediaPlayer類中找到了一個「setVolume」方法,但是我無法找到任何可以通過MediaPlayer類播放視頻的工作代碼。 所以我相信我可以通過這種方法設置音量0。

因此,我正在尋找任何工作代碼來使用MediaPlayer Class播放視頻或如何使用VideoView Class控制音量。

下面是使用VideoView播放視頻的代碼,我正在使用它。

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_video); 

    VideoView videoView = (VideoView)this.findViewById(R.id.VVSimpleVideo); 
    MediaController mc = new MediaController(this); 
    mc.setAnchorView(videoView); 
    mc.setMediaPlayer(videoView); 
    videoView.setMediaController(mc); 
    String _path = "/mnt/sdcard/Movies/video5.mp4"; 

    videoView.setVideoPath(_path); 

    videoView.requestFocus(); 
    videoView.start(); 


} 
+0

嘗試使用AudioManager中提出的[這個類似的問題](http://stackoverflow.com/questions/4573667/how-to-mute-mediaplayer-in-android)。 – yorkw

+0

Hi yorkw, 我想在靜音模式下播放視頻。 那麼如何使用AudioManager播放視頻? – Vishal

+0

在使用AudioManager控制音量時使用VideoView播放視頻。 – yorkw

回答

2

我已經完成了這個使用MediaPlayer類。 我已經使用MediaPlayer類的setVolume函數將音量設置爲0. 我也意識到不使用AudioManager類,因爲如果將音量設置爲0,則使用AudioManager,然後將MediaPlayer的所有實例的音量設置爲0, VideoView。但是,如果您將使用MediaPlayer的setVolume()方法,那麼它只會將該實例的音量靜音。

同時將音量設置爲0,使用VideoView是易於使用的,因爲VideoView是MediaPlayer類的包裝,只允許訪問MediaPlayer的少數功能。 另外我已經閱讀了一些博客,雖然你可以使用VideoView實例引用MediaPlayer實例,但它非常複雜,不建議這樣做。 希望這將有助於其他新讀者如何嘗試做類似的事情。

22

如果你想獲得訪問VideoView你的MediaPlayer調用MediaPlayer.OnPreparedListenerMediaPlayer.OnCompletionListener,那麼你可以調用MediaPlayer.setVolume(0f, 0f);功能的音量設置爲0。

這樣做:

@Override 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_video); 

    VideoView videoView = (VideoView)this.findViewById(R.id.VVSimpleVideo); 
    MediaController mc = new MediaController(this); 
    mc.setAnchorView(videoView); 
    mc.setMediaPlayer(videoView); 
    videoView.setMediaController(mc); 
    String _path = "/mnt/sdcard/Movies/video5.mp4"; 

    videoView.setVideoPath(_path); 
    videoView.setOnPreparedListener(PreparedListener); 

    videoView.requestFocus(); 

    //Dont start your video here 
    //videoView.start(); 


} 

MediaPlayer.OnPreparedListener PreparedListener = new MediaPlayer.OnPreparedListener(){ 

    @Override 
    public void onPrepared(MediaPlayer m) { 
     try { 
       if (m.isPlaying()) { 
        m.stop(); 
        m.release(); 
        m = new MediaPlayer(); 
       } 
       m.setVolume(0f, 0f); 
       m.setLooping(false); 
       m.start(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      }  
    } 
}; 
+2

此解決方案沒有工作 –

+0

有時工作,有時不工作。 @RajiAC - 找到了可靠的解決方案? – Jaydev

15
videoview.setOnPreparedListener(new OnPreparedListener() { 

     @Override 
     public void onPrepared(MediaPlayer mp) { 

      mp.setVolume(0, 0); 
     } 
    }); 
+0

有時候工作,有時候不行。我的猜測是,如果在調用mp.setVolume時可以看到videoView,則會發生靜音。否則,不會發生任何行動。如果我錯了,請糾正我。 – Jaydev

+0

顯然它發生在加載videoView的時候 –

相關問題