web-dev-qa-db-ja.com

一時停止/再生の再開および次/前のトラックのBluetoothコマンドの送信

Ubuntu PCがBluetoothオーディオコマンド(再生/一時停止、次/前の曲、上/下)を他のデバイスに送信して、Bluetooth経由で音楽をストリーミングすることを望みます。つまり、トラックを変更したり、音楽を一時停止したり再開したりできるBluetoothヘッドフォンのようにUbuntu PCを「偽装」して実装したいと思います。

以下のpavucontrolスクリーンショットで示されている次の設定があります(pt2はBluetooth経由で接続されているデバイスです): enter image description hereenter image description here

この構成ではストリーミングは期待どおりに機能します(pt2からストリーミングされた音楽を聞くことができます)が、一時停止/再生の再開やトラックの変更などの信号を送信する方法を見つけられませんでした。

特定の機能を可能にする多くのBluetoothプロトコルがあることはすでに知っています。仕様を正しく理解していれば、私が興味を持っているのはA2DPです。これは現在デバイスが接続されている方法です。しかし、プロファイルのドロップダウンの下には、HSP/HFPヘッドセットヘッドユニット、HSP/HFPヘッドセットゲートウェイ、およびオフのオプションもあります。

私はPythonでこのようなコマンドを送信できるようにする独自のアプリケーションを開発するので、Python APIまたはbashコマンドを介してそれらを送信することに興味があります。

Bluetoothデバイスと通信する方法に興味があるので、この質問をします。

10
pt12lol

@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経由でPCに接続されたモバイルデバイスで音楽の再生がトリガーされました。

一般に、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-feetSudo apt install d-feetとともにインストールします。それを実行した後、System Busタブでbluezクエリの検索を適用し、デバイスのMACのエントリを見つけます。

enter image description here

org.bluez.MediaControl1の下で、Bluetoothヘッドフォンを使用するものと同様の方法があります。しかし、それらのツリーを参照すると、さらにAWAYが見つかります。これは本当に注目に値します。

dbus-sendは、dbusを使用して信号を送信するためのコマンドです。 --systemスイッチは、System Bus dフィートのタブからのものを使用することを示します。まだ試していませんが、--print-replyはデバッグのみを目的としており、必須ではないと思います。 --dest=org.blezは、dフィートヘッダーのNameを参照します。 /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated>およびorg.bluez.MediaControl1.<command>は、オブジェクトツリーパスを参照します。

10
pt12lol