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. Tujuan platform menghubungkan waktu antara input sentuh dan data stilus kemudian memberikan data stilus untuk merender MotionEvents ke aplikasi aktif. Hal berikut bagian ini memberikan pedoman 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.

Di versi 14 dan yang lebih baru, StylusButtonInputEventTest mengemulasi perilaku stilus yang terhubung dan menguji peristiwa tombol yang dilaporkan dengan benar. Sebagai seorang solusi untuk versi yang lebih rendah, sebaiknya buat aksesori stilus atau emulator yang dapat melakukan simulasi peristiwa stilus.

Panduan untuk kreator aksesori stilus

Untuk mengimplementasikan dukungan pada perangkat stilus, pengimplementasi perangkat harus menggunakan Stilus Deskripsi Perangkat Antarmuka Manusia (HID) ditampilkan di bawah untuk menjelaskan cara data stilus (sensitivitas tekanan, penghapus, tombol, ID perangkat, level baterai, status pengisian daya, dll.) adalah terwakili. Perangkat stilus mengirimkan informasi HID ke perangkat seluler Android, memungkinkan platform untuk menghubungkan data HID dengan data sentuh dari layar sentuh untuk menghasilkan peristiwa stilus menggunakan 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 tip, tekanan, tombol utama dan sekunder, penghapus, dan nomor seri. Keterangan HID yang Anda sertakan harus secara akurat mencerminkan apa yang sedang dilaporkan oleh stilus melalui bluetooth, yang bisa jadi merupakan 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, jadi baik aplikasi yang sudah ada maupun yang baru mendukung stilus Bluetooth secara default. Untuk mempelajari lebih lanjut cara mendukung stilus di aplikasi Android, lihat dokumentasi Developer Android.