Android 6.0 dan yang lebih tinggi mendukung format data standar untuk koneksi stylus Bluetooth melalui Bluetooth (BT), Bluetooth Hemat Energi (BTLE), atau USB. Platform mengorelasikan pengaturan waktu antara input sentuh dan data stylus, lalu memberikan data stylus untuk merender MotionEvents ke aplikasi aktif. Bagian berikut memberikan panduan untuk penerap perangkat OEM, pembuat aksesori stylus, dan developer aplikasi stylus.
Panduan untuk penerap perangkat OEM
Untuk mengaktifkan dukungan stylus Bluetooth, OEM yang mengimplementasikan perangkat harus mendukung Bluetooth (dan harus mendukung BTLE untuk kompatibilitas yang lebih luas). Platform menangani pengumpulan data, korelasi pengaturan waktu, dan rendering ke aplikasi untuk peristiwa stylus yang didukung.
Di Android 14 dan yang lebih tinggi,
StylusButtonInputEventTest mengemulasi perilaku stilus yang terhubung dan menguji
bahwa peristiwa tombol dilaporkan dengan benar. Sebagai solusi untuk versi yang lebih rendah, sebaiknya buat aksesori atau emulator stylus yang dapat menyimulasikan peristiwa stylus.
Panduan untuk pembuat aksesori stylus
Untuk menerapkan dukungan pada perangkat stilus, pengimplementasi perangkat harus menggunakan Deskriptor Perangkat Antarmuka Manusia (HID) Stilus yang ditunjukkan di bawah untuk menjelaskan cara data stilus (sensitivitas tekanan, penghapus, tombol, ID perangkat, level baterai, status pengisian daya, dll.) direpresentasikan. Perangkat stilus mengirimkan informasi HID ke perangkat seluler Android,
sehingga platform dapat mengorelasikan 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
Deskriptor HID contoh berikut melaporkan kontak ujung, tekanan, tombol primer dan sekunder, penghapus, dan nomor seri. Deskripsi 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
}
Panduan untuk developer aplikasi stylus
Platform Android secara otomatis menangani penyambungan dan korelasi peristiwa, sehingga aplikasi lama dan baru mendukung stylus Bluetooth secara default. Untuk mempelajari lebih lanjut cara mendukung stylus di aplikasi Android, lihat dokumentasi Android Developer.