Приложение аварийно завершает работу при использовании javax.microedition.media.Player - PullRequest
1 голос
/ 22 сентября 2009

У меня есть приложение, которое обрабатывает данные с 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)

1 Ответ

2 голосов
/ 23 сентября 2009

Решено путем реализации моего собственного PlayerManager, который при запуске в отдельном потоке будет воспроизводить элемент в порядке очереди, а не иметь множество потоков с использованием внутренней реализации Player.

...