簡體   English   中英

在Android應用程序中通過VideoView靜音播放視頻

[英]Mute a playing video by VideoView in Android Application

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


}

如果您想要訪問VideoViewMediaPlayer ,您必須調用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();
            }    
     }
 };
videoview.setOnPreparedListener(new OnPreparedListener() {

        @Override
        public void onPrepared(MediaPlayer mp) {

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

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

使用VideoView也可以將音量設置為0,因為VideoView是MediaPlayer類的包裝器,只允許訪問MediaPlayer的一些功能。 我也讀過一些博客,雖然你可以使用VideoView實例引用MediaPlayer實例,但它非常復雜,不建議這樣做。 希望這會對其他新讀者如何嘗試做類似的事情有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM