Stilo

Android 6.0 e versioni successive supportano un formato di dati standard per le connessioni dello stilo Bluetooth tramite Bluetooth (BT), Bluetooth Low Energy (BTLE) o USB. La piattaforma correla la temporizzazione tra l'input tocco 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 creator di accessori per stilo e gli sviluppatori di app per stilo.

Linee guida per gli implementatori di dispositivi OEM

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

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

Linee guida per i creator di accessori per stilo

Per implementare il supporto su un dispositivo con stilo, gli implementatori del dispositivo devono utilizzare il descrittore HID (Human Interface Device) dello stilo mostrato di seguito per descrivere la modalità di rappresentazione dei dati dello stilo (sensibilità alla pressione, gomma, pulsanti, ID dispositivo, livello batteria, stato di ricarica e così via). Il dispositivo con il pennino invia le informazioni HID al dispositivo mobile Android, consentendo alla piattaforma di correlare i dati HID con i dati tocco del touchscreen per produrre eventi del pennino 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.

Descrittore HID di esempio

Il seguente descrittore HID di esempio segnala il contatto della punta, la pressione, i pulsanti principali e secondari, la gomma e il numero di serie. Il descrittore HID incluso deve riflettere con precisione ciò che viene riportato dal pennino tramite Bluetooth, che può 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, pertanto sia le app esistenti sia quelle nuove supportano lo stilo Bluetooth per impostazione predefinita. Per scoprire di più sul supporto degli stili nelle app per Android, consulta la documentazione per gli sviluppatori Android.