在Android应用程序中通过VideoView静音播放视频

Vis*_*hal 17 video android

我想在我的Android应用程序中静音播放Video by VideoView.我在VideoView Class中找不到任何方法.知道怎么做吗?

我在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();


}
Run Code Online (Sandbox Code Playgroud)

Leo*_*ena 28

如果你想进入MediaPlayerVideoView你要调用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();
            }    
     }
 };
Run Code Online (Sandbox Code Playgroud)


Ahm*_*lan 20

videoview.setOnPreparedListener(new OnPreparedListener() {

        @Override
        public void onPrepared(MediaPlayer mp) {

            mp.setVolume(0, 0);
        }
    });
Run Code Online (Sandbox Code Playgroud)

  • 有时工作,有时不工作.我的猜测是,如果在调用mp.setVolume时可以看到videoView,则会发生静音.否则,不会发生任何操作.如果我错了,请纠正我. (2认同)

Vis*_*hal 4

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

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