Soru & Cevap

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);
    }
}

 

2 Görüntülenme

0 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.