【发布时间】:2021-10-29 05:51:49
【问题描述】:
这是我的代码:
if (myAudio.exists()) {
mp.reset();
//mp.setDataSource(getContext(), Uri.fromFile(myAudio));
FileInputStream is = new FileInputStream(myAudio);
FileDescriptor fd = is.getFD();
mp.setDataSource(fd);
is.close();
mp.setOnErrorListener(this);
mp.setOnPreparedListener(this);
mp.prepareAsync();
btnPlay.setImageResource(R.drawable.pause);
} else {
btnPlay.setImageResource(R.drawable.play);
errorGot = errorGot + 1;
}
我尝试过使用 Uri 中的 mp.setDataSource 和 FileDescriptor,但都出现了相同的错误:
Failed to convert to modern format file descriptor
java.io.IOException: Input file descriptor already original
at android.provider.MediaStore.getOriginalMediaFormatFileDescriptor(MediaStore.java:943)
at android.os.FileUtils.convertToModernFd(FileUtils.java:1470)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1271)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1254)
有什么帮助吗?谢谢。
【问题讨论】:
-
我有同样的问题
Failed to convert to modern format file descriptor仅在安卓设备中使用audioplayers: ^0.19.1颤振包android-arm64 • Android 12 (API 31) (emulator)
标签: android android-mediaplayer ioexception