MediaPlayer почему-то вызывается много раз

188
11 мая 2018, 15:36

Есть такой метод:

public void play_sound_car(int sound_id){
    Toast.makeText(context, "Значение: "+String.valueOf(sound_id), Toast.LENGTH_SHORT).show();
    if (sound_id == 1) {
        mySong = MediaPlayer.create(context, R.raw.one);
        mySong.start();
    }
    if (sound_id == 2){
        mySong = MediaPlayer.create(context, R.raw.two);
        mySong.start();
    }
}

Вызывается классом, который читает значение firebase'а:

id_sound_car.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String id_sound = String.valueOf(dataSnapshot.getValue());
        int track_name = Integer.valueOf(id_sound);
        Toast.makeText(contextx, String.valueOf(track_name), Toast.LENGTH_SHORT).show();
        playsounds.play_sound_car(track_name);
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
});

И почему-то MediaPlayer очень много раз начинает проигрывать один и тот же файл. Причём toast показывается один раз.

Как мне сделать так, чтобы музыка проигрывалась только тогда, когда изменяется значение, причём если она уже играет - то прежний трэк останавливался, а новый начинался?

READ ALSO
Как вывести текст в JTextArea (swing)?

Как вывести текст в JTextArea (swing)?

Есть массив объектов и элемент текстового поля класса JTextAreaНеобходимо вывести в этот элемент несколько длинных предложений, состоящих из моих...

268
camel noErrorHandle

camel noErrorHandle

Разбираюсь с apache camel и в частности с ErrorHandler

366
парсинг JSON сайта на java

парсинг JSON сайта на java

Необходимо получить джсон, который находится по ссылке https://swapgg/api/inventory/bot

196