Bluetooth A2DP + AVRCP 1.3+ module
I am having a difficult time understanding how to implement AVRCP with my project. I have searched quite a bit and read many datasheets, but I still seem to be missing something. Here is what I want to do: Simply put, i want to be able to connect with my android 4.3 device via bluetooth to stream music via A2DP (which seems pretty straight forward) as long as the bluetooth module supports A2DP. Additionally, i want to be able to control the media player app (Pandora, etc). Now, i know that AVRCP 1.0 supports only basic control commands (pause, play, next, prev, FF, RW), and I have found many bluetooth modules online that support sending these commands via simple UART AT commands or commands via an SPI bus. However, I also want to be able to get metadata from the android device (which is an AVRCP 1.3+ only capability), such as track name, album name, artist name, track length, and elapsed time. Now, from what I understand, to get metadata, I need a bluetooth module that supports AVRCP 1.3 or higher. What I cannot understand is HOW one requests the metadata! From what I read, metadata, such as track name, artist, ablum, and track length, are are sent in response to a track change command. Can anyone confirm this? What about if I need to request the elapsed time? Ideally, I am looking for a bluetooth module that support A2DP (24 bit if available) and AVRCP 1.3 or higher with a UART or SPI or I2C interface where I can send it play, pause, next, prev commands to control the music player and request artist, album, track name, elapsed time, track length metadata. This is the only unit that I have found that mentions metadata in the datasheet: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Wireless/Bluetooth/Melody_5.0_Manual-RevD-RC10-Release.pdf (pg.16) But I am still unclear how this works! Any assistance here would be great!
AVRCP supports 2 roles.target and controller, to send all metadata information you need to define target role, refer media.doc. Check for the APIS, you need to register media player and pass the metadata and track information. If controller changes any parameter, Media interface SetProperty() would be called and PropertyChanged signal needs to be emit from your code to bluez with all values, docs are bit clear.In case you are using other stack than bluez, this will not work
AVRCP Bluetooth — что это такое и зачем нужно?
Как технология AVRCP Bluetooth используется для прослушивания музыки в беспроводных наушниках?
AVRCP (Audio / Video Remote Control Profile) — это профиль Bluetooth, который используется для удаленного управления различными мультимедийными устройствами: телевизорами, домашними кинотеатрами, музыкальными центрами.
AVRCP нужен для передачи команд с одного устройства (смартфона) на другое. Устройство, которое поддерживает этот профиль, выполняет роль пульта дистанционного управления. Для управления используется специальный двойной осевой передатчик, который передает звук и информацию к приемнику. После этого приемник отправляет команды передатчику.
Последние версии AVRCP поддерживают работу с несколькими гаджетами одновременно. Также у профиля есть функция, которая определяет количество элементов в каталоге. Для этого не нужно загружать весь список. Доступна функция загрузки обложек с использованием протокола BIP.
Технология AVRCP работает на мобильных устройствах с операционной системой Android 8.0 Oreo и новее. Чаще всего технология используется в беспроводных наушниках. Благодаря AVRCP пользователи могут регулировать уровень громкости, переключать треки и управлять плейлистами со своего смартфона.
AVRCP насчитывает несколько версий, которые отличаются по количеству функций и производительности:
- Версия 1.4. Включает в себя все стандартные процессы (воспроизведение, пауза, остановка, данные об аудиофайле). К дополнительным функциям относится возможность просматривать данные сразу на двух и более плеерах, а также на каждом в отдельности, управлять ими, использовать функцию «Поиск» и функцию «Абсолютная громкость».
- Версия 1.5 содержит все возможности версии 1.4, но отличается оптимизацией, исправлением недостатков регулирования функции «Абсолютная громкость», а также устранением багов в разделе просмотра и других функций.
- Версия 1.6 позволяет просматривать данные и отслеживать информацию. Благодаря этому AVRCP 1.6 может определять, сколько элементов в конкретной папке, не загружая их все сразу. Также в этой версии доступна передача обложек (используя профиль BIP). AVRCP 1.6 поддерживается на мобильных устройствах, совместимых с Andrioid 8.0 Oreo.
Для использования выбирать стоит новейшую версию, так как в ней присутствуют удобные дополнительные функции в совокупности с надежной работой стандартных процессов.
Главный «конкурент» AVRCP — A2DP, который также часто используется в различной аудиотехнике. Главное отличие — A2DP используется для передачи монофонического или стереофонического звука высокого качества.
Ознакомиться с другими Bluetooth-кодеками и их особенностями можно в отдельной статье.