2017-08-11 22 views
6

Mục tiêu của tôi là gửi lệnh HDMI CEC từ ứng dụng chuẩn (tức là không có hệ thống) đang chạy trên hộp Android được trang bị khóa USB của Pulse-Eight.Sử dụng libCEC + USB dongle trong ứng dụng Android

Sau these instructions tôi thành công trong việc biên dịch libcec dành cho Android và thực hiện nó như là người chủ trên hộp, với lệnh này:

echo <my-cec-command> | cec-client -s /dev/ttyACM0 

nơi /dev/ttyACM0 là tập tin thiết bị tạo ra bởi hệ thống khi cắm dongle.

Tuy nhiên, quyền của tệp này ngăn lệnh được thực thi bởi người dùng không phải root (do đó nó không thể được thực hiện từ ứng dụng Android của tôi). Mặt khác, ứng dụng thực sự có thể truy cập USB dongle qua USB Host API của SDK Android (miễn là người dùng cấp quyền) và thậm chí có thể được đưa vào bộ điều khiển nối tiếp USB với thư viện UsbSerial.

Nhưng tôi không thấy bất kỳ cách nào để tạo cầu nối giữa kết nối được cung cấp bởi USB Host API của Android và libcec/cec-client. Bạn có ý kiến ​​hay đề nghị nào không?

Trả lời

0

Giải pháp tốt nhất mà tôi đã tìm thấy cho đến nay là sử dụng USB Host API + UsbSerial library để đọc/ghi các gói CEC trên cổng nối tiếp của bộ điều hợp với mã Java thuần túy (không có libCEC nhúng).

Tôi đã thực hiện một số kỹ thuật retro trên libCEC để tìm ra các lệnh thích hợp cho các hoạt động cơ bản như tắt TV trên & tắt và đặt nguồn đang hoạt động.

Và tôi cuối cùng đã đưa ra với lớp UsbCecConnection java sau: https://gist.github.com/sdabet/ac4d7711d1a529806cb7b695530b1fac

+0

tôi đã cố gắng tiếp cận này nhưng khi tôi cố gắng liệt kê tất cả các thiết bị USB thông qua usbManager.getDeviceList() nó sẽ trả về không có thiết bị. Bất kỳ ý tưởng tại sao? Tôi đã thực hiện một bài viết với cách tiếp cận của tôi nhưng vẫn không thành công (https://stackoverflow.com/questions/45639210/use-libcec-usb-dongle-in-android-app). Cảm ơn trước cho bất kỳ hướng dẫn. –

Các vấn đề liên quan