後不久的Android 4.4出來了我的代碼已經正常工作,因爲2.2突然滅車。Android的MediaPlayer的錯誤(1,-2147483648)播放MP3時,本地
我的代碼將查詢音樂數據庫對於一個給定的音樂文件。該路徑查詢中返回,然後將此路徑傳遞到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();
我結束了無用的錯誤(1,-2147483648)消息,在我的logcat中。
我也試圖與
FileInputStream fileInputStream = new FileInputStream(musicPath);
player.setDataSource(fileInputStream.getFD());
fileInputStream.close();
更換
player.setDataSource(musicPath);
但這產生的新的FileInputStream一個FileNotFoundException異常(...):
java.io.FileNotFoundException :/存儲/模擬/ 0 /音樂/的xx/Islands.mp3:打開失敗:EACCES(拒絕)
這很有趣,因爲查詢返回的路徑開頭「/存儲/模擬/ ......」但如果我看在Eclipse中的DDMS視圖中的實際路徑是「到/ mnt /殼/模擬/ ... 」。這是正常的嗎?
儘管如此,如果我改變了路徑前綴手動我在文件瀏覽器看到,我還是得到了新的FileInputStream一個FileNotFoundException異常(...):
java.io.FileNotFoundException:/ mnt/shell/emulated/0/Music/XX/Islands.mp3:打開失敗:EACCES(權限被拒絕)
同樣的例外。什麼是這個權限被拒絕的業務?直到KitKat它工作正常。我也因爲增加了權限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
我的應用程序有這條線在清單:
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" />
有沒有人似乎類似的東西,並找到了解決這個未知的錯誤?我試圖在播放音樂和其他音樂播放器應用程序來播放做工精細的MP3歌曲,從而導致我相信這個問題是不缺少的編解碼器。
感謝 肖恩
編輯: 我立刻內容的查詢後,如果該文件存在檢查,返回的路徑沒有。
File f = new File(musicPath);
boolean exists = f.exists(); // false
這怎麼可能?我試着查詢內部媒體,而不是但不返回任何結果(如預期)