我现在遇到的问题是我的暂停并不总是有效。 我所拥有的是通过ActionBarSherlock和onClick监听器操作的主要活动中的MediaPlayer。 MediaPlayer使用带有MP3文件URL的ArrayList(其中一些长度为1秒)。Android MediaPlayer暂停
暂停代码:
if (player.isPlaying()) {
if (player != null) {
player.pause();
swapPlayIcon(1);
isPaused = true;
pauseMenuButt.setVisible(false);
playMenuButt.setVisible(true);
}
}
swapPlayIcon(INT)只能处理可视性和可绘制互换。
启动代码:
Iterator<Uri> iterUri = tracks.iterator();
while (iterUri.hasNext()) {
Uri tmpUri = iterUri.next();
try {
player.reset();
player.setDataSource(String.valueOf(tmpUri));
player.prepare();
player.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
编辑
更多的测试后,我发现,这个问题出现在 “之间” 的状态。
我的意思是,当我的MP3文件是2秒长,我点击暂停它不停止,因为它只是结束阅读一个文件,现在转移到下一个。
我已经加入:
} else {
pauseLocked = true;
}
如果statment暂停,并没有在它降落在所有测试时。 所以我不知道以前发现的“中间”问题。
不知道答案是什么,但重要的是要注意,你在第一个块中有一些NullPointerException异常......你说if(player.isPlaying())然后检查player!= null 。如果玩家为空,则在调用player.isPlaying()时会看到一个NPE。您应该将空检查移出isPlaying()if语句,或者将其彻底删除。 – Matt
是的,你确实是对的:> – JakubW
首先关闭播放没有被阻塞,所以你可以像播放器从你的网址准备每个媒体流一样快地循环播放媒体。其次,你是不是[4.4,你想玩HLSs](http://code.google.com/p/android/issues/detail?id=63346&q=HLS&colspec=ID%20Type%20Status%20Owner%20Summary% 20Stars)? – dcow