当前位置: 首页 > 知识库问答 >
问题:

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

顾昊穹
2023-03-14

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 中得到了无用的错误(1, -2147483648) 消息。

我也尝试过更换

player.setDataSource(musicPath);

具有

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

但这会在新的 FileInputStream(...) 上生成一个 FileNotFoundException:

Java . io . file not found exception:/storage/emulated/0/Music/The XX/islands . MP3:打开失败:EACCES(权限被拒绝)

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

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

java.io.FileNotFoundException: /mnt/shell/emulated/0/Music/The XX/Islands.mp3: open failed: EACCES (Permission dedened)

同样的例外。这个权限被拒绝的业务是怎么回事?直到奇巧,它工作正常。此后我还添加了权限:

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

我的应用程序清单中有这样一行:

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

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

谢谢Sean

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

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

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

共有1个答案

松亦
2023-03-14

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

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

显然,从4.4开始,这是必要的。有人能证实或否认这一点吗?

肖恩

 类似资料:
  • 本文向大家介绍python实现定时播放mp3,包括了python实现定时播放mp3的使用技巧和注意事项,需要的朋友参考一下 程序很简单,主要是 mp3play 模块的应用 演示图:   以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 我的问题是关于媒体播放器直播流从我的应用程序的url? 我正在尝试通过媒体播放器播放实时流mp3音频。

  • 我无法在我的MediaPlayer应用程序中运行某个特定的流。我知道该应用程序可以工作,但当我决定更改我的流媒体服务时,新的URL无法工作。将这个URL插入网络浏览器确实有效。以下是我的相关代码: 然后,在onPrepared()中: 这是我的LogCat(在装有Android 4.3的三星Galaxy Nexus上运行): 有什么想法吗? 编辑 我做了更多的挖掘,并为上面提供的链接设置了一个Ht

  • 我想播放一首特定的歌曲取决于发送的参数。 在我的项目中,我有不同的播放列表,所以我想发送参数(它是一个数字,对应一个播放列表),然后只听那个播放列表中的歌曲。有什么想法可以这样做吗?提前道谢!

  • 当我使用MediaPlayer播放mp3文件时,系统会报告错误日志:。但是RealPlayer是正常的。 我发现它的错误只发生在更高的ROM版本。像4.0版本一样,它有错误。在2.3版中,它没有这个错误。 代码: 日志猫错误:

  • 问题内容: 我正在尝试编写一个将从Soundcloud URL播放mp3的python脚本 这是我已经做的: 我尝试了许多选项,例如更改格式,频道,费率。而且我只是从扬声器中听到奇怪的声音,我搜索了Google以播放mp3,但没有找到任何信息。 我尝试通过传递mp3中的字节来创建对象,然后仅执行play函数。我没有收到任何错误:脚本正在运行,但没有任何播放。 我正在使用Python 3和Ubunt