Este artículo invitado fue escrito por Enrique Diaz, organizador del GDG Androititlan, en México.

¿Qué es?

Google Play Services es un conjunto de API que se ha separado del stack del sistema operativo Android para ofrecer la última versión disponible a componentes críticos para desarrolladores de una manera rápida, evitando así la dependencia del OEM o Carriers. A través de una biblioteca de código el archivo APK de Google Play gestiona los servicios de Google como Google Maps, Google Plus, In-app Purchases, etcétera.

¿Cómo funciona?

El archivo APK de Google Play utiliza un Servicio que corre en un hilo en segundo plano dentro del sistema operativo, el cuál puede interactuar con la biblioteca cliente que debe importarse en nuestra aplicación, permitiendo que cualquier dispositivo que tenga Android 2.2(Froyo), o superior,  pueda hacer uso de las últimas características del API.
Picture
Google Play Services te da la libertad de utilizar las API's más nuevas sin preocuparse por el soporte de dispositivos.

Instalación

El SDK de Google Play services está disponible para su descarga desde el SDK Manager, además de tener un dispositivo físico con Android 2.2 o superior para hacer debugging y correr tu aplicación.

Asumiendo que tienes instalado ADT en Eclipse, deberás hacer lo siguiente para tener Google Play services listos para trabajar:
  • Damos click en el botón Android SDK Manager que se muestra en la figura 0 o en el menú Ventana>Android SDK Manager como se muestra en la figura 1.
Picture
Figura 0. El botón de Android SDK Manager en Eclipse.


Picture
Figura 1. El menú desplegable en Eclipse.

  • Una vez que estemos en el selector de paquetes, buscamos la carpeta Extras y seleccionamos la opción Google Play services y presionamos el botón Install packages, como se muestra en la figura 2
Picture
  • Aparecerá una ventana emergente, donde se muestran los detalles del paquete y tendrás que aceptar la licencia de uso. Seleccionamos la opción Accept y luego damos click al botón Install como se muestra en la figura 3.
Picture
Figura 3. Detalles del paquete Google Play services.
  • Ahora procederemos a importar el proyecto que descargamos en nuestro workspace. Click en Archivo, selecciona Importar, selecciona Android > Código Android existente en workspace como la * figura 4 * ilustra. Busca la ruta donde se descargó el paquete (típicamente es <carpeta-donde-tienes-android-sdk>/extras/google/googleplayservices/libproject/google-play-services_lib).
Picture
Figura 4. Seleccionamos el tipo de import como Android y luego Existing Android Code Into Workspace.
  • Una vez que tengamos el código dentro de nuestro workspace, podemos agregarlo como proyecto biblioteca para futuras aplicaciones.

Validando nuestro dispositivo

Como se mencionó anteriormente, Google Play funciona correctamente en dispositivos con Android 2.2 o superior, para ello es necesario siempre validar si existe Google Play en el dispositivo antes de acceder a las características de los servicios, la mejor manera es hacerlo en el método onResume() en nuestra actividad principal:

@Override protected void onResume() {
   checkGooglePlayServicesAvailability();
   super.onResume();
}

public void checkGooglePlayServicesAvailability() {
   int statusCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
   if (statusCode == ConnectionResult.SUCCESS) {
      Log.d("Is Google Play services available?", "" + statusCode);
   } else {
      GooglePlayServicesUtil.getErrorDialog(statusCode, this, 0).show();
   }

Donde el método más importante es isGooglePlayServicesAvailable(), ya que regresa cualquiera de los siguientes códigos de resultado:

0 = SUCCESS
1 = SERVICEMISSING
2 = SERVICEVERSIONUPDATEREQUIRED
3 = SERVICEDISABLED
4 = SIGNINREQUIRED
5 = INVALIDACCOUNT
6 = RESOLUTIONREQUIRED
7 = NETWORKACCOUNT
8 = INTERNALERROR
9 = SERVICEINVALID
10 = DEVELOPER_ERROR

Si el código de resultado es * SUCCESS *, entonces el APK de Google Play services está actualizado, y puedes proceder con normalidad, sin embargo, si el código de resultado es SERVICEMISSING, SERVICEVERSIONUPDATEREQUIRED o SERVICE_DISABLED como se muestra en la figura 5, se invoca el método getErrorDialog() para mostrar un mensaje de error al usuario, lo cuál permitirá que descargue el APK o que lo habilite desde la configuración del sistema.

Picture
Figura 5. Captura de pantalla cuando la versión instalada de Google Play services ha sido deshabilitada en este dispositivo.
Ahora es tu turno de encontrar nuevas maneras de explotar los API's más importante de Android, a través de los servicios de Google Play.

Publicado por Francisco Solsona, Developer Relations Regional Lead.