我在开发Android应用程序时遇到问题。问题是我的应用程序中有9个按钮。即当我按1按钮A时,声音1、2和3分别具有声音A,B和C.当我按下2按钮时释放1按钮后,声音开始。但是,当我按下2按钮而不释放1按钮(多按钮触摸)时,即使按钮释放后按钮1(声音A)循环也不会停止,甚至在后台播放。我必须关闭我的应用程序才能停止循环。
这是我的MainActivity.Java代码。
package com.example.ahmed.sound5;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnTouchListener {
private MediaPlayer mp;
private int[] sounds = {R.raw.a1,R.raw.a2,R.raw.a3,R.raw.a4,R.raw.a5,R.raw.a6,R.raw.a7,R.raw.a8,R.raw.a 9};
private int[] btns = {R.id.button,R.id.button2,R.id.button3,R.id.button4,R.id.button5,R.id.button6,R.id.button7,R.id.button8,R.id.button9};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//others codes
for (int btn : btns) {
((Button) this.findViewById(btn)).setOnTouchListener(this);
}
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
for (int i = 0 ; i<btns.length ; i++){
if (v.getId() == btns[i]){
mp = MediaPlayer.create(this, sounds[i]);
break;
}
}
v.setBackgroundResource(R.drawable.buttonh);
mp.start();
mp.setLooping(true);
}
break;
case MotionEvent.ACTION_UP: {
for (int btn : btns) {
if (v.getId() == btn) {
mp.pause();
v.setBackgroundResource(R.drawable.button);
break;
}
}
}
break;
}
return true;
}}
我想像这样制作按钮:当同时按下1和2按钮时,应该播放分配给这些按钮的两个单独的声音,并在action_UP EVENT上停止。