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