java - 如何通过单击暂停音频文件并开始一个新文件?
问题描述
我正在尝试用 2 个按钮播放 2 个音频文件,当按下另一个按钮时应该停止播放的音频并开始一个新的。问题是,当应用程序启动时,只有第一个单击的按钮将作为暂停和启动,而另一个只是暂停。
注意 I. 我首先单击的任何按钮都可以使用,而另一个则不会。
注二。我试图寻求 <0> 也到 <1> 都没有解决问题。
注三。我尝试以与 cat on click 不同的方式格式化 dog on click listener 的代码,bth 并没有解决问题。
另一方面,我的应用程序将包含 10 个按钮,每次点击我需要暂停 9 并启动一个,有没有办法用更小的代码暂停它们?谢谢
//Buttons
dog = Button.findViewById(R.id.dog)
cat = Button.findViewById.(R.id.cat)
//MediaPlayers
final dogMP = MediaPlayer.Create(this, R.raw.park)
final catMP = MediaPlayer.Create(this, R.raw.meaw)
//onClicks
//dog
dog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
catMP.pause();
catMP.seekTo(0);
if (!dogMP.isPlaying()) {
dogMP.setLooping(true);
dogMP.start();
} else {
dogMP.pause();
dogMP.seekTo(0);
}
}
});
//cat
cat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!catMP.isPlaying()) {
dogMP.pause();
dogMP.seekTo(0);
catMP.setLooping(true);
catMP.start();
} else {
catMP.pause();
catMP.seekTo(0);
}
}
});`
解决方案
您可以通过检查mediaplayer
下面给出的尝试代码来为所有按钮执行此操作。
//dog
dog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mediaplayer != null){
if (mediaplayer.isplaying()) {
mediaplayer.stop();
// start your new audio
dogMP.setLooping(true);
dogMP.start();
} else {
// start your new audio
dogMP.setLooping(true);
dogMP.start();
}
}
}
});
推荐阅读
- r - 将存储为整数的时间字段转换为 24 小时格式
- google-cloud-platform - Cloud Run 无服务器事件
- java - Viewpager 只显示一次所需的详细信息,从主屏幕返回时不显示第二次
- c# - Builder 类只需要创建其构建的单个实例
- json - 对象 json 中的 id -d 是什么
- javascript - 在 Angular 组件中引用两个 JavaScript 文件时出现问题
- couchdb - 如何在 CouchDB 中加入 SUM()?
- python - Python 机密模块的行为可预测
- javascript - 如何使用 Inquirer 让我的“if else”语句在此 Node 文件中正常工作?
- nginx - NGINX 将 HTTPS 从任何域转发到特定 URL