Как правильно воспроизводить аудиофайлы в формате RAW с помощью одного экземпляра MediaPlayer? - PullRequest
0 голосов
/ 22 ноября 2011

Я не думаю, что это хорошо, но это работает.

Я хочу знать, верно ли то, что я делаю?

У меня есть 2 файла tick.wav и tock.wav, которые должны воспроизводиться по таймеру или току. setLooping не очень хорош, потому что мне нужно играть по таймеру init.

Итак, я пробую два метода:

First

У меня есть переменная MediaPlayer mp;

Когда мне нужно сыграть, я звоню mp=MediaPlayer.create(context,tickID), когда мне нужно играть, я звоню mp=MediaPlayer.create(contenxt,tockID)

Когда я вызываю mp.start ();

Некоторое время это работает хорошо, и я слышу тик и ток, но потом я начинаю получать ошибки от медиаплеера. Я думаю, что это потому, что предыдущий экземпляр MediaPlayer все еще воспроизводит файл.

Второй

Итак, я делаю следующее: я создаю две переменные

tickPlayer=MediaPlayer.create(tickID);

и

tockplayer=MediaPlayer.create(tockID);

и тогда мне нужно звонить, я звоню tockPlayer.start(), когда мне нужно поставить галочку, я звоню tickplayer.start()

Я не работаю, но (всегда существует, но) что мне делать, если файлов будет больше 2, может быть, 100? Создать массив медиаплееров, таких как Vector<MediaPlayer> mpPlayers? А звонок нужен? Я думаю, это быстро съест мою память.

Итак, цель: мне нужно правильно воспроизводить файлы с кратковременной реакцией медиаплеера из RAW soruce, как я могу это сделать?

1 Ответ

0 голосов
/ 22 ноября 2011

Может быть, вам не нужен Vector для хранения медиа-файлов, я думаю, вы можете использовать java отражение, чтобы получить информацию о «сырых» ресурсах, поскольку raw является статическим классом из R.java.

А вы?остановка медиаплеера.tickPlayer.stop ().

...