我正在嘗試開發一種語言學習應用程序,該應用程序在單擊按鈕時播放對話框行(每次5-10秒)。因此,我為每個對話框創建了對話框行數組,即:currentAudioArray {“ line0”,“ line2”,“ line3”}它們是放置在res / raw文件夾中的音頻文件的名稱但是我無法按照自己的方式演奏它們。我正在使用MediaPlayer.create()方法,但似乎只需要直接鏈接到特定文件(即R.raw.mySoundfile)。如何使用諸如[i]循環到MediaPlayer.create()之類的數組來填充數組?還是有任何其他類或方法可以在單擊“下一步”按鈕時播放下一個音頻文件?到目前為止,我嘗試使用:mediaPlayer = MediaPlayer.create(Listen.this,currentAudioArray [0])); mediaPlayer.start();但這給了我“未解決的方法”錯誤,因為它不喜歡currentAudioArray [0]是字符串而不是URL。我也嘗試過:mediaPlayer.setDataSource(currentAudioArray [0])但這也會在到達mediaPlayer.prepare()時顯示箭頭。非常歡迎任何有關如何以陣列方式播放這些文件的建議或想法!
2 回答

開心每一天1111
TA貢獻1836條經驗 獲得超13個贊
好吧,我發現了我的問題!最初,我將音頻文件數組設置為字符串:
String[] currentAudioArray {"line0", "line2", "line3"}
。但是我應該將它們設置為int并添加R.raw路徑,如下所示:
int[] currentAudioArray {R.raw.line0, R.rawline2, R.raw.line3}
在這種情況下: mediaPlayer= MediaPlayer.create(Listen.this, currentAudioArray[i]))
整數值沒有任何問題。
這樣就行了!希望它對別人有幫助!

烙印99
TA貢獻1829條經驗 獲得超13個贊
您需要記住一件事:
您正在所有軌道上使用相同的實例。所以每當你點擊“下一步”,你必須停止和處置的MediaPlayer
當前播放。
如果遇到錯誤,請嘗試重新初始化MediaPlayer
實例,Create()
然后再次初始化:mp = MediaPlayer.create(this, R.raw.mySoundfile);
而不是setDataSource
方法
如果您需要循環遍歷“原始”文件夾,請檢查此問題: 如何從循環中的原始資源讀取許多文件?
添加回答
舉報
0/150
提交
取消