首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >媒体控制器的默认SeekBar不同步

媒体控制器的默认SeekBar不同步
EN

Stack Overflow用户
提问于 2017-04-26 14:45:08
回答 3查看 692关注 0票数 0

我正在添加一个基本的视频播放器与VideoView和MediaController。

视频一直播放到最后,MediaController提供的SeekBar会在0:02分钟停止。我已经在3个不同的设备上用不同的视频长度试过了。

如何保证SeekBar进度和时间与视频同步?

相关代码如下:

VideoPlayerDialog.java

videoView.setVisibility(View.VISIBLE);
MediaController mediaController = new MediaController(getContext());

FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
lp.gravity = Gravity.BOTTOM;
mediaController.setLayoutParams(lp);

((ViewGroup) mediaController.getParent()).removeView(mediaController);
((FrameLayout) findViewById(R.id.videoViewWrapper)).addView(mediaController);

videoView.setMediaController(mediaController);
videoView.setVideoURI(imageUri);
videoView.requestFocus();

dialog_image_preview.xml

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/black87">

    <uk.co.senab.photoview.PhotoView
        android:id="@+id/photo_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true" />

    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/videoViewWrapper"
        android:layout_centerInParent="true"
        android:layout_margin="30dp">

        <VideoView
            android:id="@+id/videoplayer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </FrameLayout>

    <ImageButton
        android:id="@+id/close"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:background="@drawable/circular_button_material"
        android:elevation="10dp"
        android:padding="5dp"
        android:src="@drawable/ic_close" />
</RelativeLayout>
EN

回答 3

Stack Overflow用户

发布于 2018-06-01 03:47:30

我已经找到了答案。在您的MediaController构造函数中,覆盖它的hide()空并在其中使用this.show(),这样当它隐藏时MediaController就会显示出来。这样做的原因是,即使使用show(0),MediaController在默认情况下也会在3秒后自动隐藏。因此,如果您强制显示MediaController,它仍然会在3秒后表现为隐藏状态(请查看工具栏停止同步,播放/暂停按钮不更新)。重写hide()空来显示MediaController可以解决这个问题。

您还可以创建一个自定义类,将MediaPlayer扩展到ovverride hide()

示例代码:

final MediaController mediaController =  new MediaController(context){
    @Override
    public void hide() {
        this.show();
    }
};
票数 3
EN

Stack Overflow用户

发布于 2017-04-26 22:47:10

您可以尝试使用以下命令自动将媒体控制器连接到视频视图

MediaController mediaController = new MediaController(this); mediaController.setAnchorView(videoView); videoView.setMediaController(mediaController);

票数 0
EN

Stack Overflow用户

发布于 2021-06-11 01:18:05

根据here的参考,我能够解决搜索栏在2秒后停止的问题,以及屏幕冻结的背压问题。

我使用dispatchkeyevent来检测背部按下,并在视频开始后显示媒体控制器。

        videoView.setOnPreparedListener { mp ->

        progressBar.visibility = View.GONE

        mc = object : MediaController(mContext) {

            override fun dispatchKeyEvent(event: KeyEvent): Boolean {

                if (event.keyCode == KeyEvent.KEYCODE_BACK) {
                    super.hide()//Hide mediaController
                    scoreDialog.dismiss()//Close this dialog/activity

                    return true//If press Back button, finish here
                }
                //If not Back button, other button work as usual.
                return super.dispatchKeyEvent(event)
            }

        }
        videoView.setMediaController(mc)
        mc.setAnchorView(videoView)

        (mc.parent as ViewGroup).removeView(mc)

        (scoreDialog.findViewById(R.id.videoViewWrapper) as FrameLayout).addView(mc)
        
        mp.start()
        mc.show(0)
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43626853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档