Gửi tạm dừng / tiếp tục phát và các lệnh bluetooth theo dõi tiếp theo / trước


10

Tôi muốn máy tính Ubuntu của tôi gửi các lệnh âm thanh bluetooth (phát / tạm dừng, bài hát tiếp theo / trước và bật / xuống) cho thiết bị khác truyền phát nhạc qua bluetooth đến nó. Nói cách khác, tôi muốn triển khai PC Ubuntu của mình "giả vờ" là loại tai nghe bluetooth, có khả năng thay đổi bản nhạc, tạm dừng và tiếp tục phát nhạc.

Tôi có thiết lập sau được minh họa bằng ảnh chụp màn hình pavucontrol bên dưới ( pt2là thiết bị được kết nối qua bluetooth): nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Trong cấu hình này, phát trực tuyến hoạt động như mong đợi (tôi có thể nghe nhạc được truyền phát từ đó pt2), nhưng tôi không tìm thấy bất kỳ cách nào để có thể gửi bất kỳ tín hiệu nào như tạm dừng / tiếp tục phát hoặc thay đổi bản nhạc.

Tôi đã phát hiện ra rằng có nhiều giao thức bluetooth cho phép các chức năng cụ thể. Nếu tôi hiểu chính xác thông số kỹ thuật, điều tôi quan tâm là A2DP, đó là cách các thiết bị được kết nối bây giờ. Nhưng trong phần thả xuống hồ sơ, tôi cũng có các tùy chọn bộ phận tai nghe HSP / HFP, cổng HSP / HFPheadset và tắt.

Tôi sẽ phát triển ứng dụng của riêng mình trong Python, nó sẽ cho phép gửi các lệnh như vậy, vì vậy tôi quan tâm đến việc gửi chúng thông qua API Python hoặc thông qua các lệnh bash.

Tôi đang hỏi câu hỏi này bởi vì tôi quan tâm đến cách tôi có thể giao tiếp với các thiết bị bluetooth.


Tôi không có cơ hội để thử nghiệm, nhưng tôi cũng quan tâm đến giải pháp vì tôi cũng gặp vấn đề tương tự, trong một cuộc thảo luận ở đây: ubuntuforums.org/ dường như chỉ cần thêm mô-đun đầu vào để tải, nhưng thông tin không phải là một Rất nhiều trong bài.
AtomiX84

@ AtomiX84 Tôi có một ấn tượng rằng tôi có vấn đề khá trái ngược. Tôi muốn PC của tôi giả vờ tai nghe, không phải tai nghe kết nối với nhạc lái PC của tôi phát trên đó.
pt12lol


@kenn Tôi muốn xem điều khá cụ thể, trong khi trả lời bạn đang liên kết với vẻ ngoài khá chung chung. Bạn có thể cung cấp ví dụ chi tiết cụ thể hơn cho trường hợp sử dụng của tôi?
pt12lol

Tôi không phải là một chuyên gia trong lĩnh vực đó, bạn có thể tìm kiếm github. Ngoài ra, hãy xem liên kết này stackoverflow.com/questions/36132249/ từ
kenn

Câu trả lời:


10

Lấy cảm hứng từ @kenn, tôi quyết định đi sâu hơn dbusd-feetcác công cụ. Cuối cùng, tôi đã đạt được mục tiêu của mình bằng cách sử dụng lệnh sau:

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

điều này tất nhiên đã kích hoạt phát nhạc trên thiết bị di động của tôi được kết nối với PC qua bluetooth.

Nói chung cho các thiết bị bluetooth, lệnh này sẽ như sau:

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>

Để kiểm tra địa chỉ MAC của thiết bị của bạn chạy bt-devices -l. Nó sẽ liệt kê tất cả các thiết bị đã biết (nhưng không nhất thiết phải được kết nối hoặc thậm chí được phát hiện) với địa chỉ MAC trong ngoặc đơn.

Để tìm danh sách lệnh được phép, cài đặt d-feetvới sudo apt install d-feet. Sau khi chạy nó, áp dụng tìm kiếm blueztruy vấn trong System Bustab và tìm mục nhập với MAC của thiết bị của bạn:

nhập mô tả hình ảnh ở đây

Có các phương pháp tương tự như những thứ sử dụng tai nghe bluetooth theo org.bluez.MediaControl1. Nhưng, khi bạn duyệt những cái cây đó, bạn có thể tìm thấy MỘT CÁCH nhiều hơn, điều này thực sự đáng để bạn chú ý.

dbus-sendlà một lệnh để gửi tín hiệu bằng cách sử dụng dbus. --systemchuyển đổi chỉ ra rằng chúng tôi muốn sử dụng công cụ từ System Bustab d-feet. Tôi chưa thử, nhưng tôi cho rằng --print-replychỉ nhằm mục đích gỡ lỗi và không bắt buộc. --dest=org.blezđề cập đến Nametrong tiêu đề d-feet. /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated>org.bluez.MediaControl1.<command>tham khảo các đường dẫn cây đối tượng.


Điều đó thật tuyệt ! Bạn đã ánh xạ các dbus-sendlệnh đó đến các nút phương tiện của PC hay bạn định sử dụng nó như thế nào?
Robert Riedl

1
@Robert Riedl Tôi muốn bắt các nút gamepad của mình xuống các sự kiện và ánh xạ chúng bằng các lệnh cụ thể được gửi đến thiết bị di động để truyền phát nhạc đến máy tính của tôi. Động lực cho dự án này là con trai tôi thích làm quản lý âm nhạc, nhưng tôi không muốn nó dành quá nhiều thời gian cho màn hình. Vì vậy, tôi quyết định cung cấp cho anh ta loại UX khác;)
pt12lol
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.