单击下一步播放新的音轨

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

非常欢迎任何有关如何以阵列方式播放这些文件的建议或想法!


潇潇雨雨
浏览 151回答 2
2回答

开心每一天1111

好吧,我发现了我的问题!最初,我将音频文件数组设置为字符串: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

您需要记住一件事:您正在所有轨道上使用相同的实例。所以每当你点击“下一步”,你必须停止和处置的MediaPlayer当前播放。如果遇到错误,请尝试重新初始化MediaPlayer实例,Create()然后再次初始化:mp = MediaPlayer.create(this, R.raw.mySoundfile);而不是setDataSource方法如果您需要循环遍历“原始”文件夹,请检查此问题: 如何从循环中的原始资源读取许多文件?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java