准备好后如何使视频视图不自动启动
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