Google Fit pour Android API d'enregistrement

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 explique comment utiliser Google Fit pour créer des abonnements d'arrière-plan à faible consommation d'énergie pour les données de capteur. Nous explorons comment exploiter les services Google Play pour stocker des données de condition physique afin de pouvoir y accéder ultérieurement..

L’API d’enregistrement diffère de l’API de capteurs en ce que les données du capteur actif ne sont pas transmises à l’API d’enregistrement, mais les données sont enregistrées en ligne afin de sauvegarder un enregistrement de l’activité de l’utilisateur. Ce tutoriel comprend un exemple de projet que vous pouvez télécharger à partir de GitHub..

1. Configuration du projet

Étape 1: Configuration de la console du développeur

Pour utiliser Google Fit, vous devez créer un ID client OAuth 2.0 et enregistrer votre application via la console Google Developer. Vous trouverez une explication détaillée sur la configuration de la console pour développeurs Google dans mon tutoriel sur l'API Google Fit Sensors..

Étape 2: Créer le projet Android

Une fois que votre application est configurée pour l'authentification dans la console pour les développeurs Google, utilisez le nom du package que vous avez enregistré pour créer une nouvelle application Android avec un SDK minimum de 14 et un espace vide. Activité.

Avec l’application Android de base créée, ouvrez le build.gradle déposer et inclure les services Google Play sous le nœud des dépendances et synchroniser votre application.

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

Vous devriez maintenant pouvoir inclure les classes de services Google Play nécessaires dans votre application. Avant de plonger dans le code Java de ce tutoriel, ouvrez activity_main.xml et modifiez-le pour qu'il comprenne deux Bouton éléments qui seront utilisés pour illustrer certaines des fonctionnalités de l'API d'enregistrement.

  

Lorsque votre application est exécutée, l'interface utilisateur ressemblera à l'image ci-dessous..

Pour terminer la configuration de votre projet, ouvrez MainActivity.java et implémenter les rappels suivants et leurs méthodes requises:

  • GoogleApiClient.ConnectionCallbacks
  • GoogleAPiClient.OnConnectionFailedListener
  • View.OnClickListener

Vous devez également ajouter les variables de membre pour votre classe, comme indiqué ci-dessous..

Classe publique MainActivity caps AppCompatActivity implémente GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, View.OnClickListener private Button mCancelSubscriptionsBtn; Bouton privé mShowSubscriptionsBtn; ResultCallback privé mSubscribeResultCallback; ResultCallback privé mCancelSubscriptionResultCallback; ResultCallback privé mListSubscriptionsResultCallback; private GoogleApiClient mGoogleApiClient; @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main);  @Override public void onConnected (ensemble @Nullable Bundle) Log.e ("RecordingAPI", "onConnected");  @Override public void onConnectionSuspended (int i) Log.e ("RecordingAPI", "onConnectionSuspended");  @Override public void onConnectionFailed (@NonNull ConnectionResult connectionResult) Log.e ("RecordingAPI", "onConnectionFailed");  @Override public void onClick (Afficher v) 

2. Initialisation

Avant de pouvoir utiliser les rappels et les vues que vous avez définis ci-dessus, vous devez les initialiser. Nous faisons cela en créant deux méthodes d’aide, une pour initialiser les vues et une pour initialiser les callbacks appelés dans onCreate ().

le initViews () méthode pointe le Bouton objets aux éléments définis dans activité.xml et met un OnClickListener pour chaque bouton.

@Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); initViews (); initCallbacks ();  private void initViews () mCancelSubscriptionsBtn = (Bouton) findViewById (R.id.btn_cancel_subscriptions); mShowSubscriptionsBtn = (Bouton) findViewById (R.id.btn_show_subscriptions); mCancelSubscriptionsBtn.setOnClickListener (this); mShowSubscriptionsBtn.setOnClickListener (this); 

Dans initCallbacks (), les choses deviennent un peu plus intéressantes. Chaque rappel est utilisé pour une opération asynchrone spécifique de l’API d’enregistrement. Comme leur nom l'indique, mSubscribeResultCallback est appelé lorsque vous ajoutez un abonnement pour un capteur, mCancelSubscriptionResultCallback est appelé lorsque vous annulez cet abonnement, et mListSubscriptionResultCallback est utilisé lorsque vous demandez une liste de tous les abonnements.

Dans l'extrait de code suivant, les deux callbacks liés au démarrage et à l'arrêt d'un abonnement enregistrent uniquement un succès ou un échec.. mListSubscriptionResultCallback reçoit une liste d’abonnements et déconnecte les informations sur chacun d’entre eux en obtenant le Type de données et puis chacun Champ associé à l'abonnement.

private void initCallbacks () mSubscribeResultCallback = new ResultCallback() @Override public void onResult (@NonNull Status status) if (status.isSuccess ()) if (status.getStatusCode () == FitnessStatusCodes.SUCCESS_ALREADY_SUBSCRIBED) Log.e ("RecordingAPI", "déjà inscrit l'API d'enregistrement ");  else Log.e ("RecordingAPI", "Abonné à l'API d'enregistrement"); ; mCancelSubscriptionResultCallback = new ResultCallback() @Override public void onResult (@NonNull Status status) if (status.isSuccess ()) Log.e ("RecordingAPI", "Abonnements annulés!");  else // Abonnement non supprimé Log.e ("RecordingAPI", "Échec de l'annulation des abonnements"); ; mListSubscriptionsResultCallback = new ResultCallback() @Override public void onResult (@NonNull ListSubscriptionsResult listSubscriptionsResult) pour (abonnement d'abonnement: listSubscriptionsResult.getSubscriptions ()) DataType dataType = subscription.getDataType (); Log.e ("RecordingAPI", dataType.getName ()); for (champ: dataType.getFields ()) Log.e ("RecordingAPI", field.toString ()); ; 

3. Connexion et contrôle des abonnements

Maintenant que vous avez mis en place le cadre général de votre exemple d'application, il est temps de tout terminer en vous connectant aux services Google Play et en demandant des abonnements..

Dans onCreate (), vous pouvez initialiser et vous connecter aux services Google Play en déclarant que vous utilisez Fitness.RECORDING_API, ajout d'une portée pour la lecture des données d'activité physique, et configuration de la connexion / déconnexion automatique tout au long du cycle de vie de l'application.

mGoogleApiClient = new GoogleApiClient.Builder (this) .addApi (Fitness.RECORDING_API) .addScope (new Scope (Scopes.FITNESS_ACTIVITY_READ)) .addConnectionCallbacks (this). EnableAutoManage (this, 0, this);

A tout moment après le GoogleApiClient connecté, vous pouvez demander un abonnement. Pour ce tutoriel, nous nous abonnons à onConnected (). L'extrait de code suivant montre comment démarrer un abonnement pour les modifications du nombre de pas de l'utilisateur, bien que vous puissiez accéder à tout capteur pris en charge par Google Fit..

Si un abonnement est déjà en cours d'exécution en raison d'une action antérieure, le rappel reçoit un code d'état de FitnessStatusCodes.SUCCESS_ALREADY_SUBSCRIBED.

@Override public void onConnected (ensemble @Nullable Bundle) Fitness.RecordingApi.subscribe (mGoogleApiClient, DataType.TYPE_TYP_COUNT_DELTA) .setResultCallback (mSubscribeResultCallback); 

Il peut parfois être utile de demander une liste d’abonnements. Auparavant, vous avez créé deux boutons pour ces opérations. dans le sur clic() méthode, vous vérifiez quel bouton a été tapé et effectuez l'action correspondante.

@Override public void onClick (Affichage v) switch (v.getId ()) case R.id.btn_cancel_subscriptions: cancelSubscriptions (); Pause;  case R.id.btn_show_subscriptions: showSubscriptions (); Pause; 

Si showSubscriptions () est appelée, l'application demande alors une liste des abonnements associés à l'API d'enregistrement.

showSubscriptions () Fitness.RecordingApi.listSubscriptions (mGoogleApiClient) .setResultCallback (mListSubscriptionsResultCallback); 

Ce qui provoque mListSubscriptionsResultCallback pour déconnecter tous les abonnements connectés. Le résultat ressemble à ceci:

… /Com.tutsplus.googlefitrecordingapi E / RecordingAPI: com.google.step_count.delta… /com.tutsplus.googlefitrecordingapi E / RecordingAPI: étapes (i)

L'annulation d'un abonnement est simple, comme vous pouvez le voir ci-dessous.

private void cancelSubscriptions () Fitness.RecordingApi.unsubscribe (mGoogleApiClient, DataType.TYPE_STEP_COUNT_DELTA) .setResultCallback (mCancelSubscriptionResultCallback); 

Conclusion

Vous devez maintenant avoir une compréhension de base de la connexion à Google Fit à partir d’une application Android et de l’utilisation de l’API d’enregistrement. Bien que cela ne semble pas beaucoup pour le moment, cela vous ouvre la voie pour stocker des informations sur les activités physiques de l'utilisateur afin que d'autres API Google Fit de votre application puissent y accéder..