Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
禁用mediacontroller android的seekforward和seekbackward?_Android_Android Videoview_Mediacontroller_Mpmediaplayercontroller - Fatal编程技术网

禁用mediacontroller android的seekforward和seekbackward?

禁用mediacontroller android的seekforward和seekbackward?,android,android-videoview,mediacontroller,mpmediaplayercontroller,Android,Android Videoview,Mediacontroller,Mpmediaplayercontroller,我正在从url播放视频,我想禁用视频的seekbar跟踪。怎样才能做到呢 这是我的代码: videoUrl = "http://download.itcuties.com/teaser/itcuties-teaser-480.mp4"; videoview.setVideoPath(videoUrl); mediaController = new MediaController(this, false); int topContainerId = getResources

我正在从url播放视频,我想禁用视频的seekbar跟踪。怎样才能做到呢

这是我的代码:

videoUrl = "http://download.itcuties.com/teaser/itcuties-teaser-480.mp4";
    videoview.setVideoPath(videoUrl);
    mediaController = new MediaController(this, false);
    int topContainerId = getResources().getIdentifier("mediacontroller_progress", "id", "android");
    seekBarVideo=(SeekBar)mediaController.findViewById(topContainerId);
    seekBarVideo.setEnabled(false);
    mediaController.setAnchorView(videoview);
    videoview.setMediaController(mediaController);
应用程序崩溃:seekBarVideo.setEnabled(false)


您可以尝试在不使用seekbar的情况下创建自定义mediacontroller UI。查看此帖子

或者尝试黑客攻击,获得seekbar的访问权限,并将可见性设置为“消失”

final int progressBarId = getResources().getIdentifier("mediacontroller_progress", "id", "android");
final SeekBar seekbar = (SeekBar) mController.findViewById(progressBarId);
编辑

尝试在MediaController内的子视图中循环,直到找到搜索栏,然后将其隐藏

private void styleMediaController(View view) {
        if (view instanceof MediaController) {
            MediaController v = (MediaController) view;
            for(int i = 0; i < v.getChildCount(); i++) {
                styleMediaController(v.getChildAt(i));
            }
        } else
        if (view instanceof LinearLayout) {
            LinearLayout ll = (LinearLayout) view;
            for(int i = 0; i < ll.getChildCount(); i++) {
                styleMediaController(ll.getChildAt(i));
            }
        } else if (view instanceof SeekBar) {
            // set progress bar color
            SeekBar seeker = (SeekBar) view;
            //hide seekbar here
        }
  }
private void styleMediaController(视图){
if(查看MediaController的实例){
MediaController v=(MediaController)视图;
对于(int i=0;i
能够借助于此解决问题

需要在videoview的onPreparedListener中获取seekbar

 videoview.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            int topContainerId = getResources().getIdentifier("mediacontroller_progress", "id", "android");
            seekBarVideo = (SeekBar) mediaController.findViewById(topContainerId);
            seekBarVideo.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
                @Override
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

                }

                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {
                    seekBar.setEnabled(false);
                }

                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {
                    seekBar.setEnabled(false);
                }
            });
        }
    });

mController是MediaController的对象?这是最糟糕的事情。Media player已经在管理多个UI更改,如果您循环它,将导致混乱。
 videoview.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            int topContainerId = getResources().getIdentifier("mediacontroller_progress", "id", "android");
            seekBarVideo = (SeekBar) mediaController.findViewById(topContainerId);
            seekBarVideo.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
                @Override
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

                }

                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {
                    seekBar.setEnabled(false);
                }

                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {
                    seekBar.setEnabled(false);
                }
            });
        }
    });