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äte-Implementierer
Um die Unterstützung von Bluetooth-Stylus zu aktivieren, 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 Schaltflächenereignisse korrekt gemeldet werden. Um das Problem bei niedrigeren Versionen zu umgehen, empfehlen wir, ein Eingabestiftzubehör oder einen Emulator zu erstellen, mit dem Eingabestift-Ereignisse simuliert werden können.
Richtlinien für Hersteller von Eingabestift-Zubehör
Um die Unterstützung eines Eingabestifts zu implementieren, müssen die Geräte-Implementierer den unten dargestellten HID-Deskriptor (Stylus Human Interface Device) verwenden, um zu beschreiben, wie Eingabestiftdaten (Druckempfindlichkeit, Radierer, Tasten, Geräte-ID, Akkustand, Ladestatus usw.) dargestellt werden. Der Eingabestift sendet die HID-Informationen an das Android-Mobilgerät. Dadurch kann die Plattform HID-Daten mit Touch-Daten auf dem Touchscreen korrelieren und Eingabestift-Ereignisse mithilfe der Klasse MotionEvent
erstellen. 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 enthält Informationen zu Spitze, Druck, primären und sekundären Tasten, Radiergummi und Seriennummer. Der von Ihnen angegebene HID-Deskriptor sollte genau wiedergeben, was der Eingabestift über Bluetooth meldet. Dabei kann es sich um eine beliebige Teilmenge der verfügbaren Funktionen handeln.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 das Pairing und die Ereigniskorrelation. So unterstützen sowohl bestehende als auch neue Apps standardmäßig Bluetooth-Stylus. Weitere Informationen zur Unterstützung von Eingabestiften in Android-Apps finden Sie in der Android-Entwicklerdokumentation.