单击下一步播放新的音轨

时间:2018-07-10 01:01:30

标签: java android audio android-mediaplayer media-player

我正在尝试开发一种语言学习应用程序,在该应用程序中,单击按钮即可播放对话框行(每次5-10秒)。 因此,我为每个对话框创建了对话框行数组,即:
currentAudioArray {“ line0”,“ line2”,“ line3”}
它们是放置在res / raw文件夹中的音频文件的名称

但是我无法按照自己的方式演奏它们。  我正在使用 MediaPlayer.create()方法,但似乎它只需要直接链接到特定文件(即R.raw.mySoundfile)。

我如何使用将[i]循环到 MediaPlayer.create()之类的方式来提供数组?还是有其他任何类或方法,只需单击NEXT按钮即可播放下一个音频文件?

到目前为止,我尝试使用:     mediaPlayer = MediaPlayer.create(Listen.this,currentAudioArray [0]));     mediaPlayer.start();

但是它给了我“未解决的方法”错误,因为它不喜欢currentAudioArray [0]是字符串而不是URL。

我也尝试过:     mediaPlayer.setDataSource(currentAudioArray [0])

但是一旦到达mediaPlayer.prepare(),它也会显示箭头。

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

2 个答案:

答案 0 :(得分:0)

您需要记住一件事:

所有轨道都使用相同的实例。因此,每当单击“下一步”时,都必须停止处置当前正在播放的MediaPlayer

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

如果您需要循环浏览“原始”文件夹,请检查此问题: How to read many file from raw resource in loop?

答案 1 :(得分:0)

好的,我发现了问题! 最初,我将音频文件数组设置为字符串

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]))的整数值没有任何问题。

因此有效! 希望对别人有帮助!