Отправка команд паузы / возобновления воспроизведения и Bluetooth для следующего / предыдущего трека

10

Я хотел бы, чтобы мой ПК с Ubuntu отправлял аудио-команды bluetooth (воспроизведение / пауза, следующая / предыдущая песня и включение / выключение) на другое устройство, передавая на него музыку через Bluetooth. Другими словами, я бы хотел, чтобы мой компьютер с Ubuntu «притворялся» как своего рода наушники Bluetooth, которые способны менять дорожки, а также приостанавливать и возобновлять музыку.

У меня есть следующая настройка, показанная на снимках экрана pavucontrol ниже ( pt2устройство подключено через Bluetooth): введите описание изображения здесь введите описание изображения здесь

В этой конфигурации потоковая передача работает, как и ожидалось (я слышу потоковую музыку pt2), но я не нашел способа отправить ему какой-либо сигнал, такой как пауза / возобновление воспроизведения или изменение трека.

Я уже выяснил, что существует множество протоколов Bluetooth, позволяющих выполнять определенные функции. Если я правильно понял спецификации, меня интересует A2DP, то есть способ подключения устройств. Но при выпадающем профиле у меня также есть варианты гарнитуры HSP / HFP, шлюза HSP / HFP и выключения.

Я собираюсь разработать свое собственное приложение на Python, которое позволит отправлять такие команды, поэтому я заинтересован в отправке их через Python API или через команды bash.

Я задаю этот вопрос, потому что мне интересно, как я могу общаться с устройствами Bluetooth.

pt12lol
источник
У меня нет возможности протестировать, но я тоже заинтересован в решении, потому что у меня возникает та же проблема в обсуждении здесь: ubuntuforums.org/… кажется, нужно просто добавить модуль ввода для загрузки, но информация не много в посте.
AtomiX84
@ AtomiX84 У меня сложилось впечатление, что у меня довольно противоположная проблема. Я хочу, чтобы мой компьютер притворялся наушниками, а не наушниками, подключенными к моему ПК.
pt12lol
@kenn Хотелось бы увидеть что-то конкретное, а ответ, на который вы ссылаетесь, выглядит довольно обобщенно. Не могли бы вы предоставить более подробный пример, характерный для моего варианта использования?
pt12lol
Я не эксперт в этой области, вы можете искать GitHub. Также обратите внимание на эту ссылку stackoverflow.com/questions/48932249/...
KENN

Ответы:

10

Вдохновленный @kenn, я решил пойти глубже dbusи d-feetинструменты. В конце концов я достиг своей цели с помощью следующей команды:

dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0/dev_44_78_3E_85_9D_6F org.bluez.MediaControl1.Play

что, конечно, вызывало воспроизведение музыки на моем мобильном устройстве, подключенном к ПК через Bluetooth.

Обычно для устройств Bluetooth эта команда будет выглядеть так:

dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated> org.bluez.MediaControl1.<command_to_send>

Чтобы проверить MAC-адрес вашего устройства, запустите bt-devices -l. В скобках будут перечислены все известные (но не обязательно подключенные или даже обнаруженные) устройства с MAC-адресами.

Чтобы найти список разрешенных команд, установите d-feetс sudo apt install d-feet. После запуска примените поиск bluezзапроса во System Busвкладке и найдите запись с MAC вашего устройства:

введите описание изображения здесь

Есть методы, похожие на вещи, которые используют наушники Bluetooth под org.bluez.MediaControl1 . Но, когда вы просматриваете это дерево, вы можете найти ПУТЬ больше, это действительно стоит вашего внимания.

dbus-sendпредставляет собой команду для отправки сигналов с использованием dbus. --systemПереключатель указывает, что мы хотим использовать материал из System Busвкладки d-foot. Я еще не пробовал, но я полагаю, что --print-replyэто только для целей отладки и не является обязательным. --dest=org.blezотносится к Nameзаголовку d-футов. /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated>и org.bluez.MediaControl1.<command>обратитесь к путям дерева объектов.

pt12lol
источник
Это здорово ! Вы отобразили эти dbus-sendкоманды на мультимедийные кнопки вашего ПК или как вы собираетесь их использовать?
Роберт Ридл
1
@Robert Riedl Я хотел поймать события на кнопках геймпада и отобразить их с помощью специальных команд, отправленных на мобильное устройство, которое передает музыку на мой компьютер. Мотивацией для этого проекта был мой сын, который любит быть музыкальным менеджером, но я не хотел, чтобы он проводил слишком много времени у экрана. Поэтому я решил предоставить ему другой вид UX;)
pt12lol