Запуск медиа-проигрывателя в потоке проблем - PullRequest
3 голосов
/ 24 июля 2011

Я пытаюсь запустить медиаплеер, который транслируется с веб-сайта.Прямо сейчас, когда нажата кнопка «старт», вся активность просто останавливается на 5-20 секунд, пока поток соединяется.Я пытаюсь получить "player.start ();"вызовите запуск в потоке, чтобы освободить активность, пока поток соединяется, но он не работает.У кого-нибудь есть идеи?

private void startplayer() {
    try { 
        stream_player = new MediaPlayer();
        stream_player.setAudioStreamType(AudioManager.STREAM_MUSIC);
        stream_player = MediaPlayer.create(this, Uri.parse("http://stream-address"));

        Thread thread = new Thread(new Runnable() {
            public void run() {
                stream_player.start();
            }
        });
        thread.start();

        SetNotification(1, "live");
        liveON = true;
    } catch (Exception e) {
        Log.e(getClass().getName(), "Error starting to stream audio.", e);
        Toast.makeText(this, "Stream seems to be offline", Toast.LENGTH_LONG).show();
    }

}

1 Ответ

1 голос
/ 24 июля 2011

Переместить весь метод в отдельный поток.Часть, которая занимает больше всего времени, - это часть MediaPlayer.create(), поскольку это синхронный вызов, который возвращается, когда медиаплеер готов к воспроизведению.

Альтернативой является не использование create, а использование другого формата, используемого в здесь , который устанавливает прослушиватель перед методом prepare, а когда вызывается прослушиватель, startметод называется.

...