ScreenOnAuto

Điều khiển phản chiếu từ ứng dụng khác

Từ v1.8.4, ScreenOnAuto nhận ba intent để bắt đầu, dừng hoặc bật/tắt phản chiếu. Bất cứ thứ gì gửi được intent — ứng dụng tự động hóa, lối tắt trên màn hình chính, một đoạn script qua ADB, hay ứng dụng do chính bạn viết — đều có thể điều khiển phản chiếu bằng chúng, để phản chiếu bật lên cùng với các thiết lập lái xe khác thay vì phải bật bằng tay.

Ba hành động

Hành động Công dụng
idv.lzn.screenonauto.action.START_MIRROR Bắt đầu phản chiếu. Không làm gì nếu đang phản chiếu.
idv.lzn.screenonauto.action.STOP_MIRROR Dừng phản chiếu. Không làm gì nếu chưa phản chiếu.
idv.lzn.screenonauto.action.TOGGLE_MIRROR Dừng nếu đang phản chiếu, bắt đầu nếu chưa.

Gửi lặp lại một hành động luôn an toàn. Lệnh bắt đầu gửi tới một phản chiếu đang chạy sẽ bị bỏ qua thay vì hủy phiên rồi dựng lại từ đầu, nên một tác vụ chạy mỗi lần kết nối Bluetooth sẽ không làm gián đoạn phản chiếu đang chạy.

Trong ứng dụng tự động hóa

Hầu hết các ứng dụng tự động hóa đều có cùng các thành phần này dưới tên gọi riêng — thường là hành động “gửi intent” với các trường tương tự như sau:

Trường Giá trị
Action một trong ba hành động ở trên
Package idv.lzn.screenonauto
Class idv.lzn.screenonauto.MirrorControlActivity (hoặc …MirrorControlReceiver khi gửi broadcast)
Target Activity (hoặc Broadcast)

Hãy dùng Activity trừ khi bạn có lý do khác — hai phần tiếp theo giải thích sự khác biệt, và vì sao không thể trông cậy vào broadcast để bắt đầu phản chiếu. Dù dùng cách nào, trường Class cũng không được bỏ trống: nếu để trống, broadcast sẽ hoàn toàn không tới được ứng dụng.

Nếu có gì không hoạt động, trước tiên hãy thử lệnh ADB tương ứng bên dưới. Nó cho bạn biết vấn đề nằm ở intent hay ở ứng dụng gửi intent.

Khởi chạy một activity (khuyên dùng)

Gửi hành động tới idv.lzn.screenonauto/.MirrorControlActivity dưới dạng activity:

adb shell am start -a idv.lzn.screenonauto.action.START_MIRROR \
  -n idv.lzn.screenonauto/.MirrorControlActivity

Không có gì của ScreenOnAuto hiện lên màn hình, và nó cũng không để lại gì trong Ứng dụng gần đây. Bạn còn có thể gửi lệnh bắt đầu trước khi tới xe — phản chiếu sẽ chờ, và tự tiếp tục khi màn hình xe sẵn sàng.

ℹ️ Lưu ý Android vẫn xin quyền ghi màn hình khi bắt đầu phản chiếu. Để thực sự rảnh tay, hãy cấp trước quyền này một lần qua ADB — xem Cấp quyền phản chiếu qua ADB.

Gửi broadcast

Ba hành động này cũng hoạt động dưới dạng broadcast, khi đó gửi tới idv.lzn.screenonauto/.MirrorControlReceiver:

adb shell am broadcast -a idv.lzn.screenonauto.action.STOP_MIRROR \
  -n idv.lzn.screenonauto/.MirrorControlReceiver

Lệnh dừng gửi theo cách này hoàn toàn không gây chú ý — không có cửa sổ, không chớp màn hình.

Bắt buộc phải ghi rõ thành phần nhận. Android hiện đại không chuyển broadcast tới một ứng dụng nếu bên gửi không nói rõ broadcast dành cho thành phần nào, nên broadcast chỉ mang hành động sẽ bị bỏ đi và không có gì xảy ra cả, cũng không có lỗi nào ở đâu.

⚠️ Cảnh báo Lệnh bắt đầu gửi dưới dạng broadcast không đáng tin cậy, và khi thất bại thì thất bại trong im lặng. Phải cho phép hai thứ trước, và cả hai đều tắt theo mặc định trên nhiều điện thoại:

Nếu bạn chỉ cần bắt đầu, hãy dùng activity ở trên — cách đó không cần hai thứ này.

Khắc phục sự cố

Cập nhật lần cuối: