为了账号安全,请及时绑定邮箱和手机立即绑定

单击下一步播放新的音轨

单击下一步播放新的音轨

潇潇雨雨 2021-04-30 15:16:48
我正在尝试开发一种语言学习应用程序,该应用程序在单击按钮时播放对话框行(每次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]))整数值没有任何问题。

这样就行了!希望它对别人有帮助!


查看完整回答
反对 回复 2021-05-19
?
烙印99

TA贡献1829条经验 获得超13个赞

您需要记住一件事:

您正在所有轨道上使用相同的实例。所以每当你点击“下一步”,你必须停止处置MediaPlayer当前播放。

如果遇到错误,请尝试重新初始化MediaPlayer实例,Create()然后再次初始化:mp = MediaPlayer.create(this, R.raw.mySoundfile);而不是setDataSource方法

如果您需要循环遍历“原始”文件夹,请检查此问题: 如何从循环中的原始资源读取许多文件?


查看完整回答
反对 回复 2021-05-19
  • 2 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信