Фон: у меня есть 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 определяет, какое приложение реагирует на эти команды? Я заинтересован даже в очень техническом ответе.
С практической стороны я заинтересован в:
- Нужно ли возиться с настройками каждого приложения, чтобы определить, какое приложение принимает команды, или есть какой-то общий способ определения этого?
- Есть ли способ настроить это так, чтобы приложение, которое действительно активно , автоматически получало приоритет? (как было задано частично в другом вопросе )
Чем этот вопрос отличается от похожих вопросов:
«Как настроить поведение кнопки« Воспроизвести »на пульте Bluetooth» - только практичный, другой фокус, пока нет ответов, и меня также интересуют ответы, для которых потребуется рут или нестандартная прошивка (особенно CyanogenMod).
Изменить приложение по умолчанию для обработки элементов управления гарнитурой - точная проблема, которая была исправлена, но не так, чтобы отвечать на мои вопросы, хотя она дает некоторые подсказки о том, как все работает.
Как сделать так, чтобы кнопка на моих наушниках управляла чем-то другим, кроме штатного музыкального плеера? - частично похожий вопрос с практической стороны, но не фокусируюсь на объяснении, как это на самом деле работает, и единственный ответ сфокусирован на той части, о которой я не спрашиваю (заставить только одно приложение получать команды).
Почему все звуковые приложения получают события кнопок Bluetooth, все сразу - очень похоже, но спрашивают о конкретной проблеме (все медиаплееры получают команду AVRCP)