我想要发生的事情就像youtube,它首先显示视频广告,然后播放第二个视频[真实视频]。这些视频来自网络,我需要在我的VideoView中播放它们。感谢Lazy Ninja的代码,因为我实现了我想要的,但是可以使用VideoView而不是SurfaceView吗?如果是,它的优点和缺点是什么?任何帮助将非常感激。谢谢!
答案 0 :(得分:0)
setNextMediaPlayer()
如果你的目标高于API 16,那么这应该可以胜任。
如果您的目标低于API 16,则可以使用以下方法
在我的一个项目中,我只使用了MediaPlayer()
在这种情况下,我在setDataSource
中设置了onCompletion(){};
(),而没有再次初始化MediaPlayer。
public class Player extends Activity implements
OnCompletionListener, MediaPlayer.OnPreparedListener, SurfaceHolder.Callback {
private MediaPlayer player;
private SurfaceView surface;
private SurfaceHolder holder;
public void onCreate(Bundle b) {
super.onCreate(b);
setContentView(R.layout.main);
surface = (SurfaceView)findViewById(R.id.surface);
holder = surface.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
playVideo(firstUrl);
}
public void onCompletion(MediaPlayer arg0) {
playVideo(nextClipUrl);
}
public void onPrepared(MediaPlayer mediaplayer) {
holder.setFixedSize(player.getVideoWidth(), player.getVideoHeight());
player.start();
}
private void playVideo(String url) {
try {
if (player == null) {
player = new MediaPlayer();
player.setScreenOnWhilePlaying(true);
}
else {
player.stop();
player.reset();
}
player.setDataSource(url);
player.setDisplay(holder);
player.setOnPreparedListener(this);
player.prepare();
player.setOnCompletionListener(this);
}
catch (Throwable t) {
Log.e("ERROR", "Exception Error", t);
}
}