Google Fit es una plataforma que permite a los desarrolladores crear aplicaciones que se centran en los datos de aptitud del usuario. Una de las herramientas que Google ha proporcionado es Google Fit para Android, que está disponible como un paquete en los Servicios de Google Play..
Si bien hay muchas API diferentes disponibles para Google Fit, como se explica en este artículo de la descripción general de Envato Tuts +, este tutorial se enfoca en configurar y usar Google Fit para leer datos de sensores en un dispositivo Android. Un proyecto de ejemplo para este tutorial se puede encontrar en GitHub.
Para utilizar Google Fit para Android, necesita:
Esta sección le muestra cómo configurar su aplicación de Android y la API de Fitness. Puedes empezar visitando el Consola de desarrolladores de Google. Si ya tiene un proyecto con el que trabajar, puede omitir el siguiente paso. Si no, continúe y cree un nuevo proyecto para su aplicación Google Fit.
Para crear un nuevo proyecto, haga clic en el azul Crear proyecto Botón en la esquina superior izquierda de la pantalla..
Esto le presenta un diálogo que le pide un nombre de proyecto. Para este tutorial, he creado un proyecto y lo he llamado TutsPlusGoogleFit. Hay algunas restricciones sobre lo que puede nombrar su proyecto. Solo se permiten letras, números, comillas, guiones, espacios y signos de exclamación.
Una vez que golpeas Crear, Aparece un cuadro de diálogo en la esquina inferior derecha de la página, que indica que se está creando el proyecto..
Con el proyecto configurado, te llevan al proyecto. Visión general página. La forma más fácil de encontrar la API de Google Fit es buscar la palabra clave "ajuste". Seleccionar API de fitness De los resultados que aparecen..
Hacer clic Habilitar API habilitar para API de fitness.
Después de habilitar el Fitness API, recibirá una advertencia que le informa que también necesita crear credenciales para usar el Fitness API. Afortunadamente, la advertencia incluye un botón que nos lleva a la Cartas credenciales página.
Sobre el Cartas credenciales En esta página, debe proporcionar información general sobre su aplicación en el Asistente de credenciales. Especifique que está utilizando el API de fitness, que la API se llama desde una Androide aplicación, y que la aplicación necesita acceso a Datos del usuario.
A continuación, haga clic en ¿Qué credenciales necesito?? en la parte inferior para continuar y crear una ID de cliente OAuth 2.0 para su aplicación de Android. Necesitas dos datos importantes para este paso:
Puede obtener la huella digital del certificado de firma abriendo un terminal o un símbolo del sistema, y navegando a la ubicación del certificado de firma de su aplicación. Esta es tu clave de lanzamiento o la predeterminada debug.keystore Certificado que utiliza Android Studio. Una vez que haya navegado a su almacén de claves, puede generar el SHA1 necesario con el siguiente comando, donde debug.keystore es el nombre del certificado de firma.
keytool -list -v -keystore debug.keystore
Pegue la clave SHA1 en el campo SHA1 e ingrese com.tutsplus.googlefit en el campo del nombre del paquete.
Finalmente, debe configurar la pantalla de consentimiento de OAuth 2.0. Esta es la pantalla que se muestra al usuario para que pueda otorgar permiso a su aplicación para usar sus datos de aptitud física. Este paso requiere su correo electrónico y un nombre de producto para mostrar a los usuarios. Para este tutorial, he ingresado Tuts + Google Fit.
Hacer clic Continuar y, en la siguiente página, haga clic en Hecho para finalizar el proceso de configuración.
Con su proyecto configurado y configurado en la Consola de desarrollador de Google, puede comenzar a crear un nuevo proyecto de Android. Asegúrese de que el nombre del paquete coincida con el que ingresó en el Consola de desarrollador de Google y configurar la aplicación para utilizar el Teléfono y tableta plataformas con una versión de SDK mínima de 14. El nivel mínimo de API para Google Fit es 9. Crear una Actividad vacía para mantener limpio el proyecto base para que pueda centrarse en la API de Google Fit en este tutorial.
Después de configurar el proyecto, abra el proyecto construir.gradle archivar e importar el paquete de ejercicios de Google Play Services agregando la siguiente línea a la dependencias
nodo.
compile 'com.google.android.gms: play-services-fitness: 8.4.0'
A continuación, abrir MainActivity.java y añade las siguientes interfaces:
OnDataPointListener
GoogleApiClient.ConnectionCallback
GoogleApiClient.OnConnectionFailedListener
Una vez que haya agregado los métodos necesarios para estas interfaces, su clase debería tener el siguiente aspecto:
la clase pública MainActivity extiende AppCompatActivity implementa OnDataPointListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState; setContentView (R.layout.activity_main); @ Anular la anulación pública onConnected (Bundle bundle) @ Anular la anulación pública onConnectionSuspended (int i) @Override public void onConnectionFailed (ConnectionResult connectionResult) @Override public void onDataPoint (DataPoint dataPoint)
Por último, pero no menos importante, cree las variables miembro que usará para este tutorial. Puede copiar las siguientes líneas en la parte superior de la clase:
int estático privado final REQUEST_OAUTH = 1; Cadena final estática privada AUTH_PENDING = "auth_state_pending"; authInProgress booleano privado = falso; mApiClient privado de GoogleApiClient;
En el siguiente paso, se conectará a Google Play Services y aprenderá cómo acceder a los datos de aptitud física del usuario dentro de su aplicación..
Con el proyecto configurado en Android Studio y la Consola de desarrollador de Google, es hora de sumergirse en la API de Fitness. En el onCreate ()
, Método, usted verifica si su aplicación ya está intentando autorizar contra la API de Fitness. Luego inicializa el GoogleApiClient
Instalar agregando la API de Fitness Sensors, definiendo un alcance y registrando las devoluciones de llamada de la aplicación. Si no solicita un alcance, su aplicación no podrá autorizar contra la API de 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) .addOnConnectionNail.nConnectionNail.n.
Después de inicializar el GoogleApiClient
Por ejemplo, necesitas hacer que se conecte al backend de Google. Puedes hacer esto en onStart ()
.
@Override protected void onStart () super.onStart (); mApiClient.connect ();
La primera vez que el usuario ejecuta la aplicación, la conexión a la API de Fitness fallará porque el usuario debe autorizar a su aplicación para que acceda a sus datos de fitness. Puedes escuchar este evento en onConnectionFailed ()
y reaccione en consecuencia comprobando si la autorización está en curso. Si es así, llame. startResolutionForResult ()
para que Google Play Services pueda manejar adecuadamente al usuario que otorga permiso para usar su información.
@Override public void onConnectionFailed (ConnectionResult connectionResult) if (! AuthInProgress) try authInProgress = true; connectionResult.startResolutionForResult (MainActivity.this, REQUEST_OAUTH); catch (IntentSender.SendIntentException e) else else Log.e ("GoogleFit", "authInProgress");
Si ejecuta su aplicación ahora, es posible que aparezca un cuadro de diálogo que le pide que seleccione una cuenta de Google para usar si ha usado varias cuentas en su dispositivo..
Cuando el sistema operativo sabe qué cuenta usar, su aplicación presenta un nuevo cuadro de diálogo que solicita al usuario que otorgue permiso a la aplicación para leer datos de aptitud física..
En esta etapa, el usuario otorga permiso a su aplicación para usar sus datos o cierra el cuadro de diálogo y cancela el proceso. Puedes escuchar ambos eventos en onActivityResult ()
y manejar el resultado. Si el usuario otorga su permiso de aplicación, su aplicación recibe un RESULTADO_OK
respuesta y luego puede intentar conectarse al cliente API de Google.
@ Override protected void onActivityResult (int requestCode, int resultCode, Intent data) if (requestCode == REQUEST_OAUTH) authInProgress = false; if (resultCode == RESULT_OK) if (! mApiClient.isConnecting () &&! mApiClient.isConnected ()) mApiClient.connect (); else else if (resultCode == RESULT_CANCELED) Log.e ("GoogleFit", "RESULT_CANCELED"); else else Log.e ("GoogleFit", "requestCode NOT request_oauth");
Su aplicación ahora debe poder conectarse con éxito a los servicios de Google Play. Con eso fuera del camino, puedes comenzar a enfocarte en la API de Fitness.
Cuando tu GoogleApiClient
instancia se ha conectado a Google, el onConnected ()
se activa la devolución de llamada. En esta devolución de llamada, necesita crear un nuevo DataSourcesRequest
objeto que define el tipo de datos en los que está interesada su aplicación. También debe crear un ResultCallback
que maneja lo que la aplicación debe hacer si se pueden recuperar pasos del dispositivo. Con los objetos creados, llamar. Fitness.SensorsApi.findDataSources ()
para iniciar la búsqueda de un origen de datos de paso válido.
@Override public void onConnected (Bundle bundle) DataSourcesRequest dataSourceRequest = new DataSourcesRequest.Builder () .setDataTypes (DataType.TYPE_STEP_COUNT_CUMULATIVE) .setDataSourceTypes (DataSource.TYPE_RAUNT). ResultCallbackdataSourcesResultCallback = nuevo ResultCallback () @Override public void onResult (DataSourcesResult dataSourcesResult) for (DataCatrazación del campo de la embarcación). ; Fitness.SensorsApi.findDataSources (mApiClient, dataSourceRequest) .setResultCallback (dataSourcesResultCallback);
Usted puede notar que el registerFitnessDataListener ()
El método no existe realmente. Este es un método auxiliar que se llama cuando se encuentra el origen de datos para el contador de pasos, que luego crea un SensorRequest
Objeto para solicitar datos del sensor de conteo de pasos..
En el siguiente fragmento de código, el SensorRequest
El objeto intenta encontrar el número de pasos cada tres segundos. los Fitness.SensorApi
A continuación, agrega la solicitud con un nuevo OnDataPointListener
de modo que, cuando hay nuevos datos disponibles, se activa el oyente. Si no se encuentran nuevos datos, OnDataPointListener
no se activa y la API de estado físico espera otros tres segundos antes de volver a verificar.
private void registerFitnessDataListener (DataSource dataSource, DataType dataType) Solicitud de solicitud de sensor = nuevo SensorRequest.Builder () .setDataSource (dataSource) .setDataType (dataType) .setSamplingRate (3, TimeUnit.SECONDS) .build (); Fitness.SensorsApi.add (mApiClient, solicite, this) .setResultCallback (nuevo ResultCallback() @Override public void onResult (estado) if (status.isSuccess ()) Log.e ("GoogleFit", "SensorApi agregado exitosamente"); );
Cuando se detecta un cambio en el recuento de pasos, onDataPoint ()
se invoca En este método, recorres los campos de la Punto de datos
parámetro y mostrar un tostada
mensaje con el nombre del campo y el valor. En este ejemplo, ese será el contador de pasos. En sus propias aplicaciones, usaría la lógica más apropiada para realizar su tarea. Notarás que el tostada
comando está envuelto en una Ejecutable
que se pasa a runOnUiThread
. Esto se debe a que la devolución de llamada no se activa en el subproceso de la interfaz de usuario principal.
@Override public void onDataPoint (DataPoint dataPoint) for (campo de campo final: dataPoint.getDataType (). GetFields ()) valor del valor final = dataPoint.getValue (campo); runOnUiThread (new Runnable () @Override public void run () Toast.makeText (getApplicationContext (), "Field:" + field.getName () + "Value:" + value, Toast.LENGTH_SHORT) .show (); );
Hay dos cosas más que debe hacer para esta muestra. Lo primero es desconectarse de la SensorApi
y Google Play Services cuando hayas terminado de usarlos. En este ejemplo, haces eso cuando onStop ()
se llama. El segundo es almacenar el authInProgress
valor que es verificado por onCreate ()
en onSavedInstanceState ()
.
@Override protected void onStop () super.onStop (); Fitness.SensorsApi.remove (mApiClient, this) .setResultCallback (nuevo ResultCallback() @Override public void onResult (estado) if (status.isSuccess ()) mApiClient.disconnect (); ); @ Anular la anulación protegida onSaveInstanceState (Bundle outState) super.onSaveInstanceState (outState); outState.putBoolean (AUTH_PENDING, authInProgress);
En este tutorial, ha aprendido cómo conectarse a la API de Google Play Services Fitness y leer los datos del sensor de aptitud del dispositivo del usuario. Incluso algo tan simple como datos de pasos para su usuario puede demostrar ser increíblemente valioso para aplicaciones como las carátulas de Android Wear o los rastreadores de objetivos. Hay docenas de otros tipos de fuentes de datos que puedes usar y muchas otras API dentro de Google Fit para mejorar aún más tus aplicaciones..