Bút cảm ứng

Android 6.0 trở lên hỗ trợ định dạng dữ liệu tiêu chuẩn cho việ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. Để giải quyết vấn đề cho các phiên bản thấp hơn, bạn nên tạo phụ kiện hoặc trình mô phỏng bút cảm ứ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áng tạo 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, trình triển khai thiết bị phải sử dụng Mã mô tả thiết bị giao diện người dùng (HID) bút cảm ứng được hiển thị bên dưới để mô tả cách biểu thị dữ liệu của bút cảm ứng (độ nhạy áp lực, tẩy, các nút, mã thiết bị, mức pin, trạng thái sạc, v.v.). 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 cảm ứng trên màn hình cảm ứng để tạo ra các sự kiện dùng bút cảm ứng bằ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ề bộ 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.