Stilo

Android 6.0 e versioni successive supportano un formato dati standard per le connessioni Bluetooth con stilo tramite Bluetooth (BT), Bluetooth Low Energy (BTLE) o USB. La piattaforma mette in correlazione i tempi tra l'input touch e i dati dello stilo, quindi fornisce i dati dello stilo per eseguire il rendering di MotionEvents nell'app attiva. Le sezioni seguenti forniscono linee guida per gli implementatori di dispositivi OEM, i creatori di accessori per stilo e gli sviluppatori di app per stilo.

Linee guida per gli implementatori di dispositivi OEM

Per abilitare il supporto dello stilo Bluetooth, gli implementatori dei dispositivi OEM devono supportare Bluetooth (e dovrebbero supportare BTLE per una compatibilità più ampia). La piattaforma gestisce la raccolta dei dati, la correlazione temporale e il rendering nell'app per gli eventi dello stilo supportati.

Nella versione 14 e successive, StylusButtonInputEventTest emula il comportamento di uno stilo connesso e verifica che gli eventi dei pulsanti vengano segnalati correttamente. Come soluzione alternativa per le versioni precedenti, consigliamo di creare un accessorio o un emulatore dello stilo in grado di simulare gli eventi dello stilo.

Linee guida per i creatori di accessori per stilo

Per implementare il supporto su un dispositivo stilo, gli implementatori del dispositivo devono utilizzare il descrittore Stylus Human Interface Device (HID) mostrato di seguito per descrivere come vengono rappresentati i dati dello stilo (sensibilità alla pressione, gomma, pulsanti, ID dispositivo, livello della batteria, stato di carica, ecc.). . Il dispositivo stilo invia le informazioni HID al dispositivo mobile Android, consentendo alla piattaforma di correlare i dati HID con i dati tattili dal touchscreen per produrre eventi stilo utilizzando la classe MotionEvent . In Android 14 e versioni successive, la pressione dei pulsanti sullo stilo genera anche eventi interni utilizzando la classe KeyEvent . I dati possono essere inviati tramite Bluetooth (BT), Bluetooth Low Energy (BTLE) o USB.

Esempio di descrittore HID

Il seguente descrittore HID di esempio riporta il contatto della punta, la pressione, i pulsanti primari e secondari, la gomma e il numero di serie. Il descrittore HID incluso dovrebbe riflettere accuratamente ciò che viene segnalato dallo stilo tramite Bluetooth, che potrebbe essere qualsiasi sottoinsieme delle funzionalità disponibili.
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
}

Linee guida per gli sviluppatori di app per stilo

La piattaforma Android gestisce automaticamente l'accoppiamento e la correlazione degli eventi, quindi sia le app esistenti che quelle nuove supportano lo stilo Bluetooth per impostazione predefinita. Per ulteriori informazioni sul supporto degli stili nelle app Android, consulta la documentazione per sviluppatori Android .