2012-09-15 122 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的时候 –

相关问题