我已经创建了一个具有标准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;
}
});
}我被搞糊涂了,因为当我把方法放在setOnPreparedListener中时,它可以播放,而在setOnTouchListener中放置start()方法时,不能使用。
我不知道这是否与问题有关,但im在我的视频视图上缓冲一个youtube视频 (RTSP链接)。
任何帮助都是非常感谢的,谢谢。
发布于 2015-02-11 13:16:40
这应该是一个评论,但我的声誉还不够高。我没有看到您调用prepare()方法,所以当player处于initialized状态时,您可能正在尝试调用initialized。您可以尝试在onTouchListener回调中设置player对象的onPrepared()。
https://stackoverflow.com/questions/19067551
复制相似问题