การส่งหยุดเล่นชั่วคราว / เล่นต่อและคำสั่งบลูทู ธ แทร็คถัดไป / ก่อนหน้า


10

ฉันต้องการให้พีซี Ubuntu ของฉันส่งคำสั่งเสียงบลูทู ธ (เล่น / หยุดชั่วคราวเพลงถัดไป / ก่อนหน้าและเปิด / ปิด) ไปยังอุปกรณ์อื่นที่สตรีมเพลงผ่านบลูทู ธ กล่าวอีกนัยหนึ่งฉันต้องการใช้งาน Ubuntu PC ของฉัน "เสแสร้ง" เป็นหูฟังบลูทู ธ ซึ่งสามารถเปลี่ยนแทร็กหยุดชั่วคราวและเล่นเพลงต่อได้

ฉันมีการตั้งค่าต่อไปนี้แสดงให้เห็นด้วยภาพหน้าจอ pavucontrol ด้านล่าง ( pt2เชื่อมต่ออุปกรณ์ผ่านบลูทู ธ ): ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่

ในการกำหนดค่าสตรีมมิ่งนี้ทำงานได้ตามที่คาดไว้ (ฉันได้ยินเสียงสตรีมเพลงจากpt2) แต่ฉันไม่พบวิธีใดที่จะสามารถส่งสัญญาณใด ๆ เช่นหยุดชั่วคราว / เล่นต่อหรือเปลี่ยนแทร็ก

ฉันพบแล้วว่ามีโปรโตคอลบลูทู ธ จำนวนมากที่อนุญาตการทำงานเฉพาะ หากฉันเข้าใจรายละเอียดอย่างถูกต้องสิ่งที่ฉันสนใจคือ A2DP ซึ่งเป็นวิธีการเชื่อมต่ออุปกรณ์ในตอนนี้ แต่ภายใต้ดรอปดาวน์โปรไฟล์ฉันยังมีตัวเลือกชุดหูฟัง HSP / HFP ชุดหูฟัง HSP / HFP ชุดหูฟังเกตเวย์และปิด

ฉันจะพัฒนาแอปพลิเคชันของฉันเองใน Python ซึ่งจะอนุญาตให้ส่งคำสั่งดังกล่าวดังนั้นฉันจึงสนใจส่งผ่าน Python API หรือผ่านคำสั่ง bash

ฉันถามคำถามนี้เพราะฉันสนใจวิธีการสื่อสารกับอุปกรณ์บลูทู ธ


ฉันไม่ได้มีโอกาสทดสอบ แต่ฉันสนใจในการแก้ปัญหาด้วยเพราะฉันได้รับปัญหาเดียวกันในการสนทนาที่นี่: ubuntuforums.org/ .. ดูเหมือนว่าต้องเพิ่มโมดูลอินพุตเพื่อโหลด แต่ข้อมูลไม่ใช่ มากในการโพสต์
AtomiX84

@ AtomiX84 ฉันมีความประทับใจว่าฉันมีปัญหาที่ค่อนข้างตรงกันข้าม ฉันต้องการหูฟังที่ทำเป็น PC ไม่ใช่หูฟังที่เชื่อมต่อกับเพลงพวงมาลัยบนเครื่อง PC ที่เล่นอยู่
pt12lol


@ เคนฉันต้องการเห็นสิ่งที่เฉพาะเจาะจงมากในขณะที่ตอบว่าคุณกำลังเชื่อมโยงไปยังลักษณะที่ค่อนข้างทั่วไป คุณสามารถให้ตัวอย่างโดยละเอียดเพิ่มเติมเฉพาะกรณีการใช้งานของฉันได้หรือไม่
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

แน่นอนว่าการเรียกใช้การเล่นเพลงบนอุปกรณ์มือถือของฉันเชื่อมต่อกับพีซีผ่านบลูทู ธ

สำหรับอุปกรณ์บลูทู ธ โดยทั่วไปคำสั่งนี้จะมีลักษณะดังนี้:

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>

bt-devices -lในการตรวจสอบอุปกรณ์ของคุณวิ่งอยู่ MAC มันจะแสดงรายการอุปกรณ์ที่รู้จักทั้งหมด (แต่ไม่จำเป็นต้องเชื่อมต่อหรือค้นพบได้) อุปกรณ์ที่มีที่อยู่ MAC ในวงเล็บ

เพื่อที่จะหาได้รับอนุญาตรายการคำสั่งติดตั้งด้วยd-feet sudo apt install d-feetหลังจากเปิดใช้งานให้ใช้การค้นหาbluezข้อความค้นหาภายใต้System Busแท็บและค้นหารายการด้วย MAC ของอุปกรณ์ของคุณ:

ป้อนคำอธิบายรูปภาพที่นี่

มีวิธีการคล้ายกับสิ่งที่ใช้บลูทู ธ org.bluez.MediaControl1หูฟังภายใต้การเป็น แต่เมื่อคุณเรียกดูต้นไม้เหล่านั้นคุณสามารถค้นหา A WAY ได้มากขึ้นนี่เป็นสิ่งที่คุณให้ความสนใจ

dbus-senddbusเป็นคำสั่งสำหรับการส่งสัญญาณการใช้ --systemสวิตช์ระบุว่าเราต้องการใช้สิ่งต่าง ๆ จากSystem Busแท็บของ d-feet ฉันยังไม่ได้ลอง แต่ฉันคิดว่า--print-replyมันมีไว้สำหรับการดีบักเท่านั้นและไม่จำเป็น --dest=org.blezอ้างถึงNameในส่วนหัว d-feet /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated>และ org.bluez.MediaControl1.<command>อ้างถึงเส้นทางต้นไม้วัตถุ


มันเยี่ยมมาก! คุณจับคู่dbus-sendคำสั่งเหล่านั้นกับปุ่มสื่อของพีซีของคุณหรือคุณตั้งใจจะใช้มันอย่างไร
Robert Riedl

1
@Robert Riedl ฉันต้องการที่จะจับปุ่ม gamepad ของฉันลงเหตุการณ์และแผนที่พวกเขาด้วยคำสั่งเฉพาะที่ส่งไปยังอุปกรณ์มือถือที่ส่งกระแสข้อมูลเพลงไปยังคอมพิวเตอร์ของฉัน แรงจูงใจสำหรับโครงการนี้คือลูกชายของฉันที่รักการเป็นผู้จัดการเพลง แต่ฉันไม่ต้องการให้เขาใช้เวลากับหน้าจอมากเกินไป ดังนั้นฉันจึงตัดสินใจจัดหา UX ชนิดอื่นให้เขา;)
pt12lol
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.