我对MediaPlayer有点问题。 问题出现在Android 4.0.3 - 4.0.4上。 发生的事情是我的onPrepare()方法在这两个版本上根本没有被触发。 经过4.3和4.4的测试,没有任何问题。
我不知道它不起作用的原因是什么。所以任何想法,想法等都是受欢迎的。
播放代码:
try {
if (!player.isPlaying()) {
player.reset();
player.setOnPreparedListener(this);
player.setOnCompletionListener(mFragment);
player.setDataSource(String.valueOf(tmpUri));
player.prepareAsync();
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
start()在准备方法中。
Logcat错误:
ERROR/MediaPlayer(10830): Error (1,-2147483648)
ERROR/MediaPlayer(10830): mOnErrorListener is null. Failed to send MEDIA_ERROR message.
答案 0 :(得分:1)
我找到了问题的答案,所以我要分享我的信息。
无论如何,问题是在Android 4.0.4和4.0.3上读取mp3文件时 设备内存setDataSource()没有读取文件的长度。 这使MediaPlayer成为心理学家,并致电错误(1,-2147483648)。
Android正在给所有文件长度= 0x7ffffffffffffffL。
为什么呢?我不知道;)
修正:
File file = new File(uri);
long length = file.getTotalSpace()
FileInputStream is = new FileInputStream(file);
player.setDataSource(is.getFD(), 0l, length);
player.prepareAsync();
就是这样! 希望它会帮助有类似问题的人,和平!