【问题标题】:Disabling sound in a video禁用视频中的声音
【发布时间】:2011-07-21 04:43:20
【问题描述】:

您好,我是 android 开发和游戏开发的新手。我目前有一个打开的过场动画,它是一个视频视图,但如果用户从首选项菜单中选择静音音乐,我想静音。问题是我不知道如何在不完全关闭视频的情况下将视频视图中的音乐静音!

【问题讨论】:

    标签: android video media-player preferences


    【解决方案1】:

    AudioManager 始终不是一个好选择,因为您将所有系统静音...

    如果你想访问 VideoView 的 MediaPlayer,你必须调用 MediaPlayer.OnPreparedListener 和 MediaPlayer.OnCompletionListener,然后你可以调用 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();
                }    
         }
     };
    

    【讨论】:

    • 这对于低 API、媒体控制器请求 21 和许多应用使用低 API 的情况来说不是一个好的选择。
    • @LamaTo - “低 API”和“请求 21”是什么意思?
    • @Jaydev - API 级别 21 适用于 android 5.0 及更高版本。请参阅this 了解更多信息
    • @LamaTo 我相信您对正在使用的 MediaController 感到困惑。这是 android.widget.MediaController,它从 API 1 开始可用,而不是 android.media.session.MediaController,它是在 API 21 中添加的。这就是命名不佳的问题:/
    【解决方案2】:

    您可以做的最好的事情是在过场动画开始时使用AudioManager 将音乐流静音,并在完成后取消静音:VideoView 不提供独立的静音控件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-16
      • 2014-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-27
      • 2014-02-25
      • 1970-01-01
      相关资源
      最近更新 更多