首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MediaController总是在安卓上显示

MediaController总是在安卓上显示
EN

Stack Overflow用户
提问于 2010-12-16 15:54:25
回答 9查看 27.9K关注 0票数 24

我在我的应用程序中使用了mediacontroller,但它只显示了3秒。我已经搜索了很多,但在每个文档中我只看到show函数,set time out,但它没有任何效果。我怎么才能总是显示媒体控制器呢?

我测试过show(0),但没有效果。

EN

回答 9

Stack Overflow用户

发布于 2011-12-07 10:57:43

您可以扩展MediaController类并以编程方式将其实例设置为VideoView类:

代码语言:javascript
复制
import android.content.Context;
import android.util.AttributeSet;
import android.widget.MediaController;

public class MyMediaController extends MediaController {
    public MyMediaController(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyMediaController(Context context, boolean useFastForward) {
        super(context, useFastForward);
    }

    public MyMediaController(Context context) {
        super(context);
    }

    @Override
    public void show(int timeout) {
        super.show(0);
    }

}

用法如下:

代码语言:javascript
复制
VideoView myVideoView = (VideoView) findViewById(R.id.my_video_view);
MediaController mc = new MyMediaController(myVideoView.getContext());
mc.setMediaPlayer(myVideoView);
myVideoView.setMediaController(mc);
票数 27
EN

Stack Overflow用户

发布于 2014-01-19 19:21:08

您可以创建匿名内联类并覆盖某些方法。您需要重写hide方法,并且在其中什么也不做。您还需要重写dispatchKeyEvent方法以检查back键按下并调用super.hide()。否则,按下back时,控制器不会隐藏,活动无法关闭。

代码语言:javascript
复制
 mediaController = new MediaController(this){
        @Override
        public void hide() {
            // TODO Auto-generated method stub
            //do nothing
        }

        @Override
        public boolean dispatchKeyEvent(KeyEvent event) {

            if(event.getKeyCode() == KeyEvent.KEYCODE_BACK) {

                if (mediaPlayer != null) {
                    mediaPlayer.reset();
                    mediaPlayer.release();
                    mediaPlayer = null;
                }
                super.hide();
                Activity a = (Activity)getContext();
                a.finish();

            }
        return true;
        }
    };
票数 13
EN

Stack Overflow用户

发布于 2013-10-25 03:37:25

您还可以内联创建一个匿名类并覆盖此处的hide方法,而不必为它创建一个全新的类:

代码语言:javascript
复制
mediaController = new MediaController(this) {
    @Override
    public void hide() {
    //Do not hide.
    }
};
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4458529

复制
相关文章

相似问题

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