22

我想在我的 Android 应用程序中通过 VideoView 静音正在播放的视频。我在 VideoView 类中找不到任何方法。知道怎么做吗?

我在 MediaPlayer 类中找到了一个方法“setVolume”,但是我找不到任何工作代码来通过 MediaPlayer 类播放视频。所以我相信我可以通过这种方法设置音量 0。

因此,我正在寻找任何工作代码来使用 MediaPlayer 类播放视频或如何使用 VideoView 类控制音量。

下面是使用我正在使用的 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();


}
4

3 回答 3

30

如果你想访问你必须调用的MediaPlayera ,那么你可以调用函数将音量设置为 0。VideoViewMediaPlayer.OnPreparedListenerMediaPlayer.OnCompletionListenerMediaPlayer.setVolume(0f, 0f);

做这个:

@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();
            }    
     }
 };
于 2013-01-28T22:52:47.990 回答
24
videoview.setOnPreparedListener(new OnPreparedListener() {

        @Override
        public void onPrepared(MediaPlayer mp) {

            mp.setVolume(0, 0);
        }
    });
于 2014-06-11T11:29:11.520 回答
2

我已经使用 MediaPlayer 类完成了这项工作。我已经使用 MediaPlayer 类的 setVolume 函数将音量设置为 0。我也意识到不要使用 AudioManager 类,因为如果使用 AudioManager 将音量设置为 0,那么它会将 MediaPlayer 和 VideoView 的所有实例的音量设置为 0。但是,如果您将使用 MediaPlayer 的 setVolume() 方法,那么它只会静音该实例的音量。

使用 VideoView 将音量设置为 0 也很容易,因为 VideoView 是 MediaPlayer 类的包装器,只允许访问 MediaPlayer 的少数功能。另外我在一些博客上读到,虽然您可以使用 VideoView 实例引用 MediaPlayer 实例,但它非常复杂,不建议这样做。希望这对其他新读者如何尝试做类似的事情有所帮助。

于 2012-09-23T05:22:44.057 回答