30/6/14

[Tutorial] Usando el acelerómetro y el vibrador (libGDX)

Buenas gente! En esta entrada veremos cómo obtener los datos del acelerómetro de un dispositivo móvil.

Un acelerómetro mide la aceleración de un dispositivo móviles Android en tres ejes y, a partir de ellos se puede deducir la inclinación u orientación de este.

La aceleración se mide en metros por segundo al cuadrado (m / s^2). Si un eje está
apuntando directamente hacia el centro de la tierra, su aceleración será más o menos 9'8 m / s^2.
Si apunta en la dirección opuesta, la aceleración será -10 m / s^2.

Los ejes en un dispositivo Android se configuran de la siguiente manera:


Los dispositivos Android tienen un término llamado orientación predeterminada, que indicará el estado por defecto de la orientación de la pantalla. Para los teléfonos, modo retrato ( portrait en inglés, es como en la imagen de arriba) es la orientación predeterminada. Para tablets, el modo de paisaje se tratará como la orientación predeterminada. Un dispositivo de orientación horizontal por defecto tiene sus ejes de rotación, de modo que los puntos del eje y hasta la parte más pequeña del dispositivo y los puntos del eje X a la derecha de la parte más ancha.

Comprobar disponibilidad del acelerómetro y orientación del dispositivo


Una vez vista la teoría del acelerómetro, veamos como comprobar si el dispositivo en el que se está ejecutando nuestra aplicación tiene acelerómetro. Para ello ejecutamos allí donde queramos comprobarlo la siguiente línea de código:



Esta función nos devolverá una variable booleana, true en caso de existir el acelerómetro, false en caso contrario.

Ahora veamos como saber la orientación actual que tiene nuestro dispositivo, para ello, ejecutamos la siguiente línea de código donde queramos conocer la orientación:



Esta función devolverá una variable de tipo int, con un valor de 0, 90, 180 o 270 grados, que indica la diferencia angular entre la orientación actual y la orientación nativa.

Ahora veamos como saber la orientación nativa de nuestro dispositivo:



Esto nos devuelve una variable de tipo Orientation con valor de Orientation.Landscape u Orientation.Portrait.

Lecturas del acelerómetro

Llegamos a la parte que nos interesa: Usar los datos que nos da el acelerómetro.

Para ello usaremos las siguientes funciones para saber el valor que devuelve:



Como hemos dicho antes en cada eje se moverá entre los valores flotantes de 10 y -10.

Para mover a un actor por la pantalla deberemos entonces, seguir los siguientes pasos:
  • Multiplicar el valor obtenido al comprobar el acelerómetro en un eje determinado por un delta para adecuar la velocidad a la que queramos 
    • Si el delta usado es 1 se moverá a una velocidad de entre 10 y -10 cada frame.
    • Si el delta usado es 0.5 se moverá a la mitad de velocidad.
    • Si el delta usado es negativo se moverá en la dirección contraria a donde giremos el dispositivo móvil.
    • Deberemos hacer varias pruebas y ajustar el delta a datos como el tamaño de la pantalla y la velocidad a la que queremos que avance el actor deseado.
  • Aplicar el incremento (o decremento) de posición al actor que queramos mover. Para ello sumamos el valor obtenido anteriormente a la posición actual del actor en su función de actualizar (act(...)) si es un objeto de la clase Actor o de una heredada de esta.
  • Dibujar de nuevo el actor para mostrar su nueva posición. Esto se hará en el método draw(...).

Con estos simples pasos podremos mover cualquier objeto por la pantalla de nuestro dispositivo en el eje que queramos (o en varios ejes a la vez).

Vibrador


El vibrador, como ya sabemos, sirve para hacer vibrar el móvil.

Para que nuestra aplicación pueda hacer vibrar el móvil, deberemos ponerle un permiso especial. Para esto nos vamos a nuestro fichero AndroidManifest.xml y añadimos la siguiente línea de permisos:



Con esto ya podremos hacer vibrar el dispositivo el tiempo que queramos con la función siguiente:



El tiempo se especificará en milisegundos.

Si queremos patrones de vibración más sofisticada usaremos la siguiente forma:



Aquí enciende el vibrador durante 200 milisegundos, y luego lo apaga durante 200
milisegundos después de nuevo lo enciende hasta dentro de 200 milisegundos. El segundo
parámetro especifica que el patrón no se debe repetir.

Notas:

  • Los dispositivos que no tengan acelerómetro devolverán 0 en las funciones de obtener la aceleración en algún eje.
  • Aunque no es obligatorio, es recomendable añadir a nuestro fichero AndroidManifest.xml las siguientes líneas para informar de que nuestra aplicación hará uso del acelerómetro para funcionar:



Referencias

23/6/14

[Drop 2048] Primera aplicación en Play Store

Buenas gente!! Hoy vengo a hacer un poco de publicidad de la primera aplicación que he subido al Play Store.

Drop 2048




Es un juego simple que ha sido mi conejillo de indias para ver como va el tema de subir aplicaciones, la publicidad, encriptación de datos y muchas más cosas.

Podéis descargaros la versión desde aquí. Se llama Drop 2048.

Todas las descargas, comentarios y puntuaciones en el Play Store serán bien recibidas ^^ (sobre todo si son buenas).





El juego trata de mover a tu bloque, que está situado en la parte baja de la pantalla e ir cogiendo los bloques con tu mismo número o bloques especiales.


Los bloques especiales podrán darte más puntuación, aumentarte la velocidad a la que caen los bloques, disminuirla, volver al número y velocidad inicial... Todo viene explicado en la pantalla de instrucciones, en un inglés muy simple.



El objetivo del juego es conseguir la mayor puntuación posible en cualquiera de sus dificultades.

Las 10 mejores puntuaciones de cada nivel se guardarán y podrás verlas en cualquier momento en la pantalla de puntuaciones del menú principal.




Futuras mejoras al juego


Ya que este juego es mi conejillo de indias, quiero probar con él varias cosas antes de hacer un juego más currado.

1) En primer lugar quiero añadirle la API de Google Analystics, que te dará mucha más información sobre el uso que hace la gente de tu aplicación, como por ejemplo el tiempo que están en ella, visitas diarias, etc.

Puedes además, enlazar tu aplicación si usas Admob, y ver desde su página toda la información en gráficos.

Una vez lo haya integrado con la aplicación crearé una entrada comentando como hacerlo :D

2) El siguiente añadido que le quiero introducir es los servicios de juegos de la google play. Esto es realmente interesante porque por ejemplo, los usuarios pueden jugar con rivales de sus círculos de Google+, ver los marcadores para comparar sus puntuaciones con otros jugadores, desbloquear logros y sincronizar el progreso del juego en todos sus dispositivos. Todo esto hace de tu juego uno mucho más interesante al poder comparar puntuaciones de personas de todo el mundo o de tus amigos, lo que da mayor difusión al juego.

De nuevo, en cuanto tenga añadido esto crearé una entrada para explicaros cómo se hace.

3) El siguiente cambio que quiero añadirle es añadir el soporte para varios lenguajes. Ahora mismo está todo en inglés, así que quiero que según el idioma cambie todo. Como mínimo entre inglés y español.

4) Otro cambio ya más relacionado con el juego es el permitir uso de distintas texturas para los bloques. Así, en vez de usar solo números, se podrán jugar con frutas, colores u otros objetos, para ampliar el grupo de población al que puede llegar el juego.

5) Añadir música y sonidos. Aunque esto es algo que ya tengo implementado en el otro juego que hice, no estaba del todo segura de las licencias, así que no puse música en este juego. Estoy a la espera de un amigo que hace música para videojuegos para poder añadirle música a mi juego.

Una vez le añada música crearé otra entrada diciendo como se pone música, como activarla y desactivarla, ponerla en bucle para que no deje de sonar nunca, etc.

Ya que la carga de la música suele durar un poco, también crearé una entrada para enseñaros una forma fácil de crear vuestra propia pantalla de carga al principio de la aplicación.

6) El resto de cambios como pueden ser añadir nuevos bloques especiales, permitir cambiar el número de columnas de bloques que caen, activar o desactivar bloques especiales, etc. no son realmente relevantes para mostrarlos en entradas como tutoriales, así que tampoco los pondré aquí.

Notas


  • De nuevo no os olvidéis de descargaros y puntuar la aplicación, es algo que solo cuesta un minutillo y siempre se agradece.
  • Si estos tutoriales os sirven para crear vuestra aplicación no olvidéis dejarme un comentario con vuestra aplicación, estará encantada de verlas, descargármelas y probarlas!
  • Cualquier idea de tutoriales o entradas en general que os gustaría que pusiera son bien recibidas. El aprender nunca está de más!

21/6/14

[Tutorial] Como subir tu primera aplicación al Play Store

Buenas gente! En esta entrada vamos a ver cómo subir nuestras preciadas aplicaciones a la Google Play Store!

Creando la cuenta de desarrollador de aplicaciones


En primer lugar tenemos que crearnos una cuenta de "play developer", para ello entraremos en esta página.

Una vez dentro tendremos que registrarnos y tendremos que pagar 25$ (Precio a 21/06/14). Será el único pago que tendremos que hacer y se puede hacer por tarjeta. El pago se hará inmediatamente y ya podrás entrar en tu cuenta.

Si quisiéramos crearnos nuestra cuenta para subir aplicaciones a la Apple Store necesitarías pagar 99$ al año. Cosa no muy recomendable para empezar...


Preparando tu aplicación para subirla: APK con firma


Para que tu APK sea aceptado debe cumplir una serie de requisitos:

Primero deberá estar firmada. Para ello abrimos nuestro Eclipse, seleccionamos nuestro proyecto Android y le damos a exportar, seleccionamos la opción que se muestra a continuación:


Le damos a continuar tras ver que el nombre del proyecto android es el correcto y en el siguiente paso deberemos crear una firma o utilizar una que ya tengamos.

Para crear una indicamos la dirección donde queremos que se nos guarde el fichero con la firma y una contraseña:


Le damos a continuar y nos pedirá que rellenemos algunos datos como nuestro nombre, una contraseña, etc. También nos pedirá que decidamos cuantos años de validez queremos que tenga nuestra firma. Recomiendan poner 25 así que eso ponemos. No tenemos que rellenar todos los campos, con rellenar el Alias, contraseñas, años de validez y un campo que elijamos más es suficiente:



Continuamos a la siguiente pantalla y solo nos quedará elegir la ruta donde crear nuestro APK y su nombre. Tras esto ya tendrás tu aplicación firmada para que solo tú puedas editarla.

Preparando tu aplicación para subirla: Optimizar tu APK


El siguiente paso necesario para subir la aplicación es optimizar tu APK para adaptarlo a los requisitos que necesita el sistema Android.

Para ello usaremos una herramienta: ZipAlign.

Esta herramienta ya viene incluida en nuestro SDK, y lo podemos encontrar en la siguiente dirección:

/sdk/tools/

Donde es la carpeta donde tenemos nuestro ADT.

Una vez localizamos la herramienta se usa de la siguiente forma:



Indicamos donde está nuestro fichero a optimizar y donde queremos crear el nuevo fichero ya optimizado.

Tras esto ya tendremos nuestro fichero APK listo para ser subido.

Subiendo la aplicación


Una vez tenemos lista nuestra aplicación para ser subida volvemos a la página que vimos al principio.

Y hacemos click en añadir nueva aplicación.

Deberemos rellenar varios campos como es la descripción y título de la aplicación en tantos idiomas como queramos (o sepamos) y subir varias capturas de pantalla de la aplicación.

Deberemos también aceptar las licencias que nos impone google y, tras esto, nos dirá que nuestra aplicación se publicará en unas pocas horas si todo va bien.

Y ya está! Pasado un tiempo tu aplicación estará subida en la Play Store y habrás dado un gran paso para comenzar tu camino como desarrollador de aplicaciones para Android! Felicidades!


17/6/14

[Tutorial] Cómo poner publicidad con AdMob en tu aplicación (libGDX)

Buenas gente! En la entrada anterior vimos distintos modelos de negocio para conseguir monetizar nuestras aplicaciones. En esta entrada nos centraremos en el modelo de aplicación gratuita con publicidad.

Para ello nos crearemos una cuenta en la plataforma Google AdMob, que, al igual que Google Adwords y Google Adsense en el mundo web, actúa de intermediario para poder poner publicidad en tus aplicaciones y está disponible para casi todas las plataformas móviles, como Android, iPhone/iPad y Windows Phone.

Crear una cuenta en AdMob


Lo primero de todo será crearnos una cuenta en AdMod, para ello nos vamos a su página web.

Una vez dentro nos registramos usando una cuenta de gmail. Deberemos dar algunos de nuestros datos como país donde vivimos, nombre completo, etc.

Una vez estemos registrados, nos vamos al menú "Monetizar" y añadimos el nombre de nuestra aplicación.

Hacemos click en añadir nuevo bloque de anuncios y le damos un nombre y un tipo (veremos más adelante los tipos que hay).

Tendrás que crear un nuevo bloque por cada espacio de anuncios que quieras poner en la aplicación (banner superior, publicidad de pantalla completa, etc.)

Cada bloque tendrá su propio id que usaremos más adelante.

Importando librerías en eclipse


Necesitaremos descargar un par de librerías para poder usar la API de google y sus anuncios. Para ello nos vamos a nuestro ADT y vamos al menú "Window -> Android SDK Manager" una vez dentro buscamos en la API 17 o superior el paquete Google APIs y lo señalamos para instalar.



Ahora bajamos en la lista hasta llegar a Extra e instalamos el paquete Google Play Services:



Una vez instalados ambos, seleccionamos File-> Import-> Android-> Existing Android Code into Workspace

Nos situamos en la carpeta donde instalamos nuestro ADT y SDK y desde ahí importamos:

/extras/google/google_play_services/libproject/google-play-services_lib/

El siguiente paso es seleccionar nuestro proyecto android, hacemos click derecho en él y vamos a sus preferencias.

En el menú de Android veremos en la parte de abajo para importar librerias, hacemos click en el botón de añadir y añadimosla librería google-play-services_lib que acabamos de importar a eclipse.

Con esto ya tendremos nuestro proyecto listo para usar la API de google.

Modificando nuestro AndroidManifest.xml


Lo primero que hay que cambiar es nuestro fichero .xml para añadir un activity nuevo para el anuncio y añadir los permisos de internet y comprobación de red necesarios para que puedan verse los anuncios. El fichero quedará parecido al siguiente:



Modificando nuestra clase AndroidLauncher.java


Deberemos modificar la única clase que tenemos en el paquete android y añadirle los anuncios que queramos. Quedará parecido a esto:



En la línea 36, en vez de ID_AD tendrás que poner el Id del bloque de anuncio que ponga en la página de AdMob y que creaste antes.

En la línea 37 indicas que tipo de anuncio será. Puede ser un banner, como en este caso, pantalla completa, etc. Puedes ver los tipos disponibles aquí.

Las líneas 40 y 41 solo son necesarias cuando estás haciendo pruebas, para indicar el Id del dispositivo en el que vas a hacer las pruebas.

Esto es necesario ya que si realizas muchas pruebas AdMob podría detectar que estás haciendo clicks "fraudulentos" y llegar a bloquearte la cuenta. Para ello le indicas que estas haciendo pruebas en ese dispositivo.

En la línea 52 indicas donde quieres que se coloque el anuncio dentro de la pantalla. En este caso está puesto an la parte inferior de la pantalla.

Modificando nuestra clase principal


Primero deberemos crear una interfaz dentro del proyecto principal de la aplicación:



Después deberemos crear una variable de esa interfaz dentro de nuestra clase principal de la aplicación:



Tras esto solo nos quedará activar el mostrar los anuncios:



Tras esto ya podremos ejecutar nuestra aplicación en un dispositivo android y se verá la publicidad.

Notas

  • Esta API de google solo funciona para versiones de Android iguales o superiores a la 2.3
  • Deberás crear un AdView por cada uno de los bloques de anuncios que quieras crear.
  • Las primeras veces que intentes ver el anuncio o cuando pasen 24 horas sin que nadie lo vea puede que el anuncio tarde en cargar. Deja la aplicación abierta durante un par de minutos y con el tiempo cargará el anuncio.

Referencias

[Información] Como ganar dinero con tu aplicación

Buenas gente! En esta entrada veremos cuales son los distintos modelos de negocio a la hora de querer rentabilizar tus aplicaciones. Aunque existen muchos modelos nos centraremos en los 6 más comúnmente usados:


De pago

La opción más lógica si intentas obtener dinero de tus aplicaciones es cobrar por ellas. El usuario paga un precio normalmente menor a 7 euros por tener la aplicación.

De el precio total que paga el usuario, tú como creador te llevas un 70% de las ganancias y google un 30%.

Gratuita

Aunque estas aplicaciones no den dinero sirven para darte publicidad, ya que muchos usuarios la descargarán por probarla.


Freemium

Esta aplicación se puede descargar de forma gratuita pero tendrá ciertas limitaciones (escenarios o personajes bloqueados, publicidad, etc.)

El usuario podrá pagar para tener la versión premium de la aplicación donde se le eliminarán las restricciones de la versión gratuita.

Demo

Esta aplicación será gratuita y se usará para dar publicidad como demostración de una aplicación de pago.

Añadidos

Esta aplicación será gratuita pero contará con una "tienda" dentro de la propia aplicación para desbloquear ciertos contenidos (personajes, armas, niveles, gemas, etc).

El usuario decidirá si quiere desbloquear alguno de esos contenidos.


Gratuita con publicidad

Esta es la más recomendable según mi punto de vista. El usuario puede descargarse la aplicación de forma gratuita y tú recibes ingresos según distintos criterios:


  • Impresiones
    • Cada 1000 veces que vean el anuncio obtendrás una pequeña cantidad de dinero.
    • Para que esto sea rentable deberás tener muchos usuarios en tu aplicación, ya que recibirás apenas unos pocos céntimos por cada 1000 visitas.
  • Por click
    • Cada vez que alguien hace click en el anuncio ganas una cantidad de dinero algo mayor a la que recibes por 1000 visitas.
    • Las empresas que dan estos servicios de publicidad tienen sistemas para detectar clicks "fraudulentos" o inválidos y pueden llegar a cerrarte tu cuenta.
  • Por formulario
    • Aquí recibes el ingreso cuando alguien hace click en el anuncio y rellena un formulario.
    • El ingreso aquí es bastante mas elevado (puede que un par de euros por cada usuario que rellene el formulario) aunque poca gente lo hace.
  • Por acción
    • Cuando un usuario hace click en la publicidad y lleva acabo una compra, descarga, o lo que proceda, tu recibirás una buena cantidad de dinero (entre 5 y 10 euros, dependerá del anuncio).
Existen muchas empresas que se dedican a actuar de intermediario para permitir que puedas poner publicidad en tus aplicaciones. Algunas de ellas son las siguientes:



Referencias