【问题标题】:Disable seekforward and seekbackward of mediacontroller android?禁用媒体控制器android的前向和后向搜索?
【发布时间】:2015-11-09 17:42:50
【问题描述】:

我正在播放来自 url 的视频,我想禁用视频的搜索栏跟踪。怎么可能。

这是我的代码:

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);

java.lang.NullPointerException
        at com.vfirst.offers.VideoBufferActivity.onClick(VideoBufferActivity.java:93)
        at android.view.View.performClick(View.java:4575)
        at android.view.View$PerformClick.run(View.java:18578)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5127)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)
        at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

    标签: android android-videoview mediacontroller mpmediaplayercontroller


    【解决方案1】:

    能够在这个帮助下解决

    需要在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);
                    }
                });
            }
        });
    

    【讨论】:

      【解决方案2】:

      您可以尝试创建没有搜索栏的自定义媒体控制器 UI。检查这个帖子 how to create custom UI for android MediaController

      或尝试破解,访问搜索栏并将可见性设置为 GONE

      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
              }
        }
      

      【讨论】:

      • mController 是 MediaController 的对象吗?
      • 这是最糟糕的事情。媒体播放器已经在管理多个 UI 更改,如果您循环播放它,将会导致混乱。
      猜你喜欢
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多