Может ли служба реализовать как MediaPlayer.OnPreparedListener, так и MediaController.MediaPlayerControl?

Привет, я пытаюсь написать приложение для Android, которое будет воспроизводить файлы MP3 с помощью MediaPlayer, реализованного в службе, чтобы аудиофайл продолжал воспроизводиться, если пользователь решит открыть другое действие или включится блокировка экрана телефона. Я также хотел бы предоставить пользователю виджет MediaController для воспроизведения, остановки, паузы, перемотки назад или вперед. У меня уже есть приложение, которое воспроизводит файлы MP3 в службе, но я хочу добавить MediaController сейчас, и у меня возникают проблемы с пониманием того, как это делается в службе. Я думаю, что мне придется «привязать» службу к моей деятельности, но я также не уверен, как это делается.

Итак, мои вопросы:

1) как связать службу и действие?

2) как реализовать MediaPlayer и MediaController в службе?

Спасибо!


person Red Cricket    schedule 19.02.2013    source источник


Ответы (1)


Для MediaPlayer изучите следующие документы: http://developer.android.com/reference/android/media/MediaPlayer.html

Если это служба, которой вы владеете, ваша активность может вызвать startService(new Intent(this, MyService.class)). Это вызовет обратный вызов onStartCommand (даже если служба уже запущена). Ваши действия также могут вызывать stopService(intent), когда вы хотите, чтобы служба была остановлена ​​и впоследствии уничтожена. Службы также могут вызывать stopSelf().

«Связывание» службы обычно относится к службам, принадлежащим другим процессам, которые разрешают другим доступ для вызова методов через границы процессов. Если это то, что вы пытаетесь сделать, вы, вероятно, можете игнорировать это.

person Karakuri    schedule 19.02.2013
comment
Мне удалось создать приложение со службой, которая реализует медиаплеер и работает нормально, но я хотел бы предоставить пользователю MediaController для управления воспроизведением аудиофайла. Так где же инициализировать MediaController? В Службе onStartCommand или в Действиях onCreate? - person Red Cricket; 19.02.2013
comment
Вы можете поместить MediaController в свою активность и реагировать на нажатия кнопок, чтобы запустить/остановить службу. Если вы хотите, чтобы пользователь мог воспроизводить мультимедиа во время выполнения других задач, вы должны оставить постоянное уведомление на панели уведомлений, чтобы пользователь мог легко вернуться к вашей деятельности и получить доступ к элементам управления мультимедиа. В JellyBean вы также можете воспользоваться преимуществами новых API-интерфейсов уведомлений и разместить некоторые элементы управления в самом уведомлении, используя RemoteViews.. - person Karakuri; 19.02.2013