Получение запущенного android.media.MediaPlayer для сохранения во всех действиях в приложении - PullRequest
3 голосов
/ 17 июля 2011

Я пытаюсь показать видеопоток, который начинается в одном действии моего приложения и сопровождает пользователя в других действиях в приложении без необходимости повторной подготовки.Небольшая пауза в изменении активности - это нормально, но перезапуск не должен.В одном действии все работает нормально, но при переключении действий MediaPlayer не хочет подключаться к новому SurfaceHolder.Звук работает прекрасно, хотя с небольшим заминкой.

Я пытался сделать это через подкласс SurfaceView, инициализированный с контекстом приложения.(Перераспределение представлений контекста приложения между действиями, кажется, работает нормально, когда я вместо этого использую простые представления, такие как Button, поэтому я думаю, что это не проблема.) В конструкторе, который я создаю объект MediaPlayer, установите слушателей и источник данныхпоток MP4 через HTTP - и да, я проверил, что могу воспроизводить его при обычном использовании MediaPlayer), и позвонил prepareAsync.В моем методе SurfaceHolder.Callback surfaceCreated я называю setDisplay и (если игрок закончил подготовку) start.В методе surfaceDestroyed я вызываю pause.И в обратном вызове prepare, если поверхность уже создана, я вызываю start.

Я не знаю, что делать в этой точке.Есть идеи?

1 Ответ

0 голосов
/ 25 июля 2011

Более простой способ - сохранить позицию в методе onpause ():

public void onPause(){

     super.onPause();
     int pos = player.getCurrentPosition();
}

, а затем в вызове нового действия:

player.seekTo(pos);

player.start();

Но это не оченьэффективный.Было бы неплохо сохранить состояние видео, когда оно покидает активность, и восстанавливать его, когда я вернусь к нему, но я не могу найти ничего подобного в Интернете.

...