標準でビデオビューを作成しましmedia controller
た。でメソッドを呼び出して動画を再生できたので、動画は自己準備が完了すると自動的に再生されます。start()
setOnPreparedListener
ただし、私がやりたいのは、ビデオをスタンバイにすることです(自動的に再生しない)ので、ユーザーはビデオビューをタップ/クリック/タッチしてビデオを開始する必要があります。
私はいくつかのグーグルを行いました。また、ビデオビューでメソッド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 リンク) をバッファリングしています。
どんな助けでも大歓迎です、ありがとう。