gpt4 book ai didi

在本地播放 mp3 时,Android MediaPlayer 错误(1,-2147483648)

转载 作者:太空狗 更新时间:2023-10-29 15:07:32 26 4
gpt4 key购买 nike

在 Android 4.4 发布后不久,我的代码在 2.2 突然出现问题后一直正常工作。

我的代码将在音乐数据库中查询给定的音乐文件。在查询中返回路径,然后将此路径传递到 MediaPlayer。

代码:

String uri = "content://media/internal/audio/media";
String[] columns = [audio_id as _id, title, album, artist, album_id, _data];
String where = "album = 'XX'";
Cursor c = this.getContentResolver().query(uri, columns, where, null, MediaColumns.TITLE);
String musicPath = c.getString(5);
// musicPath is "/storage/emulated/0/Music/The XX/Islands.mp3"

player.reset();
player.setDataSource(musicPath);
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.prepareAsync();

我的 LogCat 中出现了无用的 Error(1, -2147483648) 消息。

我也试过替换

player.setDataSource(musicPath);

FileInputStream fileInputStream = new FileInputStream(musicPath);
player.setDataSource(fileInputStream.getFD());
fileInputStream.close();

但这会在新的 FileInputStream(...) 上产生 FileNotFoundException:

java.io.FileNotFoundException:/storage/emulated/0/Music/The XX/Islands.mp3: 打开失败:EACCES(权限被拒绝)

这很有趣,因为查询返回的路径以“/storage/emulated/...”开头,但如果我查看 Eclipse 中的 DDMS View ,实际路径是“/mnt/shell/emulated/... ”。这是正常的吗?

尽管如此,如果我手动将路径前缀更改为我在文件资源管理器中看到的内容,我仍然会在新的 FileInputStream(...) 上得到 FileNotFoundException:

java.io.FileNotFoundException:/mnt/shell/emulated/0/Music/The XX/Islands.mp3: 打开失败:EACCES(权限被拒绝)

同样的异常(exception)。这个权限被拒绝的业务是什么?直到 KitKat 它工作正常。我也已经添加了权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

我的应用在 list 中有这一行:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" />

有没有人看起来类似并找到了解决这个未知错误的方法?我尝试播放的 mp3 在 Play Music 和另一个音乐播放器应用程序中运行良好,因此让我相信问题不是缺少编解码器。

谢谢肖恩

编辑:我在内容查询后立即检查了文件是否存在,但返回的路径不存在。

File f = new File(musicPath);
boolean exists = f.exists(); // false

这怎么可能?我试过查询内部媒体,但没有返回任何结果(如预期的那样)

最佳答案

我通过向应用程序添加写入权限的(不幸的)解决方案解决了这个问题。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

显然从 4.4 开始这是必需的。任何人都可以证实或否认这一点吗?

肖恩

关于在本地播放 mp3 时,Android MediaPlayer 错误(1,-2147483648),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20454673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com