Eingabestift

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 der Touch-Eingabe und den Stiftdaten und stellt dann Stiftdaten zum Rendern von MotionEvents für die aktive App bereit. In den folgenden Abschnitten finden Sie Richtlinien für OEM-Geräteimplementierer, Hersteller von Stiftzubehör und Entwickler von Stift-Apps.

Richtlinien für OEM-Geräteimplementierer

Damit Bluetooth-Stifte unterstützt werden, müssen OEM-Geräteimplementierer Bluetooth unterstützen (und sollten BTLE für eine breitere Kompatibilität unterstützen). Die Plattform übernimmt die Datenerhebung, die Zeitkorrelation und das Rendern in der App für unterstützte Stylus-Ereignisse.

Unter Android 14 und höher emuliert StylusButtonInputEventTest das Verhalten eines verbundenen Stylus und testet, ob Schaltflächenereignisse korrekt gemeldet werden. Als Workaround für niedrigere Versionen empfehlen wir, ein Stiftzubehör oder einen Emulator zu erstellen, der Stiftereignisse simulieren kann.

Richtlinien für Hersteller von Stylus-Zubehör

Um die Unterstützung auf einem Stiftgerät zu implementieren, müssen Gerätehersteller den unten gezeigten Stylus-HID-Deskriptor (Human Interface Device) verwenden, um zu beschreiben, wie Stiftdaten (Druckempfindlichkeit, Radiergummi, Tasten, Geräte-ID, Akkustand, Ladestatus usw.) dargestellt werden. Das Stiftgerät sendet die HID-Informationen an das Android-Mobilgerät. So kann die Plattform HID-Daten mit Touch-Daten vom Touchscreen korrelieren, um Stift-Ereignisse mit der Klasse MotionEvent zu erzeugen. In Android 14 und höher werden durch Tastendrücke auf dem Stylus auch interne Ereignisse über die 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-Deskriptor meldet den Kontakt der Stiftspitze, den Druck, die primären und sekundären Tasten, den Radierer und die Seriennummer. Der von Ihnen angegebene HID-Deskriptor sollte genau widerspiegeln, was vom Stylus über Bluetooth gemeldet wird. Das kann eine beliebige Teilmenge 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 Stylus-Apps

Die Android-Plattform übernimmt automatisch das Pairing und die Ereigniskorrelation. Daher unterstützen sowohl vorhandene als auch neue Apps standardmäßig Bluetooth-Stifte. Weitere Informationen zur Unterstützung von Stylus in Android-Apps finden Sie in der Android-Entwicklerdokumentation.