Bút cảm ứng

Android 6.0 trở lên hỗ trợ định dạng dữ liệu chuẩn cho các kết nối bút cảm ứng Bluetooth qua Bluetooth (BT), Bluetooth năng lượng thấp (BTLE) hoặc USB. Nền tảng này liên kết thời gian giữa dữ liệu đầu vào cảm ứng và dữ liệu bút cảm ứng, sau đó cung cấp dữ liệu bút cảm ứng để hiển thị MotionEvents cho ứng dụng đang hoạt động. Các phần sau đây đưa ra nguyên tắc cho những người triển khai thiết bị OEM, nhà sáng tạo phụ kiện bút cảm ứng và nhà phát triển ứng dụng bút cảm ứng.

Nguyên tắc dành cho người triển khai thiết bị OEM

Để bật tính năng hỗ trợ bút cảm ứng Bluetooth, nhà triển khai thiết bị OEM phải hỗ trợ Bluetooth (và nên hỗ trợ BTLE để có khả năng tương thích rộng hơn). Nền tảng này xử lý việc thu thập dữ liệu, tương quan thời gian và kết xuất cho ứng dụng đối với các sự kiện bút cảm ứng được hỗ trợ.

Trong phiên bản 14 trở lên, StylusButtonInputEventTest mô phỏng hành vi của bút cảm ứng đã kết nối và kiểm thử để đảm bảo các sự kiện nút được báo cáo chính xác. Để khắc phục cho các phiên bản thấp hơn, bạn nên tạo một phụ kiện bút cảm ứng hoặc trình mô phỏng có thể mô phỏng các sự kiện bút cảm ứng.

Nguyên tắc dành cho nhà sản xuất phụ kiện bút cảm ứng

Để triển khai tính năng hỗ trợ trên thiết bị bút cảm ứng, người triển khai thiết bị phải sử dụng Trình mô tả thiết bị giao diện người dùng (HID) bút cảm ứng như minh hoạ bên dưới để mô tả cách dữ liệu bút cảm ứng (độ nhạy áp lực, cục tẩy, nút, mã thiết bị, mức pin, trạng thái sạc, v.v.) được thể hiện. Thiết bị bút cảm ứng gửi thông tin HID đến thiết bị di động Android, cho phép nền tảng liên kết dữ liệu HID với dữ liệu chạm từ màn hình cảm ứng để tạo sự kiện bút cảm ứng bằng cách sử dụng lớp MotionEvent. Trong Android 14 trở lên, thao tác nhấn nút trên bút cảm ứng cũng tạo ra các sự kiện nội bộ bằng cách sử dụng lớp KeyEvent. Dữ liệu có thể được gửi qua Bluetooth (BT), Bluetooth Năng lượng thấp (BTLE) hoặc USB.

Ví dụ về chỉ số mô tả HID

Trình mô tả HID mẫu sau đây báo cáo tiếp xúc với đầu bút cảm ứng, áp lực, nút chính và phụ, cục tẩy và số sê-ri. Chỉ số mô tả HID mà bạn đưa vào phải phản ánh chính xác nội dung mà bút cảm ứng báo cáo qua Bluetooth. Đây có thể là bất kỳ tập hợp con nào trong số các chức năng có sẵn.
UsagePage(Digitizer)
Usage(Pen)
Collection(Application)
    Usage(Stylus)
    Collection(Logical)
        Usage(Tip Pressure)
        Logical Minimum(0)
        Logical Maximum(1023)
        Report Count(1)
        Report Size(10)
        Input(Data, Variable, Absolute, No Null)

        Usage(Barrel Switch)
        Usage(Secondary Barrel Switch)
        Usage(Tip Switch)
        Usage(Invert)
        Logical Maximum(1)
        Report Count(4)
        Report Size(1)
        Input(Data, Variable, Absolute, No Null)

        Usage(Transducer Serial Number)
        Report Count(1)
        Report Size(128)
        Feature(Constant, Variable)
    EndCollection
EndCollection

unsigned char HID_DESC[] = {
    0x05, 0x0D, // UsagePage(Digitizer)
    0x09, 0x02, // Usage(Pen)
    0xA1, 0x01, // Collection(Application)
    0x09, 0x20, // Usage(Stylus)
    0xA1, 0x02, // Collection(Logical)
    0x09, 0x30, // Usage(Tip Pressure)
    0x15, 0x00, // Logical Minimum(0)
    0x26, 0xFF, 0x03, // Logical Maximum(1023)
    0x95, 0x01, // Report Count(1)
    0x75, 0x0A, // Report Size(10)
    0x81, 0x02, // Input(Data, Variable, Absolute, No Null)

    0x09, 0x44, // Usage(Barrel Switch)
    0x09, 0x5A, // Usage(Secondary Barrel Switch)
    0x09, 0x42, // Usage(Tip Switch)
    0x09, 0x3C, // Usage(Invert)
    0x25, 0x01, // Logical Maximum(1)
    0x95, 0x04, // Report Count(4)
    0x75, 0x01, // Report Size(1)
    0x81, 0x02, // Input(Data, Variable, Absolute, No Null)

    0x09, 0x5B, // Usage(Transducer Serial Number)
    0x95, 0x01, // Report Count(1)
    0x75, 0x80, // Report Size(128)
    0xB1, 0x03, // Feature(Constant, Variable)
    0xC0, // End Collection
    0xC0, // End Collection
}

Nguyên tắc dành cho nhà phát triển ứng dụng bút cảm ứng

Nền tảng Android tự động xử lý việc ghép nối và mối tương quan sự kiện, vì vậy, cả ứng dụng hiện có và ứng dụng mới đều hỗ trợ bút cảm ứng Bluetooth theo mặc định. Để tìm hiểu thêm về cách hỗ trợ bút cảm ứng trong ứng dụng Android, hãy xem tài liệu dành cho nhà phát triển Android.