如何使视频视图在准备好后不自动开始



我创建了一个带有标准media controller的视频视图。我能够通过setOnPreparedListener中调用start()方法来播放视频,因此视频将在完成自己准备后自动播放。

但是,我想做的是使视频待机(自动播放(,因此用户需要点击/单击/触摸视频视图才能开始视频。

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

这是完整的代码:

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

我很困惑,因为当我将start()方法放入setOnPreparedListener时可以播放它,但当我将其放入setOnTouchListener时就不能播放了。

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

任何帮助不胜感激,谢谢。

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

最新更新