2016-10-18 2 views
1

Мое обслуживание расширяет класс MediaBrowserService и реагирует на некоторые действия MediaController, такие как getMediaController().getTransportControls().onPlay(). Тем не менее, я не нашел способ «управлять» моим сервисом от виджета, потому что из него не доступен класс MediaController. Как я могу общаться с моим сервисом?Как использовать MediaBrowserService с виджетами?

ответ

2

Рекомендуемый подход заключается в использовании MediaButtonReceiver, который будет пересылать команды на ваш MediaBrowserService, где вы можете справиться с ними, добавив вызов MediaButtonReceiver.handleIntent() в вашем onStartCommand согласно документации.

Вы можете использовать buildMediaButtonPendingIntent() построить PendingIntent для различных медиа-кнопок (например, воспроизведение, пауза, и т.д.), которые затем могут быть установлены на кнопки вашего виджета с setOnClickPendingIntent()

+0

Спасибо за такой подробный ответ. Однако у меня есть еще один вопрос. Как я могу отслеживать состояние сеанса (текущие метаданные песни, состояние воспроизведения) из виджета приложения? – MisterCereal

+0

Существует не синхронный способ получения этой информации, поэтому вам нужно будет использовать службу для обновления вашего виджета. Затем эта служба может подключаться через «MediaBrowser» и создавать «MediaController» из токена сеанса. – ianhanniballake

+0

@ianhanniballake Как мне узнать о сервисе? Запустить сервис для включения виджета и остановить его при отключении? – Ishaan

Смежные вопросы