我有以下代碼:從資產目錄播放音頻文件
AssetFileDescriptor afd = getAssets().openFd("AudioFile.mp3");
player = new MediaPlayer();
player.setDataSource(afd.getFileDescriptor());
player.prepare();
player.start();
的問題是,當我運行這段代碼,它開始播放的所有音頻文件資源目錄中,按字母順序排列,而不是隻播放我要求的音頻文件。我究竟做錯了什麼?有沒有更好的方法來播放資產目錄中的音頻文件?
後續問題: 在資產目錄中保留音頻文件並將其保存在res/raw目錄中是否有區別?除了他們在資產目錄中沒有獲得ID的事實。如果我將音頻文件移動到res/raw文件夾,那麼我在重用MediaPlayer
時遇到問題,因爲setDataSource()
沒有id參數。我無法找到處理這類問題的良好指導方針。如果你有在資產 目錄只有一個文件
它的工作。謝謝。但我認爲我的版本也應該有效。 – 2010-08-05 16:17:02
如果資產目錄中只有一個文件,則您的版本可以正常工作。 資產目錄內容實際上不是磁盤上的「真實文件」。他們都是一個接一個地放在一起。所以,如果你沒有指定從哪裏開始讀取多少字節,播放器將讀取到最後(即將繼續播放資產目錄中的所有文件) – 2010-08-09 04:46:47
非常好的答案! – Redax 2011-03-29 15:37:09