好吧,我正在为Android制作声音应用程序并且存在一个小问题。 当我点击另一个按钮播放另一个声音时,我让我的应用程序停止播放当前声音,因此它们不会在彼此之上播放。 对于前4位媒体播放器,它运作良好。但是在第5和第6媒体播放器上存在问题,我无法弄清楚是什么导致了它。 当我玩Mp6,我想播放例如Mp2时,它会先暂停它,所以我需要双击才能播放它。 继承我的代码
mp=MediaPlayer.create(this, R.raw.hekler);
ImageButton btn1 =(ImageButton)findViewById(R.id.btn1); btn1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
if (mp.isPlaying()){
mp.pause();
mp.seekTo(0);
}
if (mp2.isPlaying()){
mp2.pause();
mp2.seekTo(0);
}
if (mp3.isPlaying()){
mp3.pause();
mp3.seekTo(0);
}
if (mp4.isPlaying()){
mp4.pause();
mp4.seekTo(0);
}
if (mp5.isPlaying()){
mp5.pause();
mp5.seekTo(0);
}
if (mp6.isPlaying()){
mp6.pause();
mp6.seekTo(0);
}
else{
mp.start();
}
}
});
mp2=MediaPlayer.create(this, R.raw.famas);
ImageButton btn2 = (ImageButton) findViewById(R.id.btn2);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mp.isPlaying()){
mp.pause();
mp.seekTo(0);
}
if (mp3.isPlaying()){
mp3.pause();
mp3.seekTo(0);
}
if (mp4.isPlaying()){
mp4.pause();
mp4.seekTo(0);
}
if (mp5.isPlaying()){
mp5.pause();
mp5.seekTo(0);
}
if (mp6.isPlaying()){
mp6.pause();
mp6.seekTo(0);
}
else{
mp2.start();
}
}
});
mp3=MediaPlayer.create(this, R.raw.kalas);
ImageButton btn3 = (ImageButton) findViewById(R.id.btn3);
btn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mp3.isPlaying()){
mp3.pause();
mp3.seekTo(0);
}
if (mp.isPlaying()){
mp.pause();
mp.seekTo(0);
}
if (mp2.isPlaying()){
mp2.pause();
mp2.seekTo(0);
}
if (mp4.isPlaying()){
mp4.pause();
mp4.seekTo(0);
}
if (mp5.isPlaying()){
mp5.pause();
mp5.seekTo(0);
}
if (mp6.isPlaying()){
mp6.pause();
mp6.seekTo(0);
}
else{
mp3.start();
}
}
});
mp4=MediaPlayer.create(this, R.raw.emka);
ImageButton btn4 = (ImageButton) findViewById(R.id.btn4);
btn4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mp4.isPlaying()){
mp4.pause();
mp4.seekTo(0);
}
if (mp.isPlaying()){
mp.pause();
mp.seekTo(0);
}
if (mp2.isPlaying()){
mp2.pause();
mp2.seekTo(0);
}
if (mp3.isPlaying()){
mp3.pause();
mp3.seekTo(0);
}
if (mp5.isPlaying()){
mp5.pause();
mp5.seekTo(0);
}
if (mp6.isPlaying()){
mp6.pause();
mp6.seekTo(0);
}
else{
mp4.start();
}
}
});
mp5=MediaPlayer.create(this, R.raw.uzi);
ImageButton btn5 = (ImageButton) findViewById(R.id.btn5);
btn5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mp.isPlaying()){
mp.pause();
mp.seekTo(0);
}
if (mp2.isPlaying()){
mp2.pause();
mp2.seekTo(0);
}
if (mp3.isPlaying()){
mp3.pause();
mp3.seekTo(0);
}
if (mp4.isPlaying()){
mp4.pause();
mp4.seekTo(0);
}
if (mp6.isPlaying()){
mp6.pause();
mp6.seekTo(0);
}
if (mp5.isPlaying()){
mp5.pause();
mp5.seekTo(0);
}
else{
mp5.start();
}
}
});
mp6=MediaPlayer.create(this, R.raw.sporet);
ImageButton btn6 = (ImageButton) findViewById(R.id.btn6);
btn6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mp.isPlaying()){
mp.pause();
mp.seekTo(0);
}
if (mp2.isPlaying()){
mp2.pause();
mp2.seekTo(0);
}
if (mp3.isPlaying()){
mp3.pause();
mp3.seekTo(0);
}
if (mp4.isPlaying()){
mp4.pause();
mp4.seekTo(0);
}
if (mp5.isPlaying()){
mp5.pause();
mp5.seekTo(0);
}
if (mp6.isPlaying()){
mp6.pause();
mp6.seekTo(0);
}
else{
mp6.start();
}
}
});
}
答案 0 :(得分:3)
这一次,问题在于您的订单检查媒体播放器和逻辑是否冲突。
在mp2部分中使用此代码:
mp2=MediaPlayer.create(this, R.raw.famas);
ImageButton btn2 = (ImageButton) findViewById(R.id.btn2);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mp.isPlaying()){
mp.pause();
mp.seekTo(0);
}
if (mp3.isPlaying()){
mp3.pause();
mp3.seekTo(0);
}
if (mp4.isPlaying()){
mp4.pause();
mp4.seekTo(0);
}
if (mp5.isPlaying()){
mp5.pause();
mp5.seekTo(0);
}
if (mp6.isPlaying()){
mp6.pause();
mp6.seekTo(0);
}
if (mp2.isPlaying()){ // Put this if branch just before else, likewise for other media players too.
mp2.pause();
mp2.seekTo(0);
}
else{
mp2.start();
}
}
});
在
让我详细解释原因:
if (mp6.isPlaying()){
mp6.pause();
mp6.seekTo(0);
}
else{
mp2.start();
}
}
在你的代码在mp2部分的那部分中,您正在检查 mp6 是否正在播放并停止播放。由于如果保持良好,其他 将不会执行该回合。因此,您必须再次按 才能使mp2播放。按照我说的那样,即检查当前玩家将与相应的其他条件匹配,因此您的问题将得到解决。
编辑:在所有六个按钮点击事件中,您已检查mp6是否正在其他部分之前播放。这是一个合乎逻辑的缺陷。在else之前,您应该拥有对应的 mediaplayer对象的if。