Краткое примечание: я использую класс SoundPool
http://developer.android.com/reference/android/media/SoundPool.html
У меня есть простая кнопка, которая воспроизводит зацикленный звук, пока она нажата. Работает отлично. Тем не менее, sounds.autoPause();
не было введено до API 8, и мне действительно нужно что-то совместимое с Cupcake (API 3). Так что я просматривал ссылочный сайт dev, отфильтрованный по API 3, и увидел паузу, так что я решил попробовать sounds.pause(sound);
но он не останавливает звук, когда я его выпускаю. (Может быть, я просто неправильно его использую?) Кто-нибудь знает, как кекс дружественный способ остановить этот звук? спасибо!
edit: также пробовал sounds.stop(sound);
, который тоже не работал.
Код:
My 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