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

と を呼び出さなければならない の にアクセスしたい場合はMediaPlayer、関数を呼び出して音量を 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を使用して音量を0に設定すると、MediaPlayerとVideoViewのすべてのインスタンスの音量が0に設定されるため、AudioManagerクラスを使用しないことに気付きました。ただし、MediaPlayerのsetVolume()メソッドを使用する場合は、そのインスタンスのボリュームのみをミュートします。

また、ボリュームを0に設定すると、VideoViewを使用してボットが簡単になります。VideoViewはMediaPlayerクラスのラッパーであり、MediaPlayerのいくつかの機能にアクセスできるためです。また、VideoViewインスタンスを使用してMediaPlayerインスタンスを参照することはできますが、非常に複雑であり、そうすることはお勧めしません。これが他の新しい読者に同様のことをしようとする方法に役立つことを願っています。

于 2012-09-23T05:22:44.057 に答える