gpt4 book ai didi

java - 使用变量播放和暂停 Mediaplayer

转载 作者:太空宇宙 更新时间:2023-11-04 10:37:10 24 4
gpt4 key购买 nike

我正在尝试构建一个 Android 应用程序,用户可以在其中播放数据库中标有 id 的音频文件。

//get id from database and turn it into a string, add letter a, because its a res file
stringId = "a" + String.valueOf(standard.getId());
//find playbutton
final FloatingActionButton play = (FloatingActionButton) findViewById(R.id.play);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//to be able to feed mediaplayer a variable I put it in another function called playAudio
playAudio(stringId, true); }
});

final FloatingActionButton pause = (FloatingActionButton) findViewById(R.id.pause);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
playAudio(stringId, false); }
});

playAudio 看起来像这样:

private void playAudio(String nameOfFile, Boolean booleanPlay){
MediaPlayer mediaPlayer = MediaPlayer.create(this, getResources().getIdentifier(nameOfFile, "raw", getPackageName()));
if (booleanPlay = true){
if (!mediaPlayer.isPlaying())
mediaPlayer.start();
}
if (booleanPlay = false){
mediaPlayer.pause();
}
}

当我每次按播放键运行代码时,它都会创建一个新的媒体播放器,该媒体播放器与其他媒体播放器同时开始播放,出于同样的原因,暂停按钮不起作用。我不知道如何让它发挥作用。

最佳答案

不要在每次播放新文件时创建新的 MediaPlayer 实例。首先创建一个实例并重用它:

private static MediaPlayer mediaPlayer = new MediaPlayer ();

更改要播放的文件时,尝试这段代码:

AssetFileDescriptor afd = getApplicationContext ().getResources ().openRawResourceFd (R.raw.sound);

if (afd != null)
{
mediaPlayer.reset()
mediaPlayer.setDataSource(afd.getFileDescriptor (), afd.getStartOffset (), afd.getLength ());
mediaPlayer.setLooping (true);
mediaPlayer.prepare ();
mediaPlayer.start ();
}

R.raw.sound替换为要播放的声音的文件名(这将位于 res/raw 文件夹中)或根据需要使用不同的方式引用文件。

这对我有用——在 Android 8.1(目标)上进行了测试。希望这可以帮助。

编辑添加:我刚刚注意到您在 if(booleanPlay = false)if (booleanPlay = true) 语句中使用了错误的运算符。它们应该是 == (比较,而不是赋值)。最后一件事:退出时,您应该调用 mediaPlayer.release() 来释放资源,但您可能知道这一点。很高兴我能提供帮助。

关于java - 使用变量播放和暂停 Mediaplayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49341246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com