簡體   English   中英

在本地播放mp3時,Android MediaPlayer錯誤(1,-2147483648)

[英]Android MediaPlayer Error(1, -2147483648) when playing an mp3 locally

Android 4.4發布后不久我的代碼自2.2以來一直正常工作突然變成了bug。

我的代碼將查詢音樂數據庫中的給定音樂文件。 在查詢中返回路徑,然后將此路徑傳遞到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.FileNotFoundException:/ storage / emulated / 0 / Music / XX / Islands.mp3:open failed:EACCES(權限被拒絕)

這很有趣,因為查詢返回的路徑以“/ storage / emulated / ...”開頭,但是如果我查看Eclipse中的DDMS視圖,實際路徑是“/ mnt / shell / emulated / ...”。 這是正常的嗎?

盡管如此,如果我手動將路徑前綴更改為我在文件資源管理器中看到的內容,我仍然會在新的FileInputStream(...)上獲得FileNotFoundException:

java.io.FileNotFoundException:/ mnt / shell / emulated / 0 / Music / XX / Islands.mp3:open failed:EACCES(權限被拒絕)

同樣的例外。 這個權限被拒絕的業務是什么? 直到KitKat工作正常。 我也加入了許可:

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

我的應用在清單中有這一行:

<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開始這是必要的。 任何人都可以證實或否認這一點嗎?

肖恩

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM