Google Fit pour Android Lecture des données du capteur

introduction

Google Fit est une plateforme qui permet aux développeurs de créer des applications axées sur les données de condition physique des utilisateurs. L'un des outils fournis par Google est Google Fit pour Android, disponible sous forme de package dans les services Google Play..

Bien que de nombreuses API soient disponibles pour Google Fit, comme indiqué dans cet article de présentation d'Envato Tuts +, ce didacticiel vise à vous aider à configurer et à utiliser Google Fit pour lire les données de capteurs sur un appareil Android. Un exemple de projet pour ce tutoriel est disponible sur GitHub..

1. Configuration de la console du développeur

Pour utiliser Google Fit pour Android, vous devez:

  • activer le API de fitness dans le Console des développeurs Google
  • créé un ID client OAuth 2.0
  • connectez-vous à l'API Fitness dans votre application Android

Cette section vous explique comment configurer votre application Android et l'API Fitness. Vous pouvez commencer par visiter le Console des développeurs Google. Si vous avez déjà un projet avec lequel travailler, vous pouvez ignorer l'étape suivante. Sinon, suivez et créez un nouveau projet pour votre application Google Fit..

Étape 1: Créer un projet

Pour créer un nouveau projet, cliquez sur le bleu Créer un projet bouton dans le coin supérieur gauche de l'écran.

Cela vous présente une boîte de dialogue qui demande un nom de projet. Pour ce tutoriel, j'ai créé un projet et l'ai nommé TutsPlusGoogleFit. Il existe certaines restrictions sur ce que vous pouvez nommer votre projet. Seuls les lettres, chiffres, guillemets, traits d'union, espaces et points d'exclamation sont autorisés.

Une fois que vous frappez Créer, une boîte de dialogue apparaît dans le coin inférieur droit de la page, indiquant que le projet est en cours de création.

Étape 2: Activer l'API Google Fit

Avec le projet mis en place, vous êtes pris pour le projet Vue d'ensemble page. Le moyen le plus simple de rechercher l'API Google Fit consiste à rechercher le mot clé. "en forme". Sélectionner API de fitness à partir des résultats qui apparaissent.

Cliquez sur Activer l'API pour permettre de API de fitness.

Après avoir activé l'API Fitness, vous recevez un avertissement vous informant que vous devez également créer des informations d'identification pour utiliser l'API Fitness. Heureusement, l’avertissement comprend un bouton qui nous amène au Lettres de créance page.

Étape 3: Créer des informations d'identification

Sur le Lettres de créance page, vous devez fournir des informations générales sur votre application dans le répertoire Assistant d'identification. Spécifiez que vous utilisez le API de fitness, que l'API est appelée à partir d'un Android application, et que l'application doit avoir accès à Données d'utilisateur.

Ensuite, cliquez sur De quelles qualifications ai-je besoin?? en bas pour continuer et créer un ID client OAuth 2.0 pour votre application Android. Vous avez besoin de deux informations importantes pour cette étape:

  • empreinte digitale du certificat de signature
  • nom du paquet pour l'application

Vous pouvez obtenir l'empreinte du certificat de signature en ouvrant un terminal ou une invite de commande, puis en naviguant jusqu'à l'emplacement du certificat de signature de votre application. Ceci est soit votre clé de version ou la valeur par défaut debug.keystore certificat utilisé par Android Studio. Une fois que vous avez accédé à votre magasin de clés, vous pouvez générer le SHA1 nécessaire à l’aide de la commande suivante: debug.keystore est le nom du certificat de signature.

keytool -list -v -keystore debug.keystore

Collez la clé SHA1 dans le champ SHA1 et entrez com.tutsplus.googlefit dans le champ du nom du paquet.

Enfin, vous devez configurer l'écran de consentement de OAuth 2.0. Il s’agit de l’écran qui est affiché à l’utilisateur afin qu’il puisse accorder à votre application la permission d’utiliser ses données de condition physique. Cette étape nécessite que votre email et un nom de produit soit montré aux utilisateurs. Pour ce tutoriel, je suis entré Tuts + Google Fit.

Cliquez sur Continuer et, sur la page suivante, cliquez sur Terminé pour terminer le processus d'installation.

Étape 4: Configuration du projet Android

Une fois votre projet configuré et configuré sur la console développeur Google, vous pouvez commencer à créer un nouveau projet Android. Assurez-vous que le nom du paquet correspond à celui que vous avez entré dans la liste. Console de développeur Google et configurez l'application pour qu'elle utilise le Téléphone et tablette versions minimales du SDK de 14. Le niveau minimum de l’API pour Google Fit est de 9. Créer une  Activité vide conserver le projet de base propre afin que vous puissiez vous concentrer sur l'API Google Fit dans ce didacticiel.

Après avoir configuré le projet, ouvrez le dossier du projet. build.gradle fichier et importer le package de mise en forme à partir des services Google Play en ajoutant la ligne suivante au les dépendances nœud.

compilez 'com.google.android.gms: play-services-fitness: 8.4.0'

Ensuite, ouvrez MainActivity.java et ajoutez les interfaces suivantes:

  • OnDataPointListener
  • GoogleApiClient.ConnectionCallback
  • GoogleApiClient.OnConnectionFailedListener

Une fois que vous avez ajouté les méthodes requises pour ces interfaces, votre classe devrait ressembler à ceci:

Classe publique MainActivity étend AppCompatActivity implémente OnDataPointListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main);  @Override public void onConnected (ensemble)  @Override public void onConnectionSuspended (int i)  @Override public void onConnectionFailed (ConnectionResult connectionResult)  @Override public void surDataPoint (DataPoint dataPoint) 

Enfin et surtout, créez les variables de membre que vous utiliserez pour ce tutoriel. Vous pouvez copier les lignes suivantes en haut de la classe:

int finale statique privée REQUEST_OAUTH = 1; private static final String AUTH_PENDING = "auth_state_pending"; private boolean authInProgress = false; private GoogleApiClient mApiClient;

Dans l'étape suivante, vous allez vous connecter aux services Google Play et apprendre à accéder aux données de condition physique de l'utilisateur dans votre application..

2. Utilisation de l'API Fitness

Étape 1: connexion aux services Google Play

Avec le projet configuré dans Android Studio et la console pour développeurs Google, il est temps de plonger dans l'API Fitness. dans le onCreate (), méthode, vous vérifiez si votre application tente déjà d’autoriser l’API de Fitness. Vous initialisez ensuite le GoogleApiClient exemple en ajoutant l’API Fitness Sensors, en définissant une étendue et en enregistrant les rappels d’application. Si vous ne demandez pas d'étendue, votre application ne sera pas autorisée par rapport à l'API Fitness Sensors..

@Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); if (savedInstanceState! = null) authInProgress = savedInstanceState.getBoolean (AUTH_PENDING);  mApiClient = new GoogleApiClient.Builder (this) .addApi (Fitness.SENSORS_API) .addScope (new Scope (Scopes.FITNESS_ACTIVITY_READ_WRITE)) .addConnectionCallbacks (this) .addOnConnectionFailedListener (this); 

Après avoir initialisé le GoogleApiClient Par exemple, vous devez le connecter au backend de Google. Vous pouvez le faire dans onStart ().

@Override protected void onStart () super.onStart (); mApiClient.connect (); 

Lors de la première exécution de l'application par l'utilisateur, la connexion à l'API Fitness échouera car l'utilisateur doit autoriser votre application à accéder à ses données de condition physique. Vous pouvez écouter cet événement en onConnectionFailed () et réagir en conséquence en vérifiant si une autorisation est en cours. Si c'est le cas, appelez startResolutionForResult () afin que les services Google Play puissent gérer correctement l'utilisateur qui accorde l'autorisation d'utiliser ses informations.

@Override public void onConnectionFailed (ConnectionResult connectionResult) if (! AuthInProgress) try authInProgress = true; connectionResult.startResolutionForResult (MainActivity.this, REQUEST_OAUTH);  catch (IntentSender.SendIntentException e)  else Log.e ("GoogleFit", "authInProgress"); 

Si vous exécutez votre application maintenant, une boîte de dialogue vous invitant à sélectionner un compte Google à utiliser si vous avez utilisé plusieurs comptes sur votre appareil peut s'afficher..

Lorsque le système d'exploitation sait quel compte utiliser, votre application présente une nouvelle boîte de dialogue demandant à l'utilisateur d'accorder à l'application la permission de lire les données de condition physique..

À ce stade, l'utilisateur accorde à votre application l'autorisation d'utiliser ses données ou ferme la boîte de dialogue, annulant le processus. Vous pouvez écouter les deux événements en onActivityResult () et gérer le résultat. Si l'utilisateur accorde l'autorisation à votre application, celle-ci reçoit un message. RESULT_OK réponse et il peut ensuite essayer de se connecter au client Google API.

@Override protected void onActivityResult (int requestCode, int resultCode, données d'intention) if (requestCode == REQUEST_OAUTH) authInProgress = false; if (resultCode == RESULT_OK) if (! mApiClient.isConnecting () &&! mApiClient.isConnected ()) mApiClient.connect ();  else if (resultCode == RESULT_CANCELED) Log.e ("GoogleFit", "RESULT_CANCELED");  else Log.e ("GoogleFit", "requestCode NOT request_oauth"); 

Votre application doit maintenant pouvoir se connecter avec succès aux services Google Play. Cela étant fait, vous pouvez commencer à vous concentrer sur l'API Fitness..

Étape 2: Accéder aux données de l'étape avec l'API Fitness

Quand ton GoogleApiClient instance s'est connectée à Google, le onConnected () le rappel est déclenché. Dans ce rappel, vous devez créer un nouveau DataSourcesRequest objet qui définit le type de données qui intéresse votre application. Vous devez également créer un ResultCallback cela gère ce que l'application doit faire si des étapes peuvent être récupérées à partir de l'appareil. Avec les objets créés, appelez Fitness.SensorsApi.findDataSources () commencer à rechercher une source de données d'étape valide.

@Override public void onConnected (ensemble) DataSourcesRequest dataSourceRequest = new DataSourcesRequest.Builder () .setDataTypes (DataType.TYPE_STEP_COUNT_CUMULATIVE) .setDataSourceTypes (DataSource.TYPE_RAW).) ResultCallback dataSourcesResultCallback = new ResultCallback() @Override public void onRes (DataSourcesResult dataSourcesResult) pour (DataSource dataSource: dataSourcesResources.getDataSources ()) if ; Fitness.SensorsApi.findDataSources (mApiClient, dataSourceRequest) .setResultCallback (dataSourcesResultCallback); 

Vous remarquerez peut-être que le registerFitnessDataListener () la méthode n'existe pas réellement. Il s'agit d'une méthode d'assistance appelée lorsque la source de données du compteur d'étapes est trouvée, ce qui crée ensuite une SensorRequest objet permettant de demander des données au capteur de nombre de pas.

Dans l'extrait de code suivant, le SensorRequest objet tente de trouver le nombre de pas toutes les trois secondes. le Fitness.SensorApi ajoute ensuite la demande avec un nouveau OnDataPointListener de sorte que, lorsque de nouvelles données sont disponibles, le programme d’écoute est déclenché. Si aucune nouvelle donnée n'est trouvée, le OnDataPointListener n'est pas déclenché et l'API Fitness attend encore trois secondes avant de vérifier à nouveau.

private void registerFitnessDataListener (DataSource dataSource, DataType dataType) demande SensorRequest = new SensorRequest.Builder () .setDataSource (dataSource) .setDataType (dataType) .setSamplingRate (3, TimeUnit.SECONDS) .build (); Fitness.SensorsApi.add (mApiClient, requête, this) .setResultCallback (nouveau ResultCallback() @Override public void onResult (Status status) if (status.isSuccess ()) Log.e ("GoogleFit", "SensorApi ajouté avec succès"); ); 

Lorsqu'un changement dans le nombre de pas est détecté, onDataPoint () est invoqué. Dans cette méthode, vous parcourez les champs de la Point de données paramètre et afficher un Pain grillé message avec le nom du champ et la valeur. Dans cet exemple, ce sera le compteur de pas. Dans vos propres applications, vous utiliseriez une logique plus appropriée pour effectuer votre tâche. Vous remarquerez que le Pain grillé la commande est enveloppée dans un Runnable qui est passé à runOnUiThread. En effet, le rappel n'est pas déclenché sur le thread d'interface utilisateur principal..

@Override public void onDataPoint (DataPoint dataPoint) pour (champ Champ final: dataPoint.getDataType (). GetFields ()) valeur finale valeur = dataPoint.getValue (champ); runOnUiThread (new Runnable () @Override public void run () Toast.makeText (getApplicationContext (), "Champ:" + champ.getName () + "Valeur:" + valeur, Toast.LENGTH_SHORT) .show (); ); 

Vous devez faire deux autres choses pour cet exemple. Le premier est la déconnexion de la SensorApi et les services Google Play lorsque vous avez fini de les utiliser. Dans cet exemple, vous le faites quand onStop () est appelé. La seconde stocke le authInProgress valeur qui est vérifiée par onCreate () dans onSavedInstanceState ().

@Override protected void onStop () super.onStop (); Fitness.SensorsApi.remove (mApiClient, this) .setResultCallback (nouveau ResultCallback() @Override public void onResult (Status status) if (status.isSuccess ()) mApiClient.disconnect (); );  @Override protected void onSaveInstanceState (Bundle outState) super.onSaveInstanceState (outState); outState.putBoolean (AUTH_PENDING, authInProgress); 

Conclusion

Dans ce didacticiel, vous avez appris à vous connecter à l'API de mise en forme des services Google Play et à lire les données du capteur de mise en forme à partir du périphérique de l'utilisateur. Même quelque chose d'aussi simple que des données de pas pour votre utilisateur peut s'avérer extrêmement précieux pour des applications telles que les visages de montres Android Wear ou les suivis d'objectifs. Il existe des dizaines d'autres types de sources de données que vous pouvez utiliser et de nombreuses autres API dans Google Fit pour améliorer vos applications..