首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使视频视图在准备好后不会自动启动

如何使视频视图在准备好后不会自动启动
EN

Stack Overflow用户
提问于 2013-09-28 13:33:35
回答 1查看 2.5K关注 0票数 4

我已经创建了一个具有标准media controller的视频视图。我是,通过调用setOnPreparedListener中的start()方法来播放视频,所以视频在准备完成后会自动播放。

然而,我想做的是让视频备用(而不是自动播放),所以用户需要点击/点击/触摸视频视图来启动视频。

我做了一些谷歌搜索,我还尝试在我的视频视图上使用setOnTouchListener,并在那里调用start()方法。但是结果是出乎意料的(也是令人困惑的),一个弹出对话框出现,并说“不能播放”

这是完整的代码:

代码语言:javascript
复制
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);

        txtTitle = (TextView)findViewById(R.id.txtTitle);
        player = (VideoView)findViewById(R.id.player);

        Bundle video = getIntent().getExtras();

        if(video != null)
        {
            id = video.getString("id");
            title = video.getString("title");
            rtsp = video.getString("rtsp");
        }

        txtTitle.setText(title);

        pDialog = new ProgressDialog(this);
        pDialog.setTitle("Please Wait...");
        pDialog.setMessage("Buffering...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();

        try {
            // Start the MediaController
            MediaController mediacontroller = new MediaController(this);
            mediacontroller.setAnchorView(player);
            // Get the URL from String VideoURL
            Uri uri = Uri.parse(rtsp);
            player.setMediaController(mediacontroller);
            player.setVideoURI(uri); 
            player.setBackgroundColor(Color.WHITE);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }

        player.requestFocus();
        player.setOnPreparedListener(new OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer arg0) {
                // TODO Auto-generated method stub
                pDialog.dismiss();
                player.setBackgroundColor(Color.TRANSPARENT);
                //the video will be played if i call the start() method here
            }
        });

        player.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View arg0, MotionEvent arg1) {
                // TODO Auto-generated method stub
                //"The video cant be played" pop up dialog appeared, video wont start
                player.start();
                return false;
            }
        });
    }

我被搞糊涂了,因为当我把方法放在setOnPreparedListener中时,它可以播放,而在setOnTouchListener中放置start()方法时,不能使用

我不知道这是否与问题有关,但im在我的视频视图上缓冲一个youtube视频 (RTSP链接)。

任何帮助都是非常感谢的,谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-02-11 13:16:40

这应该是一个评论,但我的声誉还不够高。我没有看到您调用prepare()方法,所以当player处于initialized状态时,您可能正在尝试调用initialized。您可以尝试在onTouchListener回调中设置player对象的onPrepared()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19067551

复制
相关文章

相似问题

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