Stilus

Android 6.0 dan lebih tinggi mendukung format data standar untuk koneksi stilus Bluetooth melalui Bluetooth (BT), Bluetooth Low Energy (BTLE), atau USB. Platform ini menghubungkan waktu antara input sentuh dan data stylus, lalu menyediakan data stylus untuk merender MotionEvents ke aplikasi aktif. Bagian berikut memberikan panduan bagi pelaksana perangkat OEM, pembuat aksesori stylus, dan pengembang aplikasi stylus.

Pedoman untuk pelaksana perangkat OEM

Untuk mengaktifkan dukungan stylus Bluetooth, pelaksana perangkat OEM harus mendukung Bluetooth (dan harus mendukung BTLE untuk kompatibilitas yang lebih luas). Platform ini menangani pengumpulan data, korelasi waktu, dan rendering ke aplikasi untuk peristiwa stylus yang didukung.

Di versi 14 dan lebih tinggi, StylusButtonInputEventTest mengemulasi perilaku stylus yang terhubung dan menguji apakah kejadian tombol dilaporkan dengan benar. Sebagai solusi untuk versi yang lebih rendah, sebaiknya buat aksesori atau emulator stylus yang dapat menyimulasikan peristiwa stylus.

Pedoman bagi pembuat aksesori stylus

Untuk menerapkan dukungan pada perangkat stylus, pelaksana perangkat harus menggunakan Deskriptor Perangkat Antarmuka Manusia (HID) Stylus yang ditunjukkan di bawah ini untuk menjelaskan bagaimana data stylus (sensitivitas tekanan, penghapus, tombol, ID perangkat, level baterai, status pengisian daya, dll.) direpresentasikan . Perangkat stylus mengirimkan informasi HID ke perangkat seluler Android, memungkinkan platform untuk menghubungkan data HID dengan data sentuh dari layar sentuh untuk menghasilkan peristiwa stylus menggunakan kelas MotionEvent . Di Android 14 dan lebih tinggi, penekanan tombol pada stylus juga menghasilkan peristiwa internal menggunakan class KeyEvent . Data dapat dikirim melalui Bluetooth (BT), Bluetooth Low Energy (BTLE), atau USB.

Contoh deskriptor HID

Contoh deskriptor HID berikut melaporkan kontak ujung, tekanan, tombol primer dan sekunder, penghapus, dan nomor seri. Deskriptor HID yang Anda sertakan harus mencerminkan secara akurat apa yang dilaporkan oleh stylus melalui bluetooth, yang dapat berupa subset dari kemampuan yang tersedia.
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
}

Pedoman untuk pengembang aplikasi stylus

Platform Android secara otomatis menangani pemasangan dan korelasi peristiwa, sehingga aplikasi lama dan baru mendukung stylus Bluetooth secara default. Untuk mempelajari lebih lanjut tentang mendukung stylus di aplikasi Android, lihat dokumentasi Pengembang Android .