我来自台湾,我的英语很基础,谢谢你的原谅。
我构建了一个 iPad 应用程序并发布到 App Store,这是一种交流板(AAC 用于口语困难的人)。它在主视图上有几个按钮,当用户触摸一个按钮时,应用程序将播放与该按钮对应的 mp3 声音。我已将所有 mp3 文件放在一个文件夹中,并确定在运行时动态播放哪个文件。
最近我正在构建这个应用程序的Android版本,但是我遇到了一个问题,当我触摸视图上的一个按钮时,MediaPlayer不仅播放相应的按钮,而且继续播放文件夹中的所有其余mp3文件不断地。iPad版本的开发不会发生这种情况。任何人都可以帮助我解决这个问题并将 MediaPlayer 设置为正常工作吗?
PS。我将所有 MP3 文件放在一些子文件夹中,然后将它们放在“资产”文件夹中。这是因为由于某些原因,所有mp3文件都使用数字文件名(例如0123223.mp3),播放哪个MP3取决于用户触摸哪个按钮,所以我不能使用R.raw.0123223不仅仅是因为R类不能有一个以数字命名的成员,而且目标mp3文件只能在运行时而不是编译时确定,所以我不能使用res/raw文件夹。
我的代码如下:
private void PlayMP3(String mp3File) throws IOException {
AssetFileDescriptor afd = this.getAssets().openFd(mp3File);
MediaPlayer player = new MediaPlayer();
player.setOnCompletionListener(new OnCompletionListener(){
public void onCompletion(MediaPlayer mp) {
System.out.println(mp.getAudioSessionId() + " finished.");
}
});
player.setDataSource(afd.getFileDescriptor());
player.setLooping(false);
player.prepare();
player.start();
}
PlayMP3的参数“mp3file”是mp3文件路径的串联字符串,根据用户触摸的按钮。
非常感谢!