Android 6.0 und höher unterstützt ein Standarddatenformat für Bluetooth-Stiftverbindungen über Bluetooth (BT), Bluetooth Low Energy (BTLE) oder USB. Die Plattform korreliert das Timing zwischen Touch-Eingabe und Eingabestiftdaten und stellt dann Eingabestiftdaten bereit, um MotionEvents in der aktiven App zu rendern. Die folgenden Abschnitte enthalten Richtlinien für OEM-Geräteimplementierer, Hersteller von Eingabestiftzubehör und Entwickler von Eingabestift-Apps.
Richtlinien für OEM-Geräteimplementierer
Um die Unterstützung von Bluetooth-Stylus zu ermöglichen, müssen OEM-Geräteimplementierer Bluetooth unterstützen (und für eine größere Kompatibilität BTLE). Die Plattform übernimmt die Datenerhebung, die Zeitkorrelation und das Rendern in der App für unterstützte Eingabestiftereignisse.
In Version 14 und höher emuliert StylusButtonInputEventTest
das Verhalten eines verbundenen Eingabestifts und prüft, ob Tastenereignisse korrekt gemeldet werden. Als Problemumgehung für niedrigere Versionen empfehlen wir, ein Eingabestift-Zubehör oder einen Emulator zu erstellen, mit dem Eingabestiftereignisse simuliert werden können.
Richtlinien für Hersteller von Eingabestift-Zubehör
Um die Unterstützung für ein Eingabestift-Gerät zu implementieren, müssen Geräteimplementierer den unten gezeigten Stylus-HID-Beschreibungsblock (Human Interface Device) verwenden, um zu beschreiben, wie Eingabestiftdaten (Druckempfindlichkeit, Radiergummi, Tasten, Geräte-ID, Akkustand, Ladestatus usw.) dargestellt werden. Das Eingabestiftgerät sendet die HID-Informationen an das Android-Mobilgerät. So kann die Plattform HID-Daten mit Touch-Daten vom Touchscreen in Stiftereignisse umwandeln, die mit der Klasse MotionEvent
erstellt werden. Unter Android 14 und höher werden durch das Drücken der Tasten des Eingabestifts auch interne Ereignisse mit der Klasse KeyEvent
generiert.
Daten können über Bluetooth (BT), Bluetooth Low Energy (BTLE) oder USB gesendet werden.
Beispiel für einen HID-Deskriptor
Der folgende Beispiel-HID-Beschreibungsblock gibt Informationen zum Kontakt der Spitze, zum Druck, zu den primären und sekundären Tasten, zum Radiergummi und zur Seriennummer an. Der von Ihnen angegebene HID-Beschreibungsblock sollte genau das widerspiegeln, was vom Eingabestift über Bluetooth gemeldet wird. Dies kann ein beliebiger Teil der verfügbaren Funktionen sein.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 }
Richtlinien für Entwickler von Eingabestift-Apps
Die Android-Plattform übernimmt automatisch die Kopplung und Ereigniskorrelation, sodass sowohl bestehende als auch neue Apps standardmäßig Bluetooth-Stylus unterstützen. Weitere Informationen zur Unterstützung von Eingabestiften in Android-Apps finden Sie in der Android-Entwicklerdokumentation.