Ứng dụng Android điều khiển thiết bị làm đẹp qua Bluetooth
Ngày cập nhật: 26/06/2024 | Lượt xem: 1107 | Số từ: 587 | Danh mục: Android
Tìm kiếm
Sau khi thêm tính năng điều khiển máy lạnh lên ứng dụng Android tablet, giờ đây mình tiếp tục triển khai điều khiển thiết bị làm đẹp thông qua Bluetooth. Có vẻ như ứng dụng này đang dần trở thành một chiếc remote đa năng.
Ban đầu nghĩ rằng chỉ mất khoảng một hai tiếng là xong, ai ngờ Kotlin trên Android xử lý các bit trong byte phức tạp đến mức khiến mình tốn gần cả buổi chiều để hoàn tất. Lịch trình làm việc ngày hôm nay gần như đã đổ vỡ hoàn toàn.
- Tạo fragment mới và bổ sung trang gỡ lỗi (debug)
- Mở rộng kích thước MTU của Bluetooth và số byte đọc được. Trong quá trình này, mình đã mắc sai lầm là bỏ sót bit tại vị trí 0, dẫn đến việc thiếu đi một byte khi nhận dữ liệu. Đó cũng chính là lý do giá trị cuối cùng luôn không khớp với kỳ vọng, dao động bất thường – hóa ra là mình đang đọc nhầm vào bit kiểm tra.
- Phân tích các trường điều khiển và hiển thị giá trị trên giao diện
- Thêm các nút bấm chức năng làm đẹp và xử lý sự kiện nhấn
- Gửi lệnh điều khiển qua Bluetooth
Để giảm thiểu kích thước gói dữ liệu Bluetooth, giao thức sử dụng rất nhiều cách tổ hợp các bit để biểu diễn giá trị thay vì dùng nguyên một byte. Việc phân tích bằng Kotlin đòi hỏi phải cẩn thận hơn, cần viết nhiều test case để đảm bảo chính xác.
Dưới đây là một vài đoạn code mẫu minh họa:
Phân tích giao thức điều khiển
Trong 2 byte, mỗi nhóm 4 bit sẽ được giải mã thành một giá trị riêng biệt.
Ví dụ về đoạn code Kotlin:
|
|
Lưu ý quan trọng: Khi khai báo val byte: Byte = 0b10101111.toByte()
, bạn phải chuyển đổi giá trị sang kiểu Byte
bằng phương thức .toByte()
nếu không sẽ gặp lỗi:
Hằng số số nguyên không phù hợp với kiểu Byte mong muốn
Gộp giao thức điều khiển
Nếu bạn cần sửa đổi 4 bit cao hoặc 4 bit thấp trong một byte, có thể thực hiện theo cách sau:
Dưới đây là đoạn code Kotlin minh họa:
|
|
Việc xây dựng ứng dụng Android kết nối và điều khiển thiết bị ngoại vi qua Bluetooth thật sự không đơn giản, đặc biệt khi bạn phải tự xử lý từng bit trong byte. Tuy nhiên, nhờ những đoạn code như trên, việc tương tác với thiết bị làm đẹp qua Bluetooth trở nên hiệu quả và linh hoạt hơn rất nhiều. Nếu bạn đang bắt đầu dự án tương tự, hãy dành thời gian nghiên cứu kỹ về bit mask và bitwise operation nhé!