Приложение аварийно завершает работу с исключением при использовании javax.microedition.media.Player
-
12-09-2019 - |
Вопрос
У меня есть приложение, которое обрабатывает данные через Bluetooth и отправляет их в веб-сервис.Недавно была просьба добавить в приложение звуки.Теперь, когда приложение обрабатывает пакеты данных и плеер постоянно играет, через несколько секунд я получаю исключение «Приложение не отвечает».И тогда процесс прекращается.В журналах я вижу множество исключений ForcedStackTrace, зарегистрированных после этого исключения.
Звуки воспроизводятся в отдельном потоке.Если приложение не воспроизводит звуки или воспроизводит короткие звуки — все работает нормально.Есть ли способ избежать этого исключения?Почему это происходит?
InputStream mediaStream = null;
try {
mediaStream = getClass().getResourceAsStream(relativePath);
getLogger().log("setting player _ " + _audioType);
setPlayer(Manager.createPlayer(mediaStream, _audioType));
_currentPlayer.addPlayerListener(this);
_currentPlayer.setLoopCount(1);
_currentPlayer.realize();
VolumeControl vc = (VolumeControl) _currentPlayer
.getControl("VolumeControl");
if (vc != null) {
vc.setLevel(_voumeLevel);
}
_currentPlayer.prefetch();
_currentPlayer.start();
} catch (Exception e) {
}
(перепост с форумов BB)
Решение
Решено путем реализации моего собственного PlayerManager, который при запуске в отдельном потоке будет воспроизводить элемент в порядке очереди, а не использовать множество потоков, использующих внутреннюю реализацию Player.