Google Fit for Android API de înregistrare

Google Fit este o platformă care permite dezvoltatorilor să construiască aplicații care se concentrează asupra datelor de fitness ale utilizatorilor. Unul dintre instrumentele pe care le-a oferit Google este Google Fit for Android, care este disponibil ca pachet în serviciile Google Play.

Deși există mai multe API-uri disponibile pentru Google Fit, așa cum sa discutat în acest articol de prezentare Envato Tuts +, acest tutorial se concentrează pe utilizarea Google Fit pentru a crea abonamente de fundal cu consum redus de date pentru senzori. Explorăm modul în care puteți utiliza serviciile Google Play pentru a stoca datele de fitness, astfel încât să poată fi accesată ulterior.

API-ul de înregistrare diferă de API-ul senzorilor prin faptul că datele senzorilor vii nu sunt livrate în API-ul de înregistrare, ci mai degrabă datele sunt salvate online pentru a salva o înregistrare a activității utilizatorilor. Acest tutorial include un proiect de probă, pe care îl puteți descărca de la GitHub.

1. Configurarea proiectului

Pasul 1: Configurați Consola pentru dezvoltatori

Pentru a utiliza Google Fit, trebuie să creați un ID client OAuth 2.0 și să înregistrați aplicația dvs. prin intermediul Consolei pentru dezvoltatori Google. Puteți găsi o explicație detaliată a modului de configurare a Consolei Google pentru dezvoltatori în tutorialul meu despre API-ul Google Fit Sensors.

Pasul 2: Creați Proiectul Android

După ce aplicația dvs. este configurată pentru autentificare în Consola pentru dezvoltatori Google, utilizați numele pachetului pe care l-ați înregistrat pentru a crea o nouă aplicație Android cu un SDK minim de 14 și un pachet gol Activitate.

Cu aplicația de bază Android creată, deschideți build.gradle fișier și includeți Servicii Google Play sub nodul de dependență și sincronizați aplicația.

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

Acum ar trebui să puteți include în aplicația dvs. clasele serviciilor Google Play necesare. Înainte de a ne scufunda în codul Java pentru acest tutorial, deschideți-l activity_main.xml și modificați-o astfel încât să includă două Buton elemente care vor fi folosite pentru a demonstra unele dintre funcționalitățile API-ului de înregistrare.

  

Când se execută aplicația dvs., interfața de utilizator va arăta ca imaginea de mai jos.

Pentru a finaliza configurarea proiectului, deschideți-l MainActivity.java și implementați următoarele apeluri de apel și metodele necesare:

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

De asemenea, trebuie să adăugați variabilele membrilor pentru clasa dvs., după cum se arată mai jos.

public class MainActivity se extinde AppCompatActivity implementează GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, View.OnClickListener butonul privat mCancelSubscriptionsBtn; butonul privat mShowSubscriptionsBtn; private ResultCallback mSubscribeResultCallback; private ResultCallback mCancelSubscriptionResultCallback; private ResultCallback mListSubscriptionsResultCallback; GoogleApiClient privat mGoogleApiClient; @Override protejate void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main);  @Override public void onConnected (@ pachet Nullable Bundle) Log.e ("RecordingAPI", "onConnected");  @Override publice void onConnectionSuspended (int i) Log.e ("RecordingAPI", "onConnectionSuspended");  @Override publice void onConnectionFailed (@NonNull ConnectionResult connectionResult) Log.e ("RecordingAPI", "onConnectionFailed");  @Override public void onClick (Vizualizare v) 

2. Inițializare

Înainte de a putea începe să utilizați apelurile de apel și vederile definite mai sus, trebuie să le inițializați. Facem acest lucru prin crearea a două metode de ajutor, una pentru inițializarea vizualizărilor și una pentru inițializarea apelurilor de apel invocate onCreate ().

initViews () metoda indică Buton obiecte față de elementele definite în activity.xml și stabilește un OnClickListener pentru fiecare buton.

@Override protejate void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); initViews (); initCallbacks ();  privit void initViews () mCancelSubscriptionsBtn = (buton) findViewById (R.id.btn_cancel_subscriptions); mShowSubscriptionsBtn = (buton) findViewById (R.id.btn_show_subscriptions); mCancelSubscriptionsBtn.setOnClickListener (aceasta); mShowSubscriptionsBtn.setOnClickListener (aceasta); 

În initCallbacks (), lucrurile devin puțin mai interesante. Fiecare apel invers este utilizat pentru o operație asincronă specifică a API-ului de înregistrare. După cum sugerează numele lor, mSubscribeResultCallback este apelat când adăugați mai întâi un abonament pentru un senzor, mCancelSubscriptionResultCallback este apelat când anulați abonamentul și mListSubscriptionResultCallback se utilizează atunci când solicitați o listă a tuturor abonamentelor.

În următorul fragment de cod, cele două callback-uri legate de pornirea și oprirea unui abonament înregistrează doar un succes sau un eșec. mListSubscriptionResultCallback primește o listă de abonamente și deconectează informații despre fiecare dintre ele obținând DataType și apoi fiecare Camp asociat cu abonamentul.

private void initCallbacks () mSubscribeResultCallback = RezultateCallback noi() (Status.getStatusCode () == FitnessStatusCodes.SUCCESS_ALREADY_SUBSCRIBED) Log.e ("RecordingAPI", "deja abonat (ă) la API-ul de înregistrare ");  altceva Log.e ("RecordingAPI", "Subscribed to the API de înregistrare"); ; mCancelSubscriptionResultCallback = rezultatul nouCallback() @Override public void onResult (@NonNull Status status) if (status.isSuccess ()) Log.e ("RecordingAPI", "Abonamente anulate!");  altceva // Abonamentul nu a fost eliminat Log.e ("RecordingAPI", "Nu sa reușit anularea abonamentelor"); ; mListSubscriptionsResultCallback = RezultateCallback noi() @Override public void onResult (@NonNull ListSubscriptionsResult listSubscriptionsResult) pentru (Abonament abonament: listSubscriptionsResult.getSubscriptions ()) DataType dataType = subscription.getDataType (); Log.e ("RecordingAPI", dataType.getName ()); pentru (Câmpul câmpului: dataType.getFields ()) Log.e ("RecordingAPI", field.toString ()); ; 

3. Conectarea și controlul abonamentelor

Acum, când aveți cadrul general pentru aplicația dvs. de probă, este timpul să încheiați totul prin conectarea la serviciile Google Play și solicitarea de abonamente.

În onCreate (), puteți să inițializați și să vă conectați la Serviciile Google Play declarandu-vă că utilizați Fitness.RECORDING_API, adăugând un câmp de citire a datelor despre activitatea de fitness și setarea pentru a conecta / deconecta automat prin ciclul de viață al aplicației.

mGoogleApiClient = noul GoogleApiClient.Builder (acest) .addApi (Fitness.RECORDING_API) .addScope (nou domeniu (Scopes.FITNESS_ACTIVITY_READ)) .addConnectionCallbacks (acest) .enableAutoManage (this, 0, this) .build ();

În orice moment după GoogleApiClient a conectat, puteți solicita un abonament. Pentru acest tutorial, ne abonați onConnected (). Fragmentul următor arată cum puteți începe un abonament pentru modificările numărului de pași ai utilizatorului, deși puteți accesa orice senzor pe care Google Fit îl susține.

Dacă un abonament este deja difuzat din cauza unei acțiuni anterioare, atunci apelul de apel primește un cod de stare FitnessStatusCodes.SUCCESS_ALREADY_SUBSCRIBED.

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

Uneori este util să solicitați o listă de abonamente. Anterior, ați creat două butoane pentru aceste operații. În onClick () , verificați ce buton a fost apăsat și efectuați acțiunea corespunzătoare.

@Override public void onClick (V) switch (v.getId ()) caz R.id.btn_cancel_subscriptions: cancelSubscriptions (); pauză;  caz R.id.btn_show_subscriptions: showSubscriptions (); pauză; 

Dacă showSubscriptions () se numește, aplicația solicită o listă de abonamente asociate cu API-ul de înregistrare.

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

Asta duce la mListSubscriptionsResultCallback pentru a deconecta toate abonamentele conectate. Rezultatul arată astfel:

... /com.tutsplus.googlefitrecordingapi E / RecordingAPI: com.google.step_count.delta ... /com.tutsplus.googlefitrecordingapi E / RecordingAPI: pași (i)

Anularea unui abonament este simplă, după cum puteți vedea mai jos.

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

Concluzie

Acum ar trebui să aveți o înțelegere de bază despre cum să vă conectați la Google Fit dintr-o aplicație Android și să lucrați cu API-ul de înregistrare. Deși acest lucru nu pare să se întâmple chiar acum, acesta deschide calea pentru a stoca informații despre activitățile fizice ale utilizatorului, astfel încât acestea să poată fi accesate de alte API-uri Google Fit în aplicația dvs..

Cod