我正在尝试开发一种语言学习应用程序,该应用程序在单击按钮时播放对话框行(每次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
提交
取消