Skip to content

Proyecto: diseños para Smartwatches Android Wear

En este tutorial, desarrollaremos un proyecto con Android Studio, que nos servirá para explicar la asignación de diferentes diseños, acorde a las características de las pantallas de los dispositivos smartwatches.

En este ejercicio práctico, mostraremos el cambio de diseño en tiempo de ejecución, comprobando la forma del dispositivo y estableciendo el layout (formato) más acorde a la pantalla. Este proyecto (módulo «wear») permitirá la realización de llamadas desde el dispositivo Android Wear, vinculado con el dispositivo móvil.
Para realizar esta tarea, en primer lugar enumeraremos los elementos necesarios, tanto para la realización del proyecto principal, como para el funcionamiento de la lógica de asignación de cada layout diseñado:

Screen Round LayoutScreen Rect Layout

Pantalla de presentación de la aplicación.

Menú principal Wear Square LayoutPantalla principal Wear Round Layout

Menú principal de la aplicación.

 

Muestra desplegable telefonos en pantalla redonda Lista telefónos pantalla cuadrada

Muestra el desplegable con lista de contactos almacenados.

Pantalla redonda Seleccionar TelefonoPantalla cuadrada seleccionar teléfono

Lista de contactos disponibles.

Proyecto en Android Studio denominado «AppSmartWatches»

Este proyecto está formado por las siguientes clases y layouts:

  • Clase SplashScreen, que herede de la clase base Activity, encargada de lanzar una pantalla de presentación al iniciar la aplicación, proporcionando una mayor inmersión del usuario.
  • Clase MainActivity, que herede de la clase base Activity, cuya tarea principal será la gestión de llamadas, ya sea introduciendo directamente el número deseado, o a partir de un listado de contactos almacenados.
  • Layout activity_main.xml, formado por una vista personalizada denominada WatchViewStub, encargada de asignar el diseño más apropiado en función de la forma de la pantalla.
  • Layout activity_splash_screen.xml, que al igual que el layout activity_main.xml, define una vista personalizada a partir del componente WatchViewStub.
  • Layout rect_activity_main.xml, diseñado para pantallas con forma cuadrada, define los siguientes componentes:
    • Componente TabHost que permitirá crear una interfaz de usuario basado en pestañas (Llamar y Contacto).
    • Componente de tipo EditText para introducir el número de teléfono al que se va a llamar.
    • 3 componentes de tipo ImageButton, encargados de, borrar el número de teléfono introducido, efectuar y cancelar una llamada.
    • 10 componentes de tipo Button, que proporcionan la lógica de marcación de un teclado numérico.
    • Componente de tipo ImageView que mostrará un icono asociado a contactos.
    • Componente de tipo selección Spinner, que mostrará los datos de contactos almacenados (números de teléfono).
  • Layout rect_splash_screen.xml, que define un componente de tipo ImageView, para el diseño sobre pantallas con forma cuadrada.
  • Layout round_activity_main.xml, define el mismo número de componentes que el layout rect_activity_main.xml, con la salvedad de que al tratarse de un diseño destinado a pantallas redondas, se asigna un nuevo estilo a los botones del teclado numérico, con la idea de ocupar el menor espacio posible.
  • Layout round_splash_screen.xml, al igual que el layout rect_splash_screen.xml, define un componente de tipo ImageView, pero en este caso el diseño se asignará a pantallas con forma redonda.
  • Layout spinner.xml, que define un diseño único para asignar al adaptador del componente de tipo selección Spinner. Estaría formado por un componente TextView.

Estructura del proyecto

Estructura Proyecto

Lógica de navegación de la Aplicación

1. Pantalla de presentación inicial.

2. Pestaña principal con teclado numérico para realización de llamadas.

3. Pestaña secundaria para acceso a listado telefónico.

4. Selección de número de contacto almacenado.

Diagrama Logica de la App

Documentación código fuente

Como es habitual, puedes descargar todo el código del proyecto al final de este tutorial

AppSmartWatches\wear\src\main\java\com\academiaandroid\appsmartwatches\MainActivity.java

  1. Se declara e inicializa la clase WatchViewStub, para almacenar los dos diseños definidos. Además permitirá incorporar uno de los dos diseños creados en función de la forma de la pantalla del dispositivo:
  2. Dentro del método onCreate(), se implementa el evento encargado de ser lanzado cuando el diseño interno apropiado haya sido incorporado:
  3. Se definen los eventos encargados de controlar las pulsaciones de los diferentes botones asociados al teclado numérico para la realización de llamadas:
  4. Se inicializa la clase ArrayAdapter, que reciben entre sus argumentos un layout personalizado. A continuación, se invoca al método setAdapter() para construir la lista de contactos:
  5. Se asigna la clase TabHost declarada con su componente a nivel de layout. Posteriormente, se crean las pestañas «Llamar» y «Contacto», mostrando la primera de ellas el teclado numérico junto con los botones de realizar y cancelar llamada, y la segunda pestaña, los teléfonos de contacto almacenados en un componente de tipo selección Spinner:
  6. Por último, antes de cerrar el método onCreate(), se infla el layout en la Activity principal, con el layout más adecuado para la forma del dispositivo. Para ello, se invoca al método setContentView(), y se indica como parámetro la vista a inflar:
  7. Para finalizar con la clase MainActivity, se declaran los métodos  realizarLlamada()  y finalizarLlamada(), que permitirán, por un lado lanzar un intent con la acción de marcar un número de teléfono, invocando al método setData(), que recibirá el número como argumento, y por otro lado, invocar al método finish() para finalizar la Activity en caso de cancelar la llamada:

AppSmartWatches\wear\src\main\res\layout\activity_main.xml

  1. Layout que implementa una vista personalizada a partir de la clase WatchViewStub. Este tipo de vista declara los dos diseños creados para diferentes formas, en lo que se refiere a la pantalla del dispositivo:

AppSmartWatches\wear\src\main\res\layout\rect_activity_main.xml

  1. Layout que define el diseño para dispositivos con la pantalla cuadrada, donde destacan principalmente el componente de tipo TabHost, que permitirá al usuario moverse entre dos pestañas para la realización de llamadas o la selección de contactos telefónicos almacenados, y el componente de tipo selección Spinner, que mostrará la lista indicada anteriormente. Para acceder a este layout se debe establecer el atributo android:id="@+id/rect_activity_layout":

AppSmartWatches\wear\src\main\res\layout\round_activity_main.xml

  1. Layout formado por los mismos componentes definidos en rect_activity_main.xml, pero su peculiaridad radica en que está destinado a pantallas con forma redonda, y por lo tanto se asignan diferentes valores para su adaptación visual a dicha forma (propiedades de ancho, alto y márgenes de los componentes con los límites de la pantalla). Al tratarse de un diseño muy similar, es recomendable visualizar dichas diferencias directamente en el editor de layouts de Android Studio.

AppSmartWatches\wear\src\main\res\layout\spinner.xml

  1. Se crea un archivo xml de tipo Drawable, que proporciona una vista personalizada para el listado de contactos telefónico. Dicho recurso estará formado por un componente de tipo TextView:

Nota: Al tratarse de una parte común en proyecto utilizados anteriormente, la clase SplashScreen.java y sus correspondientes layouts (activity_splash_screen.xml, rect_splash_screen.xml y round_splash_screen.xml) no se describen dentro del apartado «Documentación de código fuente».

Dependencias declaradas:

Para este proyecto ha sido necesario añadir las siguientes dependencias para soportar dispositivos wearables, además de poder utilizar los servicios de Google Play (archivo «build.gradle» del módulo «wear»):

Permisos de aplicación en AndroidManifest.xml

Será necesario declarar permisos que permitan a la aplicación realizar llamadas, y poder gestionar dicha llamada desde el dispositivo Android Wear:

Descarga Proyecto

Download
Volver arriba
Esta web usa cookies para su correcto funcionamiento. No hay cookies de publicidad, aunque algunos de los contenidos mostrados (videos o documentos insertados) están alojados en servicios externos (Youtube, Vimeo, Box...) que sí pueden implementar sus propias cookies. También se ha incluido en pruebas un Agente AI que incluye sus propias cookies   
Privacidad