【问题标题】:Failed to convert to modern format file descriptor无法转换为现代格式文件描述符
【发布时间】: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


【解决方案1】:

我有替代解决方案。 使用物理设备而不是模拟器。 我的模拟器android-arm64 • Android 12 (API 31) (emulator) 我的物理设备android 10 () 这个错误只是来自模拟器,但我仍在寻找如何解决以及为什么。

【讨论】:

  • Google Pixel 6 自带 Android 12(API 31) 也有同样的问题。
  • 这个错误只是来自模拟器,试试物理设备(你的手机)
猜你喜欢
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多