Bút cảm ứng

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

Hướng dẫn dành cho người triển khai thiết bị OEM

Để bật hỗ trợ bút cảm ứng Bluetooth, người triển khai thiết bị OEM phải hỗ trợ Bluetooth (và phải hỗ trợ BTLE để có khả năng tương thích rộng hơn). Nền tảng xử lý việc thu thập dữ liệu, tương quan thời gian và hiển thị cho ứng dụng cho 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 hoạt động của bút cảm ứng được kết nối và kiểm tra xem các sự kiện trên nút có được báo cáo chính xác hay không. Để giải quyết các phiên bản thấp hơn, chúng tôi khuyê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ằng bút cảm ứng.

Hướng dẫn dành cho người sáng tạo phụ kiện bút cảm ứng

Để triển khai 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 Bộ mô tả Thiết bị giao diện con người (HID) của bút cảm ứng được hiển thị bên dưới để mô tả cách thể hiện dữ liệu bút cảm ứng (độ nhạy áp lực, cục tẩy, nút, ID 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 tương quan dữ liệu HID với dữ liệu cảm ứng từ màn hình cảm ứng để tạo ra các 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 lớp KeyEvent . Dữ liệu có thể được gửi qua Bluetooth (BT), Bluetooth Low Energy (BTLE) hoặc USB.

Ví dụ mô tả HID

Bộ mô tả HID mẫu sau đây báo cáo điểm tiếp xúc của đầu, áp suất, nút chính và nút phụ, cục tẩy và số sê-ri. Bộ mô tả HID mà bạn đưa vào phải phản ánh chính xác những gì được bút cảm ứng báo cáo thông qua bluetooth, có thể là bất kỳ tập hợp con nào của các khả 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 stylus

Nền tảng Android tự động xử lý việc ghép nối và tương quan sự kiện, do đó, 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 .