Senden einer Pause / Wiederaufnahme der Wiedergabe und Bluetooth-Befehle für den nächsten / vorherigen Titel

10

Ich möchte, dass mein Ubuntu-PC Bluetooth-Audiobefehle (Wiedergabe / Pause, nächster / vorheriger Titel und Auf / Ab) an ein anderes Gerät sendet, das Musik über Bluetooth an dieses Gerät überträgt. Mit anderen Worten, ich möchte meinen Ubuntu-PC so implementieren, als wäre er eine Art Bluetooth-Kopfhörer, der in der Lage ist, Titel zu wechseln und Musik anzuhalten und fortzusetzen.

Ich habe das folgende Setup mit den folgenden Pavucontrol-Screenshots dargestellt ( pt2ist das Gerät über Bluetooth verbunden): Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

In dieser Konfiguration funktioniert das Streaming wie erwartet (ich kann Musik hören, von der gestreamt wird pt2), aber ich habe keine Möglichkeit gefunden, ein Signal wie Pause / Wiedergabe oder Titelwechsel zu senden.

Ich habe bereits herausgefunden, dass es viele Bluetooth-Protokolle gibt, die bestimmte Funktionen ermöglichen. Wenn ich die Spezifikationen richtig verstanden habe, interessiert mich A2DP, wie Geräte jetzt verbunden sind. Aber unter Profil-Dropdown habe ich auch Optionen HSP / HFP-Headset-Head-Unit, HSP / HFP-Headset-Gateway und Aus.

Ich werde meine eigene Anwendung in Python entwickeln, die das Senden solcher Befehle ermöglicht. Daher bin ich daran interessiert, sie über die Python-API oder über Bash-Befehle zu senden.

Ich stelle diese Frage, weil ich daran interessiert bin, wie ich mit Bluetooth-Geräten kommunizieren kann.

pt12lol
quelle
Ich habe keine Gelegenheit zum Testen, aber ich bin auch an der Lösung interessiert, weil ich das gleiche Problem in einer Diskussion hier bekomme : ubuntuforums.org/… scheint nur ein Eingabemodul zum Laden hinzuzufügen, aber Informationen sind keine viel in der Post.
AtomiX84
@ AtomiX84 Ich habe den Eindruck, dass ich eher entgegengesetztes Problem habe. Ich möchte, dass mein PC vorgibt, Kopfhörer zu haben, und keine Kopfhörer, die an meine PC-Lenkmusik angeschlossen sind.
Pt12lol
@kenn Ich würde gerne ganz bestimmte Dinge sehen, während die Antwort, die Sie verlinken, eher generisch aussieht. Können Sie ein detaillierteres Beispiel für meinen Anwendungsfall bereitstellen?
Pt12lol
Ich bin kein Experte auf diesem Gebiet, Sie können nach Github suchen. Werfen Sie
kenn

Antworten:

10

Inspiriert von @kenn, entschied ich mich tiefer in zu gehen dbusund d-feetWerkzeugen. Schließlich erreichte ich mein Ziel mit dem folgenden Befehl:

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

was natürlich das Abspielen von Musik auf meinem mobilen Gerät auslöste, das über Bluetooth mit meinem PC verbunden war.

Generell würde dieser Befehl für Bluetooth-Geräte folgendermaßen aussehen:

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>

Um die MAC-Adresse Ihrer Geräte zu überprüfen, führen Sie sie aus bt-devices -l. Es werden alle bekannten (aber nicht unbedingt verbundenen oder sogar entdeckten) Geräte mit der MAC-Adresse in Klammern aufgelistet.

Installieren Sie d-feetmit , um die Liste der zulässigen Befehle zu finden sudo apt install d-feet. Wenden Sie nach dem Ausführen die Suche nach bluezAbfragen unter der System BusRegisterkarte an und suchen Sie den Eintrag mit dem MAC Ihres Geräts:

Geben Sie hier die Bildbeschreibung ein

Es gibt ähnliche Methoden wie bei Bluetooth-Kopfhörern org.bluez.MediaControl1. Aber wenn Sie diesen Baum durchsuchen, können Sie einen Weg mehr finden, das ist wirklich Ihre Aufmerksamkeit wert.

dbus-sendist ein Befehl zum Senden von Signalen mit dbus. --systemDer Schalter zeigt an, dass wir Dinge von System Busder Registerkarte d-feet verwenden möchten . Ich habe es noch nicht ausprobiert, aber ich nehme an, es --print-replydient nur zu Debugging-Zwecken und ist nicht obligatorisch. --dest=org.blezbezieht sich auf Namein d-Fuß-Header. /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated>und org.bluez.MediaControl1.<command>beziehen sich auf Objektbaumpfade.

pt12lol
quelle
Das ist toll ! Haben Sie diese dbus-sendBefehle den Medientasten Ihres PCs zugeordnet oder wie möchten Sie sie verwenden?
Robert Riedl
1
@Robert Riedl Ich wollte meine Gamepad-Schaltflächen nach Ereignissen abfangen und sie mit bestimmten Befehlen zuordnen, die an ein mobiles Gerät gesendet werden, das Musik auf meinen Computer überträgt. Die Motivation für dieses Projekt war mein Sohn, der es liebt, Musikmanager zu sein, aber ich wollte nicht, dass er zu viel Zeit am Bildschirm verbringt. Also habe ich beschlossen, ihm eine andere Art von UX zur Verfügung zu stellen;)
pt12lol