【发布时间】:2016-10-09 15:30:38
【问题描述】:
我是一名网络开发人员,负责制作我认为应该是相当简单的应用程序。我在 Android 开发方面没有太多经验,所以请原谅可能是愚蠢的错误。
我基本上需要能够获取一系列视频路径(同步到外部 SD)并逐个播放视频。我不需要任何控件或任何东西,只需要全屏视频。
由于我在 Android 或 Java 方面没有太多经验,我想我会尝试 Easy Video Player,我猜它只是 MediaPlayer 类的包装器。我可以播放一个视频没有问题,但我无法自动播放下一个视频。到目前为止,这是我的代码(目前只是使用在线演示视频,而不是使用 SD 卡。此外,布局文件与上面链接中的示例几乎相同,只是属性值不同):
public class VideoActivity extends AppCompatActivity implements EasyVideoCallback {
private static final String[] TEST_VIDEOS = {"http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4", "http://www.html5videoplayer.net/videos/toystory.mp4"};
private EasyVideoPlayer player;
private int currentVideo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video);
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
player = (EasyVideoPlayer) findViewById(R.id.video_player);
player.setCallback(this);
currentVideo = 0;
player.setSource(Uri.parse(TEST_VIDEOS[currentVideo]));
}
@Override
public void onPaused(EasyVideoPlayer player) {
super.onPause();
player.pause();
}
@Override
public void onCompletion(EasyVideoPlayer player) {
if (currentVideo != TEST_VIDEOS.length - 1) {
currentVideo++;
player.reset();
player.setSource(Uri.parse(TEST_VIDEOS[currentVideo]));
player.start();
}
}
}
这是调用onCompletion() 时出现的监视器输出:
D/EasyVideoPlayer: onCompletion()
D/EasyVideoPlayer: Loading web URI: http://www.html5videoplayer.net/videos/toystory.mp4
E/MediaPlayer: start called in state 4
E/MediaPlayer: error (-38, 0)
E/MediaPlayer: Error (-38,0)
我可能快到了,也可能离得很远,我只是不知道。我尝试在onCompletion() 中只调用player.reset(),但它似乎根本没有做任何事情。我会假设播放器会进入一个没有加载视频的初始状态。
感谢您的帮助,我为无知道歉,
谢谢。
更新:
我将player.start(); 移动到onPrepared() 侦听器中,上面粘贴的错误不再出现。此外,几秒钟后,播放下一个视频的声音,但播放器仍显示第一个视频的最后一帧,并带有播放按钮。
【问题讨论】:
标签: android android-mediaplayer