Включение Bluetooth запускает mediabrowserervicecompat

#android #bluetooth #android-mediasession #mediabrowserservicecompat

#Android #bluetooth #android-mediasession #mediabrowserverservicecompat

Вопрос:

Когда я включаю Bluetooth на своем OnePlus, тогда MediaBrowserServiceCompat запускается.

Моя первая запись logcat поступает из onCreate() метода расширения моего класса MediaBrowserServiceCompat . Также запускается несколько других приложений для медиаплеера. В logcat не так много дополнительной информации о том, почему и как Bluetooth запускает MediaBrowserServiceCompat . Таким образом, я потерян. Поведение не полностью воспроизводимо, но это происходит в 9/10 раз, особенно если мои наушники Bluetooth включены. Простое подключение наушников не приводит к тому же поведению. Это происходит только при включении Bluetooth на устройстве.

Какие причины MediaBrowserServiceCompat запускаются при включении Bluetooth или как мне определить, что вызывает это? В свою очередь, как мне предотвратить такое поведение?

Ответ №1:

Согласно https://developer.android.com/guide/topics/media-apps/mediabuttons#restarting-inactive-mediasessions

Если Android может определить последний активный сеанс мультимедиа, он пытается перезапустить сеанс, отправив намерение ACTION_MEDIA_BUTTON компоненту, зарегистрированному в манифесте (например, службе или BroadcastReceiver). Это позволяет вашему приложению перезапустить воспроизведение, пока его пользовательский интерфейс не виден, что характерно для большинства аудиоприложений.

Я думаю, что в вашем случае, поскольку ваше приложение было последней активной МедиаСессией, система пытается перезапустить mediabrowserverservice. Попробуйте отладить свое приложение, переключившись на другие мультимедийные приложения (затем подключите BT), а затем проверьте, запускает ли система вашу службу или нет.

Кроме того, проверьте https://developer.android.com/guide/topics/media-apps/mediabuttons для получения дополнительной информации.

Комментарии:

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

2. Если платформа Android (настроенная OnePlus) вызывает такое поведение, то, боюсь, вы (как разработчик приложения) ничего не сможете сделать, чтобы остановить это поведение. Для достижения желаемого результата вам необходимо обработать свою бизнес-логику. Кстати, чего вы пытаетесь достичь?

3. Я не хочу, чтобы мой медиа-сервис запускался только потому, что пользователь включил Bluetooth. Из UX POV пользователь включает Bluetooth, а затем появляются уведомления в стиле мультимедиа.