Что определяет, какое приложение действует на команду Bluetooth AVRCP?

18

Фон: у меня есть Bluetooth-гарнитура A2DP / AVRCP ( Nokia BH-505 ), которую я активно использую для прослушивания как подкастов, так и музыки. Конечно, я слушаю их в разных приложениях. На гарнитуре Bluetooth есть несколько кнопок «команда» (AVRCP), относящихся к аудио - в частности: «следующая дорожка», «предыдущая дорожка» и «воспроизведение / пауза»

В настоящее время, когда я нажимаю любую из команд, один из установленных музыкальных проигрывателей ( Meridian ) всегда получает команду, даже когда она не активна. Поэтому, когда я нажимаю «play / pause», намереваясь приостановить подкаст ( DoggCatcher ), вместо этого активируется Meridian, и он начинает воспроизводить музыку вместе с подкастом.

Оба игрока настроены на использование гарнитуры: в DoggCatcher включена функция «Привязать к гарнитуре», а в Meridian - «Кнопки гарнитуры». В настоящее время я использую некорневую Android 2.2.1 на GT-S5570, но, возможно, буду рутировать и обновлять до 2.3 CyanogenMod (или такого) в будущем.

Игнорируя специфику, мой вопрос об этом является более общим:

  • Как Android определяет, какое приложение реагирует на эти команды? Я заинтересован даже в очень техническом ответе.

С практической стороны я заинтересован в:

  • Нужно ли возиться с настройками каждого приложения, чтобы определить, какое приложение принимает команды, или есть какой-то общий способ определения этого?
  • Есть ли способ настроить это так, чтобы приложение, которое действительно активно , автоматически получало приоритет? (как было задано частично в другом вопросе )

Чем этот вопрос отличается от похожих вопросов:

Илари Каясте
источник
1
Мне удалось найти некоторую полезную информацию, связанную с этим, в блоге разработчиков Android - обсуждая, как это должно реализовываться приложениями в 2.2: «Разрешение приложениям хорошо играть друг с другом: Работа с кнопками на пульте дистанционного управления»
Илари Каясте
В 2016 году это все еще проблема -.- Переход с iOS это может быть самой раздражающей частью андроида для меня до сих пор: /
Squazz

Ответы:

11

media-button-router , уже упомянутый в одном из ваших связанных вопросов, пытается выяснить, какое приложение в настоящее время воспроизводит музыку, и отправлять на него события AVRCP. Кроме того, в нем перечислены все установленные приложения, которые объявляют о прослушивании событий AVRCP.

Что делает AVRCP сложным: некоторые приложения, такие как Sony Music Unlimited , похоже, не заявлены android.intent.action.MEDIA_BUTTONв своем манифесте. По этой (или, возможно, по какой-то другой) причине ими нельзя управлять через медиа-кнопку-роутер. Я знаю, что, например, Music Unlimited можно управлять через AVRCP, так как я прочитал его в комментарии пользователя, а также смог запустить его один раз, но, к сожалению, он не воспроизводится. Таким образом, в этих случаях кажется, что мы должны ждать обновления приложения с чистой реализацией обработки событий AVRCP.

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

Сайлас
источник
0

Возможно, это поможет немного:

Samsung S5 -> Bluetooth-приемник + Разъемы для наушников

Я использую Samsung S5, сначала с приложением 7digital для загрузки и воспроизведения музыки. Затем я изменил и использовал Cloudplayer. Но каждый раз, когда Clouplayer играет и я нажимаю кнопку паузы / воспроизведения на своем Bluetooth-приемнике, мое 7-цифровое приложение начинает воспроизводить музыку. Я не мог изменить любой параметр, чтобы изменить воспроизведение / паузу Bluetooth в Cloudplayer. Затем я удалил всю свою 7digital загруженную музыку и попробовал снова. Проблема решена! Play / pause теперь как-то связан с Cloudplayer.

Чихва Ли
источник
0

Это не проблема с вашим устройством BT. При подключении к телефону Bluetooth-гарнитура воспроизводит активный поток A2DP, инициированный с мобильного телефона. Если это какой-то стандартный медиаплеер на вашем телефоне, он может реагировать на все команды управления AVRCP, такие как пропуск паузы воспроизведения, fw и т. Д. Теперь, когда вы проигрываете что-то в Интернете или какой-либо другой плеер, который не реализует все такие элементы управления через AVRCP, для BT Headset - это все еще активный поток A2DP. Он отправит сообщения управления AVRCP на ваш телефон. Теперь ваш телефон должен направлять эти команды в соответствующее приложение в большинстве случаев к активному потоковому источнику A2DP, или в вашем случае ваш телефон все еще пересылает команды AVRCP на музыкальный проигрыватель по умолчанию.

Лучше всего попытаться настроить свой мобильный телефон при условии, что воспроизводимый источник поддерживает управление AVRCP. Если этого не произойдет, вы все равно ничего не сможете сделать. Если это так, то Mobile обязательно должен разрешить обработку этих команд AVRCP вашим активным потоковым источником A2DP.

Ризван Уль Хак
источник