Samsung ha presentato Galaxy Watch4, un nuovo dispositivo indossabile che si integra con il sistema operativo Wear di Google, dando il via a una nuova era della tecnologia indossabile. La vasta gamma di sensori del dispositivo fornisce all’utente dati relativi alla salute quotidiana, con conseguente esperienza utente migliore e capacità migliorate.
I sensori sono una delle principali attrazioni per tutti gli sviluppatori di applicazioni indossabili.
Ci sono due casi speciali che possono verificarsi durante l’implementazione del sensore. In primo luogo, un dispositivo può supportare o meno un particolare sensore. In secondo luogo, alcuni sensori potrebbero non essere accessibili da applicazioni di terze parti su un particolare dispositivo.
Pertanto, è necessario verificare se un particolare sensore è accessibile o meno prima di avviare l’applicazione. Se l’applicazione non può ricevere dati da un particolare sensore, è necessario informare l’utente. Il layout dell’applicazione può anche essere modificato per una migliore esperienza utente.
I sensori corporei dei dispositivi indossabili forniscono dati altamente avanzati che aiutano a monitorare le condizioni del corpo umano. Le applicazioni sanitarie raccolgono dati sanitari da questi sensori. Il pacchetto BODY_SENSORS consente a un’applicazione di accedere ai sensori del corpo, come la frequenza cardiaca. Sebbene le API Android Wear OS siano disponibili per Galaxy Watch4, potresti non essere sicuro che i dati specifici del sensore corporeo siano accessibili per la tua applicazione su Galaxy Watch.
In questo articolo vi mostro come verificare se un particolare sensore corporeo è accessibile su Galaxy Watch4.
Iniziare
Nell’esempio seguente, sviluppo un’app indossabile per Galaxy Watch4 che mostra se un particolare sensore è accessibile o meno.
Ambiente
Le applicazioni Wear OS devono essere sviluppate utilizzando l’IDE di Android Studio. Qui, suppongo che tu abbia già installato con successo Android Studio sul tuo PC.
Per iniziare a sviluppare una nuova applicazione indossabile, apri Android Studio e seleziona Nuovo progetto > Wear OS > Attività vuota > Fine. Il nuovo progetto di applicazione è ora pronto per creare la tua applicazione.
Esempio dettagliato di verifica dell’accessibilità del sensore
Passo 1: Galaxy Watch4 supporta solo API di livello 28 e superiori. Pertanto, è necessario impostare il livello API di destinazione su 28 o superiore per sviluppare un’applicazione indossabile per esso. Per fare ciò, puoi impostare la versione minima dell’SDK durante la creazione del tuo progetto, oppure puoi modificare il valore in build.gradle > minSDK dopo che il progetto è stato creato.
Passo 2: La parte più importante dell’implementazione del sensore è impostare l’autorizzazione appropriata. Per fare ciò, devi aggiungere l’autorizzazione BODY_SENSORS nel manifest di Android.
<uses-permission android:name="android.permission.BODY_SENSORS" />
Passaggio 3: A partire dalla versione Android 6 (livello API 23), un’applicazione deve richiedere all’utente l’autorizzazione di runtime per accedere a qualsiasi dato del sensore. Se l’utente concede l’autorizzazione, l’applicazione è quindi in grado di accedere ai dati.
Aggiungi il seguente codice a onCreate()
metodo per richiedere il permesso dell’utente:
if (checkSelfPermission(Manifest.permission.BODY_SENSORS) != PackageManager.PERMISSION_GRANTED) {
requestPermissions( new String[]{Manifest.permission.BODY_SENSORS}, 1);
} else {
Log.d(TAG, "ALREADY GRANTED");
}
Nell’output viene visualizzato un popup durante la prima installazione dell’applicazione. Se l’utente seleziona “Consenti”, l’applicazione ottiene l’autorizzazione per accedere alle informazioni della libreria BODY_SENSORS e il popup non riappare quando l’applicazione viene avviata di nuovo.
Se l’utente seleziona “Nega”, l’applicazione non è in grado di ottenere i dati del sensore.

Figura 1: Permesso di accesso ai dati del sensore richiesto all’utente durante l’installazione
Per maggiori dettagli sulle autorizzazioni di runtime, controlla qui.
Per utilizzare il sensore contapassi o rilevatore di passi, è necessaria anche l’autorizzazione di runtime ACTIVITY_RECOGNITION. Per ulteriori informazioni, è possibile controllare i seguenti collegamenti:
Passaggio 4: importa le seguenti librerie per accedere ai dati del sensore nella classe Java:
import android.hardware.Sensor;
import android.hardware.SensorManager;
Puoi anche premere Alt + accedere quando si seleziona una particolare funzione per importare automaticamente i pacchetti richiesti.
Passaggio 5: Crea un oggetto della classe SensorManager e creane un’istanza:
SensorManager mSensorManager = ((SensorManager)getSystemService(SENSOR_SERVICE));
Passaggio 6: Per controllare l’elenco dei sensori integrati con Galaxy Watch4, aggiungi il seguente codice:
List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
ArrayList<String> arrayList = new ArrayList<String>();
for (Sensor sensor : sensors) {
arrayList.add(sensor.getName());
}
arrayList.forEach((n) -> System.out.println(n));
Output del frammento di codice sopra:

Figura 2: Elenco dei sensori disponibili in logcat (vista parziale)
Nell’output puoi vedere tutti i sensori disponibili in Galaxy Watch4 (ma ricorda che i sensori che appaiono nell’output logcat potrebbero non essere accessibili per sviluppatori di terze parti) e puoi anche vedere i nomi dei sensori privati integrati nell’orologio. Alcuni sensori particolari sono accessibili solo da applicazioni di terze parti.
Nota che gli unici veri sensori hardware in Galaxy Watch4 sono l’accelerometro, il giroscopio, la pressione, la luce, il sensore magnetico e il sensore di frequenza cardiaca (PPG). Tutti gli altri sensori sono composti da sensori hardware reali. Ad esempio, il sensore del pedometro combina i dati dei sensori dell’accelerometro e del giroscopio. Le API SensorManager legacy funzionano solo per sensori fisici reali; i sensori compositi non funzioneranno.
Passaggio 7: Verificare l’accessibilità di un particolare sensore utilizzando il seguente codice:
if ((mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE)) != null) {
// if the sensor is accessible, then do something
} else {
// if the sensor is inaccessible, then do something
}
Se il sensore non è accessibile su Galaxy Watch4 da un’applicazione di terze parti, il metodo restituisce un valore nullo. In questo esempio, abbiamo verificato il sensore di frequenza cardiaca utilizzando il Sensor.TYPE_HEART_RATE
API. È possibile controllare qualsiasi altro sensore inserendo il tipo di sensore in questa funzione.
Si noti che il processo di cui sopra è un modo per ottenere i dati grezzi del sensore direttamente dall’orologio. Se desideri ottenere i dati dei sensori elaborati utilizzando un’API, puoi invece utilizzare l’SDK Samsung Privileged Health.
Inoltre, poiché tutti i sensori non sono aperti agli sviluppatori di terze parti e solo i sensori fisici effettivi sono accessibili tramite SensorManager, si consiglia di utilizzare l’SDK Samsung Privileged Health. Attraverso questo SDK, puoi anche ottenere alcuni dati dei sensori rari (elaborati) come SpO2, composizione corporea, ECG, PPG e così via, che non sono accessibili tramite SensorManager.
Test
Puoi controllare l’app di esempio (scaricarla utilizzando il link sottostante) e provarla sul tuo Galaxy Watch4.
Per importare l’applicazione di esempio, apri Android Studio e vai a File > Apri > CheckSensorAvailability > build.gradle.
Per eseguire l’applicazione di esempio, collega il tuo Galaxy Watch4 al PC ed esegui l’applicazione. Assicurati che il debug USB sia impostato su SU nel tuo orologio.
In questa applicazione di esempio, abbiamo verificato quattro sensori. Qui, i sensori di frequenza cardiaca e pressione (contrassegnati in verde) sono accessibili da un’applicazione di terze parti su Galaxy Watch4. Gli altri due sensori, prossimità e battito cardiaco (contrassegnati in rosso), non sono accessibili.

Figura 3: output dell’applicazione di esempio su Galaxy Watch4
Conclusione
Abbiamo dimostrato un modo per controllare l’accessibilità dei sensori su Galaxy Watch4. Se desideri sviluppare un’app indossabile per dispositivi Wear OS utilizzando i dati del sensore corporeo, ti consigliamo di verificare prima se i dati sono accessibili alle applicazioni di terze parti sul dispositivo.