Android: что мне не совсем понятно в MediaSessionManager и RemoteController

Я пытался просматривать веб-страницы, чтобы увидеть, что MediaSessionManager делает и для чего использует RemoteController (устарело с API 21), чтобы понять, могут ли эти API решить мою проблему.

В данный момент я использую AudioManger и отправляю ключевое событие для остановки / приостановки / воспроизведения текущего аудио с другого музыкального плеера... Это делает свою работу. Теперь мне интересно, можно ли это сделать для медиаплеера, например, приложения YouTube, которое воспроизводит видео и мое приложение с другого устройства может действовать как пульт дистанционного управления для управления воспроизведением видео на втором устройстве.

Я закончил тем, что прочитал MediaSessionManager. Он дает все активные медиа-сессии с проигрывателями музыки, которые в данный момент воспроизводятся. Я не уверен, что это правильное решение для решения моего сценария выше. Так как я работаю на Android 4.4.2, я думаю, что MediaSessionManager, вероятно, не правильный путь, поэтому я нашел что-то под названием RemoteController, но не уверен, как это действительно работает и помогает ли это решить мою проблему

Здесь слишком много всего, я не знаю, с чего начать.

2 ответа

Решение

И то и другое RemoteController и MediaControllerэкземпляры, доступные через MediaSessionManager, являются только локальными - они позволяют одному приложению на устройстве управлять воспроизведением другого приложения.

Если вы поддерживаете только устройства API 21+, MediaSessionManager Намного легче работать и надежнее, чем RemoteController, но если вы также хотите поддерживать устройства KitKat, то нет другого выбора, кроме RemoteController,

Конечно, как только пользователи включили NotificationListenerService на устройстве, которым вы хотите управлять, вы можете создать любой протокол обмена данными между устройствами, который вы хотите, отправлять состояние мультимедиа на другое управляющее устройство и отправлять команды обратно на устройство, которым вы хотите управлять. Однако эта инфраструктура была бы чем-то уникальным для вашего приложения - нет встроенных классов, которые делают это.

Вы можете легко создавать ожидающие Интенты, которые будут обрабатываться получающими контроллерами, используя

MediaButtonReceiver.buildMediaButtonPendingIntent()

И добавление

MediaButtonReceiver.handleIntent()

В коде получателя

Другие вопросы по тегам