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 Berührungseingabe und Stiftdaten und stellt dann Stiftdaten bereit, um MotionEvents für die aktive App darzustellen. Die folgenden Abschnitte enthalten Richtlinien für OEM-Geräteimplementierer, Hersteller von Stiftzubehör und Stift-App-Entwickler.

Richtlinien für OEM-Geräteimplementierer

Um die Bluetooth-Stiftunterstützung zu aktivieren, müssen OEM-Geräteimplementierer Bluetooth unterstützen (und sollten BTLE für eine breitere Kompatibilität unterstützen). Die Plattform übernimmt die Datenerfassung, Zeitkorrelation und das Rendern an die App für unterstützte Stiftereignisse.

In 14 und höher emuliert StylusButtonInputEventTest das Verhalten eines angeschlossenen Stifts und testet, ob Tastenereignisse korrekt gemeldet werden. Als Workaround für niedrigere Versionen empfehlen wir die Erstellung eines Stiftzubehörs oder Emulators, 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äteimplementierer den unten gezeigten Stylus Human Interface Device (HID)-Deskriptor verwenden, um zu beschreiben, wie Stiftdaten (Druckempfindlichkeit, Radierer, Tasten, Geräte-ID, Akkustand, Ladestatus usw.) dargestellt werden . Das Stiftgerät sendet die HID-Informationen an das Android-Mobilgerät und ermöglicht es der Plattform, HID-Daten mit Berührungsdaten vom Touchscreen zu korrelieren, um mithilfe der MotionEvent Klasse Stiftereignisse zu erzeugen. In Android 14 und höher generieren Tastendrücke auf dem Stift mithilfe der KeyEvent Klasse auch interne Ereignisse. 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 Spitzenkontakt, Druck, primäre und sekundäre Tasten, Radierer und Seriennummer. Der von Ihnen angegebene HID-Deskriptor sollte genau widerspiegeln, was der Stift über Bluetooth meldet, wobei es sich um eine beliebige Teilmenge der verfügbaren Funktionen handeln kann.
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 die Kopplung und Ereigniskorrelation automatisch, sodass sowohl bestehende als auch neue Apps standardmäßig Bluetooth-Stifte unterstützen. Weitere Informationen zur Unterstützung von Stiften in Android-Apps finden Sie in der Dokumentation für Android-Entwickler .