У меня возникла следующая проблема при воспроизведении звуков на ежевике:
- При первом воспроизведении звука приложение зависает на ~ 500 мс (не при создании проигрывателя, а только при фактическом воспроизведении звука)
- Существует задержка между звонком и воспроизводимым звуком
Я тестировал на физическом устройстве в дополнение к симулятору. На симуляторе должна быть ошибка, потому что для запуска звуков требуется несколько секунд (я слышал, что это проблема с симулятором, так что ...).
Я также протестировал файлы .wav vs .mp3, и это дает примерно такой же результат.
Вот код, который я использую для загрузки плеера:
stream = new Object().getClass().getResourceAsStream(fileName);
result = javax.microedition.media.Manager.createPlayer(stream, fileName.endsWith(".wav")?"audio/x-wav":"audio/mpeg");
if (prefetch) {
result.prefetch();
}
Затем я сохраняю ссылку на проигрыватель, которую позже использую для воспроизведения звука со следующим кодом:
javax.microedition.media.Player player = (javax.microedition.media.Player)resources[soundId];
if (player != null) {
//#debug
System.out.println("Player state: " + player.getState());
if (player.getState() != javax.microedition.media.Player.STARTED) {
player.setLoopCount(loopCount);
player.start();
}
}
Я уверен, что задержка вызвана воспроизведением звука, потому что у меня есть переключатель, чтобы выключить его, и задержки исчезают, когда я это делаю. Есть ли что-то, что я делаю не так?
Обновление
Ничего не получалось, поэтому я в итоге сменил звуки на миди-файлы, которые обрабатываются лучше. Если кто-нибудь найдет решение, я все равно хотел бы услышать его.