当前位置: 首页 > 知识库问答 >
问题:

防止MediaPlayer自动播放文件夹中的所有mp3文件

缪征
2023-03-14

我来自台湾,我的英语很基础,谢谢你的原谅。

我构建了一个iPad应用程序并发布到App Store,这是一种交流板(AAC适用于说话困难的人)。它在主视图上有几个按钮,当用户触摸一个时,应用程序将播放与该按钮对应的mp3声音。我已经将所有mp3文件放在一个文件夹中,并确定在运行时动态播放哪个文件。

最近我正在开发这个应用的Android版本,但我遇到了一个问题,当我点击视图上的一个按钮时,MediaPlayer不仅播放相应的一个,而且继续播放文件夹中所有剩余的mp3文件。iPad版本的开发过程中不会出现这种情况。谁能帮我解决这个问题,让MediaPlayer正常工作?

附言。我把所有的MP3文件放在一些子文件夹上,并把它们放在“资产”文件夹上。因为某些原因,所有的mp3文件都使用数字文件名(例如0123223.mp3),播放哪个MP3是根据用户点击的按钮,所以我不能使用R. raw.0123223,不仅因为R类不能有一个以数字命名的成员,而且目标mp3文件只能在运行时确定,而不是html" target="_blank">编译时,所以我不能使用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文件路径的串联字符串,根据用户触摸的按钮。

非常感谢!

共有2个答案

宗苗宣
2023-03-14

您没有发布一些代码。

第一步是将声音文件插入原始文件夹

然后,您只需要几行代码:

MediaPlayer mediaPlayer = null;
mediaPlayer = MediaPlayer.create(getBaseContext(), R.raw.mysoundfile);
mediaPlayer.start();     

当应用程序关闭时,不要忘记“释放”媒体播放器:

mediaPlayer.release();
mediaPlayer = null;
仉联
2023-03-14

如果您在资产目录中只有那个文件,您的版本就可以工作。资产目录内容一个接一个地放在一起。因此,如果您没有指定从哪里开始以及要读取多少字节,播放器将读取到最后,就好像它们是一个文件一样。

通过使用具有更多参数的setDataSource,您可以实现所需的功能:

player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());

这将允许您定义播放器的限制,并且仅播放您在字符串mp3File中指定的歌曲。

 类似资料:
  • 我用一个布局和两个按钮构建了一个简单的应用程序,这是我的代码。。 我的原始文件夹包含:atur.mp3、back.mp3、belajar.mp3、level.mp3、skip.mp3和start.mp3...当我单击按钮静音时,播放back.mp3,但当我单击按钮播放时,原始文件夹中的所有mp3都被播放...有评论吗?

  • 我在res目录中创建了raw文件夹,并插入了mp3文件。我试着用mediaplayer播放我的mp3文件。这是我的消息来源- 但是当我运行应用程序时,我有exception.this是我的logcat异常- 我如何解决我的问题?如果有人知道解决办法,请帮助我。提前感谢。

  • 我正在创建一个带有背景音乐的应用程序。我试着在课堂上演奏那首音乐: 我试过了: 当我把它放在我的文件的根目录中并使用它时: 我得到这个错误:javax.sound.sampled。不受支持的AudioFileException:无法从输入URL获取音频输入流更新我尝试使用JavaFX: 但是我得到了错误: 此行中的错误:MediaPlayer Player=new MediaPlayer(媒体);

  • 我遵循了本教程:http://what-when-how.com/javafx-2/playing-audio-using-the-media-classes-javafx-2-part-1/ 我有相应的资源文件夹在相应的目录中。类文件,但我仍然不能播放音频。mp3文件与教程中的不同,但我也有一个. wav等效文件,发现JavaFX可以开箱播放*. wav文件,但不能播放mp3文件。怎么回事啊?

  • 标记为“good”的文件可以正确播放,而标记为“bad”的文件则不能。两个文件在同一个目录中;两个文件都使用音乐播放器播放;并且这两个文件都可以在Windows7机器上使用Python3.4和pygame。

  • 当我使用MediaPlayer播放mp3文件时,系统会报告错误日志:。但是RealPlayer是正常的。 我发现它的错误只发生在更高的ROM版本。像4.0版本一样,它有错误。在2.3版中,它没有这个错误。 代码: 日志猫错误: