[英]How to mute the sound in the button
我是 java 的新手,我不知道该怎么做。 这是我正在尝试执行的代码,我需要的是使用另一个按钮(播放停止)将正在播放到其他按钮的音效静音,并使用同一个按钮(播放停止)取消静音。
媒体播放器音频1、音频2、音频3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
audio1 = MediaPlayer.create(MainActivity.this, R.raw.addlife);
audio2 = MediaPlayer.create(MainActivity.this, R.raw.freeeze);
audio3 = MediaPlayer.create(MainActivity.this, R.raw.highlight);
Button addlife = (Button) findViewById(R.id.button);
Button freeze = (Button) findViewById(R.id.button2);
Button highlight = (Button) findViewById(R.id.button3);
Button playstop = (Button) findViewById(R.id.button4);
addlife.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
audio1.start();
Button button = (Button) v;
button.setVisibility(View.INVISIBLE);
}
});
freeze.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
audio2.start();
Button button = (Button) v;
button.setVisibility(View.INVISIBLE);
}
});
highlight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
audio3.start();
Button button = (Button) v;
button.setVisibility(View.INVISIBLE);
}
});
i = 0;
playstop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (i == 0) {
audio1.stop();
audio2.stop();
audio3.stop();
playstop.setBackgroundResource(R.drawable.mute);
i++;
}
else if (i == 1){
audio1.start(); //does not work
audio2.start(); //does not work
audio3.start(); //does not work
playstop.setBackgroundResource(R.drawable.unmute);
i = 0;
}
}
});
}
如果您正在尝试查找正在播放的声音,那么 MediaPlayer 有方法 - isPlaying()。 如果它正在播放,则返回 true。 在这种情况下,您需要这样的东西:
if (audio1.isPlaying()){
audio1.stop()
addLife.setVisibility(View.VISIBLE)
}
如果您需要暂停/播放当前播放的声音,您可以使用 pause() 和 start() 方法,但在这种情况下,您最好制作一些额外的 class 来处理所有操作。 例子:
import android.media.MediaPlayer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Objects;
import java.util.UUID;
public class MediaPlayerManager {
public final HashMap<String, MediaPlayer> mediaPlayerList;
public final ArrayList<String> keys;
private String pausedPlayerKey;
public MediaPlayerManager(MediaPlayer... mediaPlayers) {
mediaPlayerList = new HashMap<>();
keys = new ArrayList<>();
if (mediaPlayers != null && mediaPlayers.length > 0) {
for (MediaPlayer mediaPlayer : mediaPlayers) {
String uid = UUID.randomUUID().toString();
keys.add(uid);
mediaPlayerList.put(uid, mediaPlayer);
}
}
}
public boolean isAnyOnePlaying(){
for (String key : keys) {
MediaPlayer player = mediaPlayerList.get(key);
if (player != null && player.isPlaying()) {
return true;
}
}
return false;
}
public void pauseIfPlaying() {
for (String key : keys) {
MediaPlayer player = mediaPlayerList.get(key);
if (player != null && player.isPlaying()) {
player.pause();
pausedPlayerKey = key;
break;
}
}
}
public void resume() {
if (pausedPlayerKey != null) {
if (mediaPlayerList.containsKey(pausedPlayerKey) && mediaPlayerList.get(pausedPlayerKey) != null) {
Objects.requireNonNull(mediaPlayerList.get(pausedPlayerKey)).start();
pausedPlayerKey = null;
}
}
}
}
然后在 onCreate 方法中你可以做到这一点。
MediaPlayerManager mpm = new MediaPlayerManager({audio1, audio2, audio3});
接着:
playstop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mpm.isAnyOnePlaying()){
mpm.pauseIfPlaying();
}else {
mpm.resume();
}
//help//
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.