Stilus

Android 6.0 dan yang lebih tinggi mendukung format data standar untuk koneksi stilus Bluetooth melalui Bluetooth (BT), Bluetooth Hemat Energi (BTLE), atau USB. Platform ini menghubungkan pengaturan waktu antara input sentuh dan data stilus, lalu menyediakan data stilus untuk merender MotionEvents ke aplikasi aktif. Bagian berikut memberikan panduan untuk pengimplementasi perangkat OEM, pembuat aksesori stilus, dan developer aplikasi stilus.

Panduan untuk pengimplementasi perangkat OEM

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

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

Panduan untuk kreator aksesori stilus

Untuk menerapkan dukungan pada perangkat stilus, pengimplementasi perangkat harus menggunakan Deskripsi Perangkat Antarmuka Manusia (HID) Stilus yang ditampilkan di bawah untuk mendeskripsikan cara data stilus (sensitivitas tekanan, penghapus, tombol, ID perangkat, level baterai, status pengisian daya, dll.) ditampilkan. Perangkat stilus mengirim informasi HID ke perangkat seluler Android, sehingga platform dapat mengaitkan data HID dengan data sentuh dari layar sentuh untuk menghasilkan peristiwa stilus menggunakan class MotionEvent. Di Android 14 dan yang lebih tinggi, penekanan tombol pada stilus juga menghasilkan peristiwa internal menggunakan class KeyEvent. Data dapat dikirim melalui Bluetooth (BT), Bluetooth Hemat Energi (BTLE), atau USB.

Contoh deskripsi HID

Contoh deskripsi HID berikut melaporkan kontak ujung, tekanan, tombol utama dan sekunder, penghapus, dan nomor seri. Deskripsi HID yang Anda sertakan harus mencerminkan secara akurat apa yang dilaporkan oleh stilus 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
}

Panduan untuk developer aplikasi stilus

Platform Android secara otomatis menangani penyambungan dan korelasi peristiwa, sehingga aplikasi yang ada dan baru mendukung stilus Bluetooth secara default. Untuk mempelajari lebih lanjut cara mendukung stilus di aplikasi Android, lihat dokumentasi Developer Android.