Cupcake(API3) дружественный способ приостановить / остановить звуковые петли в SoundPool? Есть идеи?

Краткое примечание: я использую класс SoundPool

http://developer.android.com/reference/android/media/SoundPool.html

У меня есть простая кнопка, которая воспроизводит зацикленный звук, пока она нажата. Работает отлично. Тем не мение, sounds.autoPause(); не был представлен до API 8, и мне действительно нужно что-то совместимое с Cupcake (API 3). Так что я просматривал ссылочный сайт dev, отфильтрованный по API 3, и увидел паузу, так что я решил попробовать sounds.pause(sound); но это не останавливает звук, когда я выпускаю его.(Может быть, я просто неправильно его использую?) Кто-нибудь знает, как кекс дружественный способ остановить этот звук? Спасибо!

редактировать: также пытался sounds.stop(sound); это тоже не сработало.

Код:

Мой onCreate:

sounds = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
sound = sounds.load(this.getApplicationContext(), R.raw.red_long_one, 1);

Тогда вот мое сенсорное событие

@Override public boolean onTouch(View arg0, MotionEvent event) {

            switch (event.getAction() ) { 
            case MotionEvent.ACTION_DOWN: 
                System.out.println("touch");
                sounds.play(sound, 1, 1, 1, -1, 1);
                break;
            case MotionEvent.ACTION_UP:
                System.out.println("up");
                //autoPause does not work on anything lower than sdk8
                sounds.autoPause();
                break; 
            }

            return false;
        }

Я не понимаю почему sounds.stop(sound); кажется, не работает, кажется, но какую статью я читаю рекомендую делать

Я думаю, что стоит отметить, что если я использую sounds.stop(sound); это работает ОДИН раз, после этого он не остановится после того, как я отпущу. но первый пресс и релиз это работает как задумано.

Теперь я знаю, что на сайте andoird написано streamID, а не soundID, но я понятия не имею, как получить streamID.

1 ответ

Решение

Вам нужно использовать streamID, чтобы остановить звук. streamID возвращается play():

что-то вроде того:

// запись streamid при воспроизведении звука streamIDSIDSFX = soundPool.play (soundFXPoolMap.get (ctSoundFX), streamVolume, streamVolume, 1, 0, 1f);

// остановить это, когда вам нужно soundPool.stop(streamIDSoundFX);

Другие вопросы по тегам