Android 6.0 et versions ultérieures sont compatibles avec un format de données standard pour les connexions de stylet Bluetooth via Bluetooth (BT), Bluetooth Low Energy (BTLE) ou USB. La plate-forme met en corrélation la synchronisation entre les données d'entrée tactile et les données du stylet, puis fournit les données du stylet pour rendre les MotionEvents à l'application active. Les sections suivantes fournissent des consignes pour les implémenteurs d'appareils OEM, les créateurs d'accessoires de stylet et les développeurs d'applications de stylet.
Consignes pour les responsables de l'implémentation des appareils OEM
Pour activer la prise en charge du stylet Bluetooth, les fabricants d'appareils OEM doivent prendre en charge le Bluetooth (et doivent prendre en charge le BTLE pour une compatibilité plus large). La plate-forme gère la collecte de données, la corrélation temporelle et le rendu dans l'application pour les événements de stylet compatibles.
Dans la version 14 et les versions ultérieures, StylusButtonInputEventTest
émule le comportement d'un stylet connecté et teste si les événements de bouton sont signalés correctement. Pour contourner ce problème dans les versions antérieures, nous vous recommandons de créer un accessoire ou un émulateur de stylet qui peut simuler des événements de stylet.
Consignes pour les créateurs d'accessoires stylet
Pour implémenter la prise en charge d'un stylet, les fabricants d'appareils doivent utiliser le descripteur HID (Human Interface Device) du stylet indiqué ci-dessous pour décrire la façon dont les données du stylet (sensibilité à la pression, gomme, boutons, ID de l'appareil, niveau de batterie, état de charge, etc.) sont représentées. Le stylet envoie les informations HID à l'appareil mobile Android, ce qui permet à la plate-forme de corréler les données HID avec les données tactiles de l'écran tactile pour générer des événements de stylet à l'aide de la classe MotionEvent
. Dans Android 14 et versions ultérieures, les appuis sur les boutons du stylet génèrent également des événements internes à l'aide de la classe KeyEvent
.
Les données peuvent être envoyées via Bluetooth (BT), Bluetooth Low Energy (BTLE) ou USB.
Exemple de descripteur HID
L'exemple de descripteur HID suivant indique le contact du stylet, la pression, les boutons principal et secondaire, la gomme et le numéro de série. Le descripteur HID que vous incluez doit refléter précisément ce qui est signalé par le stylet via Bluetooth, qui peut être n'importe quel sous-ensemble des fonctionnalités disponibles.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 }
Consignes pour les développeurs d'applications de stylet
La plate-forme Android gère automatiquement l'association et la corrélation des événements. Par conséquent, les applications existantes et nouvelles sont compatibles avec le stylet Bluetooth par défaut. Pour en savoir plus sur la prise en charge des stylets dans les applications Android, consultez la documentation Android pour les développeurs.