gpt4 book ai didi

java - 停止音乐并再次播放

转载 作者:行者123 更新时间:2023-12-01 16:18:13 25 4
gpt4 key购买 nike

我尝试制作一个小型音乐文件阅读器项目,我使用下面的代码,我可以播放音乐并暂停它,但是一旦我停止它并单击按钮从头开始播放,音乐就不会播放我使用了下面的代码,但我不知道如何解决该问题:

 final MediaPlayer mp=new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mp.setDataSource(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) +String.valueOf("/myfile.mp3"));
} catch (IOException e) {
e.printStackTrace();
}

btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!mp.isPlaying()){
try{
mp.prepare();

}catch(Exception e){e.printStackTrace();}
mp.start();
btn1.setText("pause");

}else{
mp.pause();
btn1.setText("play");

}
}
});



btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

mp.stop();
mp.reset();
btn2.setVisibility(btn2.INVISIBLE);
btn1.setText("play");

}
});

}

最佳答案

选项 1:调用 mp.stop(); 后,您可以使用 mp.seekTo(0); 从头开始​​返回还要删除 mp.reset();,如下所示:

btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

mp.stop();
mp.seekTo(0);
btn2.setVisibility(btn2.INVISIBLE);
btn1.setText("play");

}
});

选项 2:当调用 mp.reset(); 时,您会将对象恢复到空闲状态,这就是无法播放音乐的原因。您必须通过调用 mp.setResource(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) +String.valueOf("/myfile.mp3")); 将对象转换为初始化状态,然后 mp.prepare(); 像这样:

btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

mp.stop();
mp.reset();
btn2.setResource(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) +String.valueOf("/myfile.mp3"));
mp.prepare();
btn1.setText("play");

}
});

我建议您选择选项 1

我希望这有帮助。我没有做过任何 android 编程,但我了解一些 Java 并阅读了有关 MediaPlayer 的详细信息 here.

关于java - 停止音乐并再次播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62347793/

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