Mengirim jeda / melanjutkan pemutaran dan perintah bluetooth trek berikutnya / sebelumnya

10

Saya ingin PC Ubuntu saya mengirim perintah audio bluetooth (putar / jeda, lagu berikutnya / sebelumnya dan naik / turun) ke perangkat lain yang mengalirkan musik melalui bluetooth ke sana. Dengan kata lain, saya ingin mengimplementasikan Ubuntu PC saya "berpura-pura" menjadi semacam headphone bluetooth, yang dapat mengubah trek, dan menghentikan sementara dan melanjutkan musik.

Saya memiliki pengaturan berikut yang diilustrasikan dengan tangkapan layar pavucontrol di bawah ini ( pt2perangkat terhubung melalui bluetooth): masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Dalam konfigurasi ini streaming berfungsi seperti yang diharapkan (saya dapat mendengar musik mengalir dari pt2), tetapi saya tidak menemukan cara untuk dapat mengirimkannya sinyal apa pun seperti jeda / lanjutkan pemutaran atau ubah trek.

Saya telah menemukan bahwa ada banyak protokol bluetooth yang memungkinkan fungsi tertentu. Jika saya memahami spesifikasi dengan benar, yang saya minati adalah A2DP, yang merupakan cara perangkat terhubung sekarang. Tetapi di bawah profil dropdown, saya juga memiliki opsi HSP / HFP head unit headset, HSP / HFPheadset gateway dan off.

Saya akan mengembangkan aplikasi saya sendiri di Python yang akan memungkinkan pengiriman perintah seperti itu, jadi saya tertarik untuk mengirimkannya melalui API Python atau melalui perintah bash.

Saya mengajukan pertanyaan ini karena saya tertarik dengan cara bagaimana saya dapat berkomunikasi dengan perangkat bluetooth.

pt12lol
sumber
Saya tidak memiliki kesempatan untuk menguji, tetapi saya tertarik pada solusi juga karena saya mendapatkan masalah yang sama, dalam sebuah diskusi di sini: ubuntuforums.org/... sepertinya hanya perlu menambahkan modul input untuk memuat, tetapi informasi bukan banyak di pos.
AtomiX84
@ AtomiX84 Saya memiliki kesan bahwa saya memiliki masalah yang agak berlawanan. Saya ingin headphone berpura-pura PC saya, bukan headphone yang terhubung dengan musik kemudi PC saya yang diputar di sana.
pt12lol
@kenn Saya ingin melihat hal yang sangat spesifik, sementara jawaban yang Anda tautkan terlihat agak umum. Bisakah Anda memberikan contoh yang lebih rinci khusus untuk kasus penggunaan saya?
pt12lol
Saya bukan ahli di bidang itu, Anda bisa mencari github. Lihat juga tautan ini stackoverflow.com/questions/48932249/…
kenn

Jawaban:

10

Terinspirasi oleh @kenn, saya memutuskan untuk masuk lebih dalam dbusdan d-feetalat - alat. Akhirnya saya mencapai tujuan saya menggunakan perintah berikut:

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

yang tentu saja memicu bermain musik di perangkat seluler saya yang terhubung ke PC saya melalui bluetooth.

Secara umum untuk perangkat bluetooth perintah ini akan terlihat seperti:

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>

Untuk memeriksa jalankan alamat MAC perangkat Anda bt-devices -l. Ini akan mencantumkan semua perangkat yang dikenal (tetapi tidak selalu terhubung atau bahkan ditemukan) dengan alamat MAC dalam tanda kurung.

Untuk menemukan daftar perintah yang diizinkan, instal d-feetdengan sudo apt install d-feet. Setelah menjalankannya, terapkan pencarian untuk bluezpermintaan di bawah System Bustab dan temukan entri dengan MAC perangkat Anda:

masukkan deskripsi gambar di sini

Ada metode yang mirip dengan hal-hal yang menggunakan headphone bluetooth di bawah org.bluez.MediaControl1. Tetapi, ketika Anda menelusuri pohon itu, Anda dapat menemukan A WAY lebih, ini benar-benar layak perhatian Anda.

dbus-sendadalah perintah untuk mengirim sinyal menggunakan dbus. --systemswitch menunjukkan bahwa kami ingin menggunakan barang dari System Bustab d-feet. Saya belum mencobanya, tapi saya kira --print-replyhanya untuk tujuan debugging dan tidak wajib. --dest=org.blezmerujuk Namepada tajuk d-kaki. /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated>dan org.bluez.MediaControl1.<command>merujuk ke jalur pohon objek.

pt12lol
sumber
Ini bagus! Apakah Anda memetakan dbus-sendperintah - perintah itu ke tombol-media PC Anda atau bagaimana Anda bermaksud menggunakannya?
Robert Riedl
1
@Robert Riedl Saya ingin menangkap acara tombol gamepad saya dan memetakannya dengan perintah khusus yang dikirim ke perangkat seluler yang mengalirkan musik ke komputer saya. Motivasi untuk proyek ini adalah anak saya yang suka menjadi manajer musik, tetapi saya tidak ingin dia menghabiskan terlalu banyak waktu di layar. Jadi saya memutuskan untuk memberinya UX jenis lain;)
pt12lol