Изменение Android Mediaplayer на Soundpool - PullRequest
0 голосов
/ 11 февраля 2019

Проблема в Mediaplayer.Звук не останавливается при нажатии нескольких кнопок.Звук останавливается, если нажимать кнопку очень быстро.

package com.shockverse.pkhorns;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;



public class CallFragment extends Fragment implements View.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};
private int[] btns = {R.id.button,R.id.button2,R.id.button3,R.id.button4,R.id.button5,R.id.button6};


public CallFragment() {
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_call, container, false);
    for (int btn : btns) {
        ((Button) view.findViewById(btn)).setOnTouchListener(this);
    }
    return view;
}


@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(getActivity(), sounds[i]);
                    v.setBackgroundResource(R.drawable.b);
                    break;
                }
            }
            mp.setLooping(true);
            mp.start();
        }

        break;
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_CANCEL: {

            for (int btn : btns) {
                if (v.getId() == btn) {
                    v.setBackgroundResource(R.drawable.a);
                    mp.pause();
                    break;
                }
            }
        }
        break;
    }
    return true;    }

}

При воспроизведении звука можно воспроизводить короткие звуки OntouchListener по сравнению с медиаплеером.Поэтому мне нужно, чтобы мой код был изменен на функцию Soundpool.

...