Android 防止MediaPlayer自动播放文件夹中的所有mp3文件
我来自台湾,我的英语很基础,谢谢你的原谅 我制作了一个iPad应用程序,并发布到app Store,这是一种交流板(AAC,用于说话有困难的人)。它在主视图上有几个按钮,当用户触摸其中一个按钮时,应用程序将播放与该按钮对应的mp3声音。我已将所有mp3文件放在一个文件夹中,并决定在运行时动态播放哪个文件 最近我正在开发这个应用程序的Android版本,但我遇到了一个问题,当我点击视图上的一个按钮时,MediaPlayer不仅会播放相应的一个,还会持续播放文件夹中所有剩余的mp3文件。iPad版本的开发过程中不会出现这种情况。有人能帮我解决这个问题,让MediaPlayer正常工作吗 另外,我将所有MP3文件放在一些子文件夹中,并将它们放在“资产”文件夹中。这是因为由于某些原因,所有mp3文件都使用数字文件名(例如0123223.mp3),并且播放哪个mp3取决于用户点击的按钮,所以我不能使用R.raw.0123223,这不仅是因为R类不能有以数字命名的成员,而且目标mp3文件只能在运行时而不是编译时确定,所以我不能使用res/raw文件夹 我的代码如下:Android 防止MediaPlayer自动播放文件夹中的所有mp3文件,android,android-mediaplayer,Android,Android Mediaplayer,我来自台湾,我的英语很基础,谢谢你的原谅 我制作了一个iPad应用程序,并发布到app Store,这是一种交流板(AAC,用于说话有困难的人)。它在主视图上有几个按钮,当用户触摸其中一个按钮时,应用程序将播放与该按钮对应的mp3声音。我已将所有mp3文件放在一个文件夹中,并决定在运行时动态播放哪个文件 最近我正在开发这个应用程序的Android版本,但我遇到了一个问题,当我点击视图上的一个按钮时,MediaPlayer不仅会播放相应的一个,还会持续播放文件夹中所有剩余的mp3文件。iPad版本
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文件路径的串联字符串,根据用户触摸的按钮
非常感谢 您没有发布一些代码 第一步是将声音文件插入原始文件夹 然后,您只需要几行代码:
MediaPlayer mediaPlayer = null;
mediaPlayer = MediaPlayer.create(getBaseContext(), R.raw.mysoundfile);
mediaPlayer.start();
关闭应用程序时,不要忘记“释放”媒体播放器:
mediaPlayer.release();
mediaPlayer = null;
你没有发布一些代码 第一步是将声音文件插入原始文件夹 然后,您只需要几行代码:
MediaPlayer mediaPlayer = null;
mediaPlayer = MediaPlayer.create(getBaseContext(), R.raw.mysoundfile);
mediaPlayer.start();
关闭应用程序时,不要忘记“释放”媒体播放器:
mediaPlayer.release();
mediaPlayer = null;
如果资产目录中只有一个文件,那么您的版本就可以工作。资产目录内容一个接一个地放在一起。因此,如果不指定从何处开始以及读取多少字节,播放器将一直读取到最后,就像它们是一个文件一样 通过使用具有更多参数的setDataSource,您可以实现所需的功能:
player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
这将允许您定义播放器的限制,并仅播放您在字符串mp3文件中指定的歌曲。如果资产目录中只有一个文件,则您的版本将正常工作。资产目录内容一个接一个地放在一起。因此,如果不指定从何处开始以及读取多少字节,播放器将一直读取到最后,就像它们是一个文件一样 通过使用具有更多参数的setDataSource,您可以实现所需的功能:
player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
这将允许您定义播放器的限制,并仅播放您在字符串MP3文件中指定的歌曲。如何播放这些文件?在这里发布一些代码,我们可以从那里继续。很抱歉,我遗漏了我的代码。我已经重新编辑了我的帖子,添加了我的代码,以及我没有使用res/raw文件夹查找mp3文件的原因。谢谢你的回复!你是怎么播放这些文件的?在这里发布一些代码,我们可以从那里继续。很抱歉,我遗漏了我的代码。我已经重新编辑了我的帖子,添加了我的代码,以及我没有使用res/raw文件夹查找mp3文件的原因。谢谢你的回复!对不起,我遗漏了我的代码。我已经重新编辑了我的帖子,添加了我的代码,以及我没有使用res/raw文件夹查找mp3文件的原因。谢谢你的回复!对不起,我遗漏了我的代码。我已经重新编辑了我的帖子,添加了我的代码,以及我没有使用res/raw文件夹查找mp3文件的原因。谢谢你的回复!杰出的谢谢你的回答!杰出的谢谢你的回答!