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

Posted

技术标签:

【中文标题】准备好后如何使视频视图不自动启动【英文标题】:how to make a videoview NOT started automatically after prepared 【发布时间】:2013-09-28 13:33:35 【问题描述】:

我创建了一个带有标准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 链接)。

感谢您的帮助。

【问题讨论】:

请帮助,任何人... :D 【参考方案1】:

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

【讨论】:

以上是关于准备好后如何使视频视图不自动启动的主要内容,如果未能解决你的问题,请参考以下文章

如何在 wkwebview 视频中禁用自动启动 AVPlayer

操作步骤EasyNVR硬件设备如何设置通电不自动启动?

使 windows update 自动安装后,不自动重新启动windows

如何使用自动布局在其父视图的一半中启动视图?

如何在 MFC 应用程序首次启动时禁用自动文档/视图创建

如何检查程序是不是从自动启动运行?