Bỏ qua tới nội dung

← Bài viết· ~9 phút đọc

TQD KidGuard và TV Launcher quản lý Tivi, máy tính bảng của con bằng mã 6 số

Bộ ứng dụng quản lý thời gian màn hình và điều khiển từ xa cho Android TV cùng máy tính bảng qua tv.tqd.me, cho phép bố mẹ ghép nối thiết bị qua mã 6 số, gửi lời nhắn 14 giây, hẹn giờ khóa PIN, chặn game và dọn sạch màn hình chính Tivi.

Trịnh Quang DũngTrịnh Quang Dũng (DũngTQ)
  • TQD KidGuard
  • Android TV
  • Cloudflare
  • MQTT
  • Gia đình
Xem bản .md
TQD KidGuard và TV Launcher quản lý Tivi, máy tính bảng của con bằng mã 6 số
Mục lục bài viết (4 phần)Thu gọn / Mở

Mình dựng TQD KidGuard và TV Launcher (tv.tqd.me) từ hai chuyện rất quen trong nhà có trẻ nhỏ: mỗi tối đến giờ ăn cơm hay đi ngủ là bố mẹ phải nhắc đi nhắc lại chuyện tắt Tivi, còn chiếc Xiaomi Mi TV 4A 43 inch đời cũ ở phòng khách (chạy Android 6.0.1, RAM 1,6 GB) thì ngày càng ì ạch vì giao diện gốc PatchWall nhồi đầy quảng cáo và làm kẹt cả phím mic giọng nói trên điều khiển Bluetooth.

Thay vì giật điều khiển hay thu máy tính bảng đột ngột dễ làm con ức chế vì đang xem dở tập phim hoặc chơi dở ván game, bố mẹ chỉ cần mở trang tv.tqd.me ngay trên điện thoại (có thể ghim ra màn hình chính iPhone hoặc Android như một ứng dụng riêng). Từ đây, mình nhìn thấy chính xác con đang mở ứng dụng hay video nào, bấm gửi lời nhắn nhắc trước lên màn hình kèm tiếng chuông rồi hẹn đếm ngược để máy tự khóa bằng mã PIN.

Nhắc trước 14 giây và đếm ngược tự khóa thay vì thu máy đột ngột

Trên bảng điều khiển tv.tqd.me, thẻ Con đang xem / dùng gì đọc trực tiếp trạng thái từ MediaSession, SmartTube và UsageStatsManager để báo về điện thoại tên ứng dụng đang chạy, tiêu đề video YouTube, tên kênh cùng số phút con đã xem.

Khi muốn con chuẩn bị dừng màn hình, bố mẹ có bốn cách can thiệp nhẹ nhàng từ điện thoại dù đang ngồi ở phòng bên cạnh qua Wi-Fi hay đi làm xa dùng mạng 4G, 5G:

  • Gửi lời nhắn nổi 14 giây kèm tiếng chuông: tự gõ lời nhắn riêng hoặc bấm nhanh bốn mẫu có sẵn gồm "Hết tập/ván này nghỉ nhé", "Đến giờ ăn cơm / tắm", "Đến giờ đi ngủ rồi" và "Giữ khoảng cách mắt".
  • Hẹn giờ đếm ngược linh hoạt: chọn mốc 3, 5, 10, 15 hoặc 30 phút (kèm nút Cộng 5p khi muốn thưởng thêm giờ). Trong 60 giây cuối cùng, góc màn hình Tivi hoặc máy tính bảng hiện đồng hồ đếm ngược để con tự kết thúc tập phim; hết giờ, máy tự tắt tiếng, dừng phát và phủ màn hình khóa PIN chặn cả phím Home lẫn phím Back.
  • Tự khóa theo khung giờ ngủ: mặc định từ 21:30 đến 06:30 sáng hôm sau (tùy chỉnh được giờ bật và giờ tắt). Nếu trẻ lén mở máy trong khung giờ này, màn hình khóa PIN sẽ bật lên ngay.
  • Đổi mã PIN từ xa: đổi mã PIN 4 đến 6 chữ số ngay trên điện thoại và đồng bộ tức thì xuống toàn bộ Tivi, máy tính bảng trong tài khoản.

Kết nối qua mã 6 số và bộ cài KidGuard 45 KB chặn game, mở ứng dụng học

Chế độ TQD KidGuard 45 KB trên máy tính bảng Android khóa nhanh game và TikTok nhưng vẫn mở ứng dụng học tiếng Anh

Để bố mẹ không phải đụng đến địa chỉ IP tĩnh hay mở cổng trên bộ phát Wi-Fi trong nhà, mỗi Tivi hoặc máy tính bảng sau khi cài ứng dụng sẽ tự sinh một mã ghép nối 6 chữ số gắn cố định với phần cứng máy. Bố mẹ đăng ký tài khoản riêng trên tv.tqd.me, nhập mã 6 số đó và đặt tên gợi nhớ như Tivi Phòng Khách hay MTB Phòng Học là có thể chuyển đổi qua lại giữa các thiết bị bằng một chạm ở thanh trên cùng.

Dự án phát hành hai bộ cài Android riêng theo đúng nhu cầu từng thiết bị:

  • TQD KidGuard (guard.apk, dung lượng khoảng 45 KB): gói bảo vệ chạy ngầm dành cho máy tính bảng Android (Samsung Tab, Xiaomi Pad, Lenovo, Amazon Fire HD) và mọi dòng Android TV, Google TV (Sony Bravia, TCL, Xiaomi, Casper, Coocaa, Philips, Aqua) muốn giữ nguyên màn hình chính của hãng.
  • TQD TV Launcher (tv-launcher.apk, dung lượng khoảng 3,8 MB, hỗ trợ từ Android 6.0 / API 23 trở lên): bản thay thế toàn bộ màn hình chính Tivi có tích hợp sẵn bộ bảo vệ phụ huynh, được mình hợp nhất và nâng cấp từ hai dự án mã nguồn mở vgscity/vgs-cleantv cùng qqwersde/my-tv-signal-android6.

Riêng trên máy tính bảng của con, giao diện quản lý có thêm ba nút xử lý tức thì (Đóng App, Chặn App Này, Mở Khóa Máy) cùng danh sách bật hoặc khóa từng ứng dụng. Trước giờ học bài, mình bấm nút Khóa toàn bộ Game & TikTok để chặn Roblox, TikTok, Block Blast! hay Stick War: Legacy, trong khi vẫn mở quyền truy cập cho Duolingo hoặc YouTube Kids. Hễ trẻ chạm vào biểu tượng đang bị khóa, dịch vụ Trợ năng trên máy sẽ đóng ứng dụng đó lại ngay lập tức.

Để lớp bảo vệ hoạt động ổn định, thiết bị chỉ cần cấp một lần ba quyền hệ thống Android (B1 truy cập dữ liệu sử dụng, B2 hiển thị trên ứng dụng khác, B3 dịch vụ Hỗ trợ tiếp cận). Trang hướng dẫn cài đặt chi tiết có ghi rõ từng bước tắt Play Protect trên Tivi Sony/TCL, mở mục Cho phép cài đặt bị hạn chế trên Android 13/14, gõ đường dẫn rút gọn https://tv.tqd.me/apk trong ứng dụng Downloader, cùng mẹo cắm thêm Android TV Box vào cổng HDMI rồi khóa mã PIN ứng dụng gốc đối với Tivi Samsung (Tizen) và LG (webOS).

Màn hình chính 5 biểu tượng kính mờ, đẩy ảnh gia đình từ điện thoại và dọn RAM

Màn hình chính TQD TV Launcher cảnh Vịnh Hạ Long với 5 biểu tượng kính mờ, kệ SmartTube lọc chủ đề cho bé, 9 giao diện VGS và công cụ đẩy ảnh từ điện thoại

Với những chiếc Tivi đời cũ chỉ có hơn 1 GB RAM, gỡ bỏ giao diện quảng cáo nặng nề giúp máy phản hồi mượt hơn hẳn. Màn hình chính của TQD TV Launcher chừa lại 75% không gian thoáng cho hình nền phong cảnh, chỉ đặt một hàng 5 biểu tượng hay dùng nhất gồm SmartTube (xem YouTube không quảng cáo), VTV Go, MKodi, AirPlay&UPnP và Aurora Store; các ứng dụng phụ nằm gọn ở ngăn dưới khi bấm phím mũi tên xuống. Góc trên màn hình hiển thị giờ lớn, lịch âm dương Việt Nam và thời tiết trực tiếp theo tỉnh thành (Hà Nội, TP.HCM, Đà Nẵng, Hải Phòng, Đà Lạt, Nha Trang), đi kèm kệ đề xuất video SmartTube lọc sẵn 5 chủ đề cho trẻ nhỏ (Hoạt hình, Tiếng Anh, Khám phá, Nhạc bé, Gia đình).

Mỗi khi thất lạc điều khiển vật lý hoặc điều khiển hết pin, trang web tv.tqd.me biến điện thoại thành chiếc điều khiển từ xa đầy đủ chức năng:

  • Điều hướng và âm lượng chi tiết: cụm phím D-Pad tròn (hỗ trợ nhấn giữ để cuộn nhanh), bàn rê cảm ứng, chuyển cổng tín hiệu HDMI 1 / HDMI 2 / HDMI 3 / AV và thanh trượt âm lượng 0 - 50 kèm 5 mức chọn nhanh (0, 8·Đêm, 16·Vừa, 25·Rõ, 35·To).
  • Đổi 9 chủ đề VGS và đẩy ảnh từ điện thoại lên Tivi: bên cạnh 8 bức ảnh thắng cảnh thế giới 16:9 HD tự luân chuyển (như Vịnh Hạ Long, núi Phú Sĩ, dãy Alps hay bắc cực quang ở Abisko) cùng 9 giao diện màu sắc (Phong Cảnh TG, Cực Quang, macOS, Bầu Trời, Điện Ảnh, VGS Hoàng Gia, Bắc Âu, Apple TV, OLED Đen), bố mẹ có thể chọn thẳng ảnh gia đình trong thư viện điện thoại để trình duyệt tự cắt chuẩn 16:9 rồi đẩy lên làm hình nền Tivi.
  • Gõ tiếng Việt có dấu và dọn bộ nhớ đệm 1 chạm: gõ câu tìm kiếm tiếng Việt trên bàn phím điện thoại để gửi thẳng chữ sang ô nhập của Tivi hoặc phát ngay trên SmartTube, đồng thời theo dõi thanh RAM trống và bấm nút Dọn Cache & Giải Phóng RAM Ngay khi máy chạy lâu bị đầy bộ nhớ đệm.

Kiến trúc đường truyền kép Cloudflare D1 kết hợp MQTT nhị phân và mạng LAN

Bài toán kỹ thuật đáng chú ý nhất khi làm dự án này là giữ cho thao tác bấm phím điều hướng phản hồi tức thì lúc ở trong nhà, nhưng vẫn điều khiển xuyên mạng được khi bố mẹ đang đi làm bên ngoài mà không phát sinh chi phí thuê máy chủ riêng.

Mình giải quyết bằng kiến trúc đường truyền kép nối giữa hạ tầng biên của Cloudflare và giao thức nhắn tin nhẹ:

  • Quản lý tài khoản và thiết bị trên Cloudflare Worker + D1: Worker tại tên miền tv.tqd.me kết nối cơ sở dữ liệu tqd-parental-db gồm ba bảng users, sessions, devices (băm mật khẩu SHA-256 và xác thực qua Bearer token), giữ danh sách thiết bị của mỗi gia đình tách biệt trong tài khoản riêng.
  • Tự đóng gói khung tin nhị phân MQTT 3.1.1 kết hợp cổng LAN nội bộ: thay vì kéo cả thư viện MQTT nặng hàng trăm kilobyte vào trang web, trình duyệt chỉ dùng vài chục dòng Uint8Array để đóng gói khung tin nhị phân MQTT qua WebSocket (wss://broker.emqx.io:8084/mqtt), còn phía Android mở socket thuần giữ kết nối. Khi điện thoại và Tivi chung mạng Wi-Fi, lệnh bấm phím hoặc gửi ảnh đi thẳng qua HTTP server nội bộ cổng :8686 với độ trễ gần bằng không; khi bố mẹ dùng 4G từ xa, trình duyệt tự cắt ảnh 16:9 thành từng gói Base64 nặng 14 KB gửi cách nhau 320 mili-giây qua MQTT để vượt giới hạn kích thước gói tin của broker công cộng và ghép lại trên Tivi sau khoảng một giây.
  • Bắt mã phím phần cứng scanCode=63 giữ sống mic giọng nói Bluetooth: trên chiếc Xiaomi Mi TV 4A chạy Android 6, khi thay Launcher gốc thì phím thu âm trên điều khiển Bluetooth BLE bị hệ thống bỏ qua. Trong HomeKeyService.onKeyEvent(), mình bắt trực tiếp mã phím scanCode=63 trong cửa sổ giữ 8 giây để gọi Google Assistant (com.google.android.katniss) mà không cắt ngang luồng thu âm AudioRecord lúc người dùng đang giữ phím nói, đồng thời duy trì cổng ADB 5555 để bảo trì không dây trong mạng nhà.

Bạn có thể mở thử bảng điều khiển hoặc tải bộ cài cho Tivi và máy tính bảng tại các liên kết dưới đây:

Bài viết & Ghi chép khác

Esc