Приложение аварийно завершает работу с исключением при использовании javax.microedition.media.Player

StackOverflow https://stackoverflow.com/questions/1459681

  •  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top