我有这段代码用于在VideoView
myVideoView = (VideoView) findViewById(R.id.VideoView);
myVideoView.setVideoURI(Uri.parse(path));
myVideoView.requestFocus();
myVideoView.start();
当视频播放完毕后,我收到消息:“抱歉,此视频无法播放”。我想缓存视频播放完毕的那一刻。我怎么能这样做?
这是我的代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video);
Bundle extras = getIntent().getExtras();
path = extras.getString("path");
idPlaylist = extras.getString("idPlaylist");
timer = extras.getString("timer");
myVideoView = (VideoView) findViewById(R.id.VideoView);
myVideoView.setVideoURI(Uri.parse(path));
myVideoView.requestFocus();
myVideoView.start();
myVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
Intent i = new Intent(getBaseContext(),
com.PlayerOrange.ViewPlaylist.class);
i.putExtra("id", idPlaylist);
i.putExtra("timer", timer);
startActivity(i);
finish();
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
System.out.println("Playing "+myVideoView.isPlaying());
if ((keyCode == KeyEvent.KEYCODE_BACK) && (myVideoView.isPlaying()==true)) {
//nothing happens
} else {
Intent i = new Intent(getBaseContext(),
com.PlayerOrange.ViewPlaylist.class);
i.putExtra("id", idPlaylist);
i.putExtra("timer", timer);
startActivity(i);
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
答案 0 :(得分:14)
myVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer vmp) {
Intent i = new Intent(getBaseContext(),
com.PlayerOrange.ViewPlaylist.class);
i.putExtra("id", idPlaylist);
i.putExtra("timer", timer);
startActivity(i);
currentActivityName.finish();
}
});
还要确保myVideoView不具有静态效果。如果是,则删除静态..
更多信息here
查看Starting Activity when video is finished playing
Android – Video/Music player sample
OnCompletion video notification on MediaController and VideView usage?