2013-04-06 2 views
0

Я сделал приложение для Android, которое воспроизводит определенные звуки. Я хочу, чтобы остановить звук, если следующий один играет, и я успешно сделал, что сСделайте MediaPlayer быстрее реагировать?

public  void w1() throws IllegalArgumentException, SecurityException, IllegalStateException, IOException{ 
     mediaPlayerW.reset(); 
mediaPlayerW.setDataSource(MainActivity.this, Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.w1)); 
mediaPlayerW.prepare(); 
mediaPlayerW.start();} 


    public void onClick(View f) { 

if(f == button1) 
      {w1();}} 

[другие методы называются w2; w3; w4 (...)], но давайте просто работать над одним звуком.

Это работает до сих пор, каждый звук кнопки может «задохнуться» сам (и начать играть снова с самого начала), и он останавливает других, поэтому всегда ТОЛЬКО «новый» звук воспроизводится.

Проблема, которую я получил сейчас, заключается в том, что у меня небольшое прерывание (~ 100 мс), если я нажму кнопку. Даже 40 мс будет слишком высоким для музыкального приложения. Можно ли предварительно загружать звуки в кеш или что-то еще? Я думаю, что .RESET() занимает большую часть времени ..

Thx для вашей помощи

ответ

1

Ok я узнал, что эта проблема задержки не может быть решена для более старых версий, но с Android 4.1 есть другой аудио драйвер, который работает намного лучше. Я попытался с моим gTab 2.0, и обратная связь очень быстро.

Вам не нужно ничего устанавливать, новый аудиоматериал в 4.1 работает как предыдущий, но МНОГО быстрее

Смежные вопросы