müzik uygulamamda birden çok butona aynı anda tıklayamıyorum
10.05.2016 - 03:41
merhabalar arkadaşlar bir müzik programı yapmak istiyorum 12 butondan oluşan ve çek baslardan kendim bir kod oluşturmuştum fakat sorunum şuydu elimi butonların üzerinde kaydırırken hiç bir ses çalmıyordu bunu bir arkadaşıma yaptırdım şimdi elimi üzerinde kaydırıp istediğim müziği elimi kaldırmadan aktif edebiliyorum fakat iki kere aynı butona bastıgımda buton ıkıncı kez müziği çalmıyor veya aynı anda 3 butona basamıyorum bir videosunu çekip burdan paylaşıyorum videodan daha rahat anlayabilirsiniz arkadaşlar kodu da burada paylaşıyorum inceleyebilirsiniz.Videoyu rar olarak ekledim. Teşekkürler.
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
public class MainActivity extends Activity {
private RelativeLayout mainLayout;
private MediaPlayer mp1;
private String currentTag;
private boolean areaDetected;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainLayout = (RelativeLayout) findViewById(R.id.main_layout);
currentTag = "";
initEvent();
}
private void initEvent() {
mainLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
int x = (int) motionEvent.getX();
int y = (int) motionEvent.getY();
areaDetected = false;
for (int i = 0; i < mainLayout.getChildCount(); i++) {
View currentButton = mainLayout.getChildAt(i);
if (currentButton instanceof Button) {
Button b = (Button) currentButton;
String tag = b.getTag().toString();
if (pointInside(x, y, b.getLeft(), b.getRight(), b.getTop(), b.getBottom())) {
areaDetected = true;
if (!currentTag.equals(tag)) {
currentTag = tag;
stopPlaying();
mp1 = getMediaPlayer(tag);
mp1.start();
}
}
}
}
if (!areaDetected) {
currentTag = "";
stopPlaying();
}
return true;
}
});
}
private void stopPlaying() {
if (mp1 != null) {
mp1.stop();
mp1.release();
mp1 = null;
}
}
private MediaPlayer getMediaPlayer(String tag) {
if (tag.equals("b1")) {
return MediaPlayer.create(MainActivity.this, R.raw.b1);
}
if (tag.equals("b2")) {
return MediaPlayer.create(MainActivity.this, R.raw.b2);
}
if (tag.equals("b3")) {
return MediaPlayer.create(MainActivity.this, R.raw.b3);
}
if (tag.equals("b4")) {
return MediaPlayer.create(MainActivity.this, R.raw.b4);
}
if (tag.equals("b5")) {
return MediaPlayer.create(MainActivity.this, R.raw.b5);
}
if (tag.equals("b6")) {
return MediaPlayer.create(MainActivity.this, R.raw.b6);
}
if (tag.equals("b7")) {
return MediaPlayer.create(MainActivity.this, R.raw.b7);
}
if (tag.equals("b8")) {
return MediaPlayer.create(MainActivity.this, R.raw.b8);
}
if (tag.equals("b9")) {
return MediaPlayer.create(MainActivity.this, R.raw.b9);
}
if (tag.equals("b10")) {
return MediaPlayer.create(MainActivity.this, R.raw.b10);
}
if (tag.equals("b11")) {
return MediaPlayer.create(MainActivity.this, R.raw.b11);
}
if (tag.equals("b12")) {
return MediaPlayer.create(MainActivity.this, R.raw.b12);
}
return null;
}
static boolean pointInside(int x, int y, int x1, int x2, int y1, int y2) {
return (x <= x2 && x >= x1 && y <= y2 && y >= y1);
}
}
3
Görüntülenme
0 Beğeni