Programación Multimedia y Dispositivos Móviles (Material Didáctico)
Programación Multimedia y Dispositivos Móviles (Material Didáctico)
Programación multimedia y
dispositivos móviles
Módulo 8: Programación multimedia y dispositivos móviles
Página 2 de 88
Módulo 8: Programación multimedia y dispositivos móviles
BIBLIOGRAFÍA .................................................................................................... 87
WEBGRAFÍA ....................................................................................................... 87
Página 3 de 88
Módulo 8: Programación multimedia y dispositivos móviles
A la hora de desarrollar una aplicación para móviles existen algunos requisitos que
son necesarios tener en cuenta. Cada plataforma plantea una serie de
requerimientos que son necesarios a la hora de ejecutar una aplicación
correctamente.
Estas son algunas de las consideraciones que hay que verificar antes:
Página 4 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Página 5 de 88
Módulo 8: Programación multimedia y dispositivos móviles
La elección del IDE es una cuestión subjetiva, que en la mayoría de los casos viene
determinada por el propio desarrollador de la aplicación.
• Eclipse:
• Android Studio:
Página 6 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Una vez valoradas las ventajas e inconvenientes de cada uno, el IDE utilizado para el
desarrollo de aplicaciones será Android Studio. Este cuenta con mayores garantías
de futuro dentro del desarrollo de aplicaciones móviles.
Página 7 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Android Studio realiza la compilación de las aplicaciones con el lenguaje Java. Por
tanto, es necesario instalar el JDK (Java Development Kit) que provee las
herramientas de desarrollo para aplicaciones Java. Esta herramienta se puede
encontrar en la web de Oracle, donde será necesario descargarla y, posteriormente,
instalarla.
Una vez instalada, el siguiente paso es instalar Android Studio. Durante la instalación
será necesario incluir un módulo fundamental para el desarrollo. Este es el SDK
Manager, que permitirá descargar todos los paquetes necesarios para la compilación
de aplicaciones dentro del IDE. Otro módulo que será necesario instalar es la
máquina virtual de java (JVM). Esta será capaz de interpretar el lenguaje compilado
Java. Además, se encargará de ejecutar todas las instrucciones para ser emulado.
1.4. Emuladores
Página 8 de 88
Módulo 8: Programación multimedia y dispositivos móviles
1.5. Configuraciones
• Tipos y características:
• Dispositivos soportados:
Página 9 de 88
Módulo 8: Programación multimedia y dispositivos móviles
1.6. Perfiles
Características
Los emuladores cuentan con unos perfiles hardware ya definidos. De esta forma, si
un dispositivo de los que ya están creados encaja con las características del
dispositivo que se desea emular, no sería necesario personalizar un nuevo perfil.
Estos perfiles no se pueden modificar, ya que se encuentran incluidos dentro del AVD.
Hay que tener en cuenta que todo tipo de memoria que se elija para nuestro
emulador se cogerá de la máquina física, es decir, de nuestro propio ordenador.
Página 10 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Arquitectura y requisitos
Para poder hacer uso de estos perfiles ya definidos es importante tener en cuenta
algunos requisitos. Estos vienen ya definidos dentro de la documentación de
Android. El requisito fundamental es que el equipo permita, por sus características
de hardware, la emulación de dispositivos y la virtualización. Para un mayor detalle
se tiene que consultar la documentación ofrecida por Android en su página oficial.
www.android.com
Dispositivos soportados
Todos los tipos de dispositivos son soportados y cuentan con un perfil dentro del AVD
de Android. Es posible hacer uso, como ya se ha indicado, de tablets, Android Wear,
móvil o Android TV.
Las actividades se dividen en dos partes: la capa lógica y la parte gráfica. La capa
lógica es la encargada de establecer el funcionamiento de la aplicación, y se
encuentra en los archivos .java del proyecto. La capa gráfica se compone de los
archivos xml que forman los distintos layouts de la aplicación. Se encarga de
especificar los elementos que forman las distintas actividades.
Página 11 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Por lo tanto, cada actividad de una aplicación necesita tener un archivo java y un
archivo xml. El archivo de java será el encargado de llamar al archivo xml para cargar
su contenido en la aplicación.
Las actividades tienen tres estados: resumed, paused y stopped, que irán cambiando
según los eventos que se lancen.
Como se observa en la imagen, existen una serie de eventos o sucesos que tienen
lugar para realizar cambios de estado en la actividad.
Página 12 de 88
Módulo 8: Programación multimedia y dispositivos móviles
CÓDIGO:
Página 13 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Paso 2
Se declara la actividad en el AndroidManifest.xml.
CÓDIGO:
Una vez que se ha creado la nueva actividad, se puede lanzar. Para ello se debe crear
un objeto Intent.
Página 14 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Existen dos métodos para lanzar la actividad, que dependen del interés en recibir
resultados o no de la nueva actividad:
• startActivity(intent).
• startActivityForResult(intent, code): en este método se espera un
resultado asociado al código establecido.
CÓDIGO:
En el MainActivity
En el Main2Activity
Página 15 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Otra posible situación que requiere de una modificación son las labores de
mantenimiento. Una vez se ha lanzado una aplicación, en muchas ocasiones los
usuarios encuentran posibles fallos o bugs en la misma, y posteriormente se
arreglarán. Estas actualizaciones permiten modificar periódicamente todos los
aspectos referentes a dicha aplicación.
https://desarrollador-android.com/
Página 16 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Página 17 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Fase 1: Configuración
En primer lugar, es necesario instalar todos los elementos requeridos, tanto los
elementos de programación, como los entornos de emulación, AVD en el caso de
Android.
Los elementos que se deben instalar son los siguientes: Android SDK, Android
Development Tools y Android Platforms.
Fase 2: Desarrollo
Página 18 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Fase 4: Publicación
Se tienen que definir la versión del SDK mínima y recomendada, los idiomas, las
resoluciones gráficas y los recursos requeridos, para la correcta ejecución de la
aplicación en todos los dispositivos. En caso de tener algún tipo de restricción se
tiene que revisar el archivo AndroidManifest.xml. Es preciso identificar el nombre
del paquete también dentro del archivo AndroidManifest.xml.
https://play.google.com/store
Página 19 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Dentro de un layout se pueden encontrar otro layout o widgets, entre los que se
engloban todos los elementos que heredan de la clase Widget. Los más conocidos
son: Button, TextView, EditText, ListView, RadioButton, CheckBox y ToggleBar,
entre otros.
Página 20 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Todos estos elementos tienen una serie de propiedades. En primer lugar, las
propiedades de tamaño, tanto para ancho (widht) como para alto (height), son
obligatorias en todos los componentes de la actividad, es decir, tanto en los layouts
como en los widgets. Además, pueden tener distintas propiedades para el margen,
el padding, el texto, la letra, o el fondo, entre otras. Otra de las propiedades más
importantes es el identificador, para poder hacer referencia a este componente.
https://developer.android.com/reference/android/widget/package-
summary.html
Página 21 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Unidades de medidas
Las unidades de medida más comunes que Android utiliza son match_parent (utiliza
todo el espacio asignado, tan grande como sea su padre) y wrap_content (se adapta
al tamaño el contenido). Para expresar tamaños fijos:
Menús
Existen diferentes formas de crear menús en una aplicación: los menús en la barra
de tareas, los menús contextuales y los menús desplegables laterales.
Página 22 de 88
Módulo 8: Programación multimedia y dispositivos móviles
CÓDIGO:
En el archivo xml:
En el archivo java:
Para interactuar con este menú, se deben crear las callback que responden a estos
eventos:
Página 23 de 88
Módulo 8: Programación multimedia y dispositivos móviles
CÓDIGO:
Notificaciones
Página 24 de 88
Módulo 8: Programación multimedia y dispositivos móviles
En el siguiente código se puede observar cómo crear la notificación, a la que hay que
añadir el elemento que se lanzará al ser pulsado.
CÓDIGO:
Página 25 de 88
Módulo 8: Programación multimedia y dispositivos móviles
2.4. Eventos
Las aplicaciones Android están pensadas para dispositivos táctiles, por lo que
muchos de sus eventos están relacionados con esta característica, es decir, son
eventos de la clase View.
Los listener son las interfaces de la clase View que se encargan de capturar los
eventos, es decir, de detectar la interacción con el usuario y ejecutar las instrucciones
correspondientes.
CÓDIGO:
Esta es una forma de programar el evento de cuando se pulsa un botón, pero hay
otras también igual de válidas.
https://developer.android.com/reference/android/view/View.html
Página 26 de 88
Módulo 8: Programación multimedia y dispositivos móviles
CÓDIGO:
Página 27 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Una vez se tiene el archivo xml y las imágenes que se quieren mostrar en este
directorio, es posible crear diferentes tipos de ítem, uno para cada una de las
imágenes. Estos ítem tendrán dos atributos:
Por último, se utiliza el método start() y stop() para realizar las operaciones de
animación.
CÓDIGO:
Página 28 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Animación de vistas
En el directorio res/anim hay que crear un documento xml, que contendrá las
diferentes animaciones para el objeto en el orden en el que se quiere actuar.
Las etiquetas que se utilizan para ello son: <translade>, <rotate>, <scale>, <alpha>.
Además, es posible agrupar varias de estas etiquetas en grupos, para que se ejecuten
simultáneamente y, para ello, se utiliza la etiqueta <set>.
Página 29 de 88
Módulo 8: Programación multimedia y dispositivos móviles
CÓDIGO:
Una vez que se tiene el xml es posible crear la animación, con la clase Animation y el
xml creado.
Página 30 de 88
Módulo 8: Programación multimedia y dispositivos móviles
CÓDIGO:
https://developer.android.com/guide/topics/graphics/view-animation
Creamos una carpeta raw dentro del directorio res. Incluiremos allí nuestros archivos
de audio. Buscamos la carpeta raw en el directorio <nombre
app>\app\src\main\res\raw. En el ejemplo se ha utilizado un mp3 con el sonido de
un gato.
Para esta práctica, se utilizará la clase MediaPlayer. El código del archivo del archivo
java para que el sonido se repita indefinidamente en el momento que se cree la
actividad principal será:
Página 31 de 88
Módulo 8: Programación multimedia y dispositivos móviles
CÓDIGO:
Servicio iniciado
Página 32 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Servicio enlazado
Al contrario que en los servicios iniciados, los servicios enlazados son creados para
vincular un componente con un servicio. Para ello, es necesario realizarlo mediante
el método bindService(). Este tipo de servicios crean un interfaz cliente-servidor que
permite la comunicación entre los componentes y el servicio. Se pueden enlazar
distintos componentes a un mismo enlace, pero cuando todos los componentes
eliminan la comunicación con el servicio, el servicio finaliza.
Página 33 de 88
Módulo 8: Programación multimedia y dispositivos móviles
https://developer.android.com/guide/components/services.html?hl=es-419
Página 34 de 88
Módulo 8: Programación multimedia y dispositivos móviles
CÓDIGO:
CÓDIGO:
Por otra parte, el programador podrá implementar todos los métodos que necesite
para la gestión de la base de datos.
Página 35 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Además, esta clase dispone de dos métodos que permiten abrir la conexión de la base
de datos en forma de lectura o en forma de escritura, dependiendo del tipo de
operación que se desee realizar. Los métodos, respectivamente, son
getReadableDatabase() y getWritableDatabase().
CÓDIGO:
Entre los métodos que se utilizan para ejecutar sentencias SQL se encuentran:
• execSQL: cuando no hay valor de retorno.
• query() y rawQuery(): para recuperar los datos de la base de datos. En el
método query() se especifican los distintos parámetros para formar la
consulta, mientras que en el método rawQuery() se envía la sentencia SQL
en forma de String.
https://developer.android.com/reference/android/database/sqlite/SQLite
Database.html
Página 36 de 88
Módulo 8: Programación multimedia y dispositivos móviles
2.8. Persistencia
Preferencias
Para ello, es preciso crear la parte gráfica. Es posible realizarlo de dos formas:
Página 37 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Una vez organizada la interfaz, hay que mostrarla. En el caso de utilizar el xml
PreferencesScreen, la actividad heredará de PreferenceActivity en lugar de Activity o
AppCompatActivity.
CÓDIGO:
Página 38 de 88
Módulo 8: Programación multimedia y dispositivos móviles
En la clase del fragmento se indicará cuál es el archivo xml que se debe mostrar.
CÓDIGO:
CÓDIGO:
Página 39 de 88
Módulo 8: Programación multimedia y dispositivos móviles
https://developer.android.com/reference/android/content/SharedPreference
s.Editor.html
Por último, se debe cerrar el editor para que todos los cambios se hagan efectivos.
CÓDIGO:
Página 40 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Se utilizan los métodos get para recoger los datos del fichero.
https://developer.android.com/reference/android/content/SharedPreference
s.html
Ficheros
Almacenamiento interno
Todas las aplicaciones contienen una carpeta para almacenar ficheros cuando se
instalan en un dispositivo. Esta carpeta tiene la ruta
data/data/nombrePaquete/files. Esta carpeta también se desinstala
automáticamente al desinstalar la aplicación.
Página 41 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Almacenamiento externo
CÓDIGO:
Ficheros de recursos
Desde el proyecto es posible cargar cualquiera de estos recursos para hacer uso de
lectura de ellos. Además, en la carpeta res/raw también es posible almacenar ficheros
con extensión .txt.
Página 42 de 88
Módulo 8: Programación multimedia y dispositivos móviles
CARPETA CONSTANTE
Music DIRECTORY_MUSIC
Download DIRECTORY_DOWNLOADS
Pictures DIRECTORY_PICTURES
DCIM DIRECTORY_DCIM
Todas estas carpetas también pertenecen a la aplicación, por lo que serán eliminadas
automáticamente al desinstalarla.
Página 43 de 88
Módulo 8: Programación multimedia y dispositivos móviles
• Procesos vacíos.
• Procesos en segundo plano.
• Servicios.
• Procesos visibles.
• Procesos en primer plano.
Página 44 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Si la hebra principal está ocupada con alguna operación, no podrá recoger las
interacciones con el usuario, y, por lo tanto, dará la apariencia de aplicación
bloqueada. Si esto se alarga durante varios segundos, el Sistema Operativo lanzará
un mensaje de que la aplicación no responde.
https://developer.android.com/reference/java/lang/Thread.html
Página 45 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Funcionamiento
Cuando se crea una tarea Asynctask, primero es necesario preparar los datos, aunque
no obligatorio. Esto se realiza en la hebra principal, pero es preciso introducir el
código dentro del método onPreExecute() de la tarea asíncrona. Por ejemplo, es
común encontrar que en este método se indica el mecanismo por el cual el usuario
va a conocer el estado de la actividad, y se inicializa.
Además, es posible finalizar esta hebra, para ello, habrá que implementar el evento
onCancelled() mediante el método cancel().
Página 46 de 88
Módulo 8: Programación multimedia y dispositivos móviles
En este modelo, los clientes son los encargados de realizar peticiones a los servidores,
y estos responden con la información necesaria.
En la actualidad existen distintas aplicaciones que utilizan este modelo, como pueden
ser: el correo electrónico, mensajería instántanea y el servicio de Internet. Es decir,
se utiliza siempre que se accede a una página web.
Página 47 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Se debe tener en cuenta que, en este modelo, no se intercambian los roles entre
clientes y servidores.
¡!
En el módulo 9, Programación de servicios y procesos, se conocerán
las diferencias entre los tipos de sockets, y las clases Java utilizadas
dependiendo del tipo de socket.
CÓDIGO:
Página 48 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Para evitar esto, es posible declarar el broadcast receiver para momentos puntuales,
mediante Context.registerReceiver() y Context.unregisterReceiver(), que suelen
encontrarse en los métodos onResume() y onPause(), respectivamente.
Para poder enviar mensajes de texto desde la aplicación Android, es necesario dar
permisos en el AndroidManifest.xml, como ya se ha realizado anteriormente. El
permiso que se debe dar para ello es SEND_SMS, mediante la etiqueta <uses-
permission>.
Página 49 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Para enviar un mensaje de texto desde otra actividad hay que crear un elemento de
comunicación en el que se indique el número de teléfono al que se va a enviar este
mensaje. Este intent tendrá también el contenido del mensaje y el tipo vnd.android-
dir/mms-sms. Después, se enviará el mensaje como si fuera una nueva actividad.
CÓDIGO:
También es posible enviar los mensajes directamente y para ello se necesita la clase
SMSManager. Esta clase tiene el método sendTextMessage que es el que enviará el
mensaje de texto.
En este método los campos necesarios para rellenar son: destinationAddress, con el
número de teléfono al que se quiere enviar el mensaje, el texto que se quiere enviar
y el elemento de envío, que contiene la información relevante del mensaje.
CÓDIGO:
Página 50 de 88
Módulo 8: Programación multimedia y dispositivos móviles
CÓDIGO:
CÓDIGO:
Para recibir un mensaje multimedia, el permiso que hay que dar a la aplicación es
RECEIVE_MMS.
Página 51 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Android tiene dos paquetes que permiten el desarrollo de este tipo de aplicaciones:
java.net y Android.net.
Al igual que en una aplicación Java, para la conexión a una página web es necesario
realizar una conexión HTTP, y para ello se debe crear el objeto URL, con la dirección
web, y después realizar la petición con la clase HttpURLConnection.
CÓDIGO:
Página 52 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Para ello, se recomienda comenzar con un servidor local, como puede ser WAMP,
que ofrece una conexión a un servidor APACHE, con PHP y MySQL, y después,
implementarlo en el servidor web elegido.
• Realizar los distintos archivos con extensión .php, que son los encargados
de la comunicación entre la aplicación y la base de datos. En estos ficheros
se encuentran las distintas consultas a la base de datos.
• Realizar una petición web al servidor: http://localhost http://127.0.0.1,
indicando la ruta de los ficheros.
http://localhost/archivosPHP/mostrarUsuarios.php
Página 53 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Página 54 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Página 55 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Página 56 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Es importante tener en cuenta que, para hacer uso de esta información, es necesario
que el usuario acepte el acceso a ello. Por eso, en la aplicación es necesario
especificar el permiso de aquella información con la que se va a trabajar, en el
AndroidManifest.xml, como ya se ha comentado anteriormente. Por ejemplo,
READ_CALENDAR, READ_CALL_LOG, READ_CONTACTS o READ_SMS.
https://developer.android.com/reference/android/Manifest.permission.html
Página 57 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Firebase es una base de datos en tiempo real que se encuentra en la nube. Los
datos se almacenan por nodos, no como registros de SQL. Existe un nodo con
diferente información y después otro nodo.
Estos son los pasos que se tienen que seguir para implementar Firebase a un proyecto
Android.
Página 58 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Ahora se debe introducir el nombre del paquete de la aplicación y el SHA-1. Hay que
tener en cuenta si la aplicación que se está desarrollando tiene una finalidad de
prueba y testeo o más bien profesional (por ejemplo con la intención se subirla a
GooglePlay), ya que se debe configurar en modo debug para la primera opción y sin
modo debug para la segunda.
Esto generará un archivo con extensión .json que se tendrá que descargar e instalar
en la rama del proyecto → Project/<nombre del proyecto>/app. Una vez introducido
este archivo en el directorio, se introducirá en Gradle Scripts:
El asistente irá mostrando los cambios que se tienen que realizar en la aplicación.
Después de realizarlos, ya existirá la comunicación entre el proyecto y la base de
datos.
Página 59 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Una vez implementado Firebase a nuestro proyecto, será posible crear nodos en la
base de datos. En la siguiente imagen se muestra la creación del primer nodo.
CÓDIGO:
CÓDIGO:
CÓDIGO:
Página 60 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Mapas
Android Studio ofrece la posibilidad de crear una actividad con la plantilla de un mapa,
por lo que facilitará crear el layout desde el principio. Una vez creado el mapa, es
posible indicar la clave obtenida en el Google API Maps en el archivo
google_maps_api.xml que se encuentra en la carpeta res/values.
CÓDIGO:
• CameraUpdate
• GoogleMap
• LocationManager
Sensores
Los sensores son dispositivos que recogen información del medio exterior. Todos los
dispositivos Android contienen una serie de sensores que permiten un mejor uso de
este.
Página 61 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Los sensores en los dispositivos Android no siempre están disponibles, por ello,
siempre es necesario comprobarlo antes de utilizarlos.
• Acelerómetro.
• Gravedad.
• Giroscopio.
• Acelerador lineal.
• Rotación.
• Sensor de proximidad.
• Luminosidad.
• Presión.
• Temperatura.
• Humedad.
Página 62 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Existe una gran cantidad de clases de Android que permiten utilizar distintos recursos
multimedia. Estas son algunas de ellas.
Para audio:
Para vídeo:
Para la cámara:
Una vez que se han conocido las clases que permiten trabajar con objetos
multimedia, la unidad se centra en MediaPlayer y Camera. En la siguiente página se
muestra un esquema sobre MediaPlayer.
MediaPlayer
Como se puede observar en la imagen, un audio pasa por muchos estados, desde que
se llama al recurso hasta que finaliza su reproducción.
Página 63 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Siempre que se quiera reproducir un archivo de música, primero hay que indicar la
ruta del archivo. Después es necesario preparar el audio para su posterior ejecución.
Todo esto ya se ha explicado más en profundidad (con código incluido) en el punto
2.5 de la UF1.
Hay que tener en cuenta que la preparación del audio puede llevar un tiempo, por lo
que es necesario realizarlo en segundo plano.
Página 64 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Camera
Los dispositivos que incluyen cámara nos brindan grandes oportunidades para
integrar imágenes o videos inmediatamente a nuestra aplicación. Existen dos
maneras de utilizar la cámara de fotos en una aplicación: utilizando la cámara
directamente, o utilizando la aplicación cámara.
Página 65 de 88
Módulo 8: Programación multimedia y dispositivos móviles
En la actualidad, los dispositivos móviles forman parte del día a día de las personas,
agrupando dentro de un mismo dispositivo todas las necesidades de los usuarios.
Este hecho hace que los dispositivos móviles sean usados tanto para motivos
laborales o de comunicación, como también para el ocio. Aquí es donde surge el
desarrollo de aplicaciones animadas para los dispositivos.
Página 66 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Página 67 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Estos frames son procesados uno detrás de otro ofreciendo al usuario una sensación
de continuo movimiento y animación. Todos estos bloques de frames dan como
resultado la escena del juego en los diferentes momentos del tiempo.
Página 68 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Página 69 de 88
Módulo 8: Programación multimedia y dispositivos móviles
• Según la licencia:
- Motores privados (algunos con licencia gratuita).
- Motores OpenSource.
La elección de un determinado motor gráfico es muy subjetiva. En la mayor parte de
las ocasiones esta elección estará condicionada por el tipo de aplicación del juego a
desarrollar, y los recursos disponibles de los que se dispone para su desarrollo.
Página 70 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Página 71 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Página 72 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Las funciones básicas utilizadas por los motores gráficos son aquellas que permiten
trabajar con elementos visuales, como son puntos, rectas, planos o polígonos.
Proveen de los recursos fundamentales en un juego como sonidos y música. El
apartado de modelado de personajes deberá recoger el uso de sprites para 2D, y el
uso de modelos (assets) para el desarrollo de plataformas de juego 3D.
Página 73 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Página 74 de 88
Módulo 8: Programación multimedia y dispositivos móviles
En la industria de los juegos para dispositivos móviles tienen aceptación tanto los
juegos 2D como los 3D, por lo que el abanico de posibilidades es ilimitado.
Página 75 de 88
Módulo 8: Programación multimedia y dispositivos móviles
A diferencia de las aplicaciones, los juegos, por lo general, no suelen ser de código
abierto, por lo que no es posible añadir de forma legal nuevas modificaciones al juego
si no se forma parte del equipo de desarrollo o se es el autor de uno de ellos.
Página 76 de 88
Módulo 8: Programación multimedia y dispositivos móviles
2. Desarrollo de juegos 2D y 3D
En este tema se estudiará el desarrollo de los juegos 2D y 3D, sus principales entornos
de desarrollo, la integración del motor de juegos en dicho entorno, conceptos de
programación 3D, sus fases de desarrollo y las propiedades de los objetos. Asimismo,
se mostrarán las diferentes aplicaciones tanto de las funciones del motor gráfico
como del grafo de escena, así como el análisis de ejecución y optimización del código.
Existen diferentes tipos de entornos que están orientados a un tipo de juegos, ya sea
para 2D o para 3D. También es posible encontrar diferentes entornos dependiendo
de la complejidad del juego a realizar.
Si el objetivo es realizar juegos sencillos cuya interfaz no sea muy exigente para
plataformas en 2D, es posible hacer uso de entornos como:
Página 77 de 88
Módulo 8: Programación multimedia y dispositivos móviles
• Unity 3D: hoy en día, Unity es una de las herramientas más utilizadas en el
mundo de los juegos, así como una de las mejor valoradas. Unity permite
exportar un juego creado en cualquiera de los distintos dispositivos. Unity
está basado en el lenguaje C#. Tiene un motor propio para el desarrollo de la
parte gráfica, lo que permite llevar a cabo un desarrollo muy completo de
todas las escenas de un juego. Es posible configurar todos los elementos
necesarios, como pueden ser: la iluminación, las texturas, los materiales, los
personajes, los terrenos, los sonidos, las físicas, etc.
• Unreal Engine: junto con Unity 3D, es uno de los entornos más conocidos y
valorados dentro del mundo del desarrollo de juegos. Permite la
configuración y diseño de recursos gráficos avanzados de la misma forma que
Unity.
Para ello, el primer paso es, una vez seleccionado el proyecto, ir al menú de edición
y seleccionar preferencias. Esto mostrará la ventana de preferencias de Unity, y
dentro de ella, en el apartado de herramientas externas, se podrán visualizar los
distintos parámetros de configuración del compilador. Es posible elegir el editor para
la programación de las líneas de código, así como la ruta en la que se encuentra en el
equipo el SDK de Android instalado.
Una vez se ha seleccionado esta ruta, Unity será capaz de compilar un proyecto para
Android. Para realizar la compilación hay que seleccionar el menú configuración de
Página 78 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Por último, una vez completados todos estos apartados, se generará en el equipo un
.apk (extensión de las aplicaciones en Android), que será el archivo ejecutable que
se instalará en el dispositivo deseado.
Página 79 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Página 80 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Para ellos, a través del inspector de creación de un agente, se definen las propiedades
que van a caracterizar al mismo, como son:
La creación de un nuevo juego exige de una gran cantidad de tareas que se pueden
agrupar en distintas fases:
Una vez documentada la historia, es necesario separar el juego en partes. Cada una
de estas partes conformarán las pantallas del juego. Se tiene que definir también cuál
será el aspecto del menú dentro de las pantallas, así como la colocación de los objetos
dentro de la misma.
2º) Diseño del código: en esta fase se especifican todas las capas de las que se
compone el juego. Se trata de separar todos los aspectos básicos del juego de la
funcionalidad del mismo. Esto es lo que se conoce como Framework.
Página 81 de 88
Módulo 8: Programación multimedia y dispositivos móviles
El Framework definirá cómo será el manejo de las ventanas del juego. Permite
asegurar que los objetos ocupan el espacio correcto dentro de la ventana que
corresponde. También se encargará del manejo de eventos de entrada de usuario.
Estos, en la mayoría de los casos, serán recogidos del teclado o ratón del equipo.
Otra de las tareas del Framework es el manejo de ficheros, en los que se llevarán a
cabo las tareas de lectura y escritura, como, por ejemplo, guardar las preferencias y
puntuaciones del juego.
3º) Diseño de los Assets: es una de las fases más complicadas y que mayor
repercusión tiene en un juego. Son las creaciones de los diferentes elementos o
modelos que se pueden utilizar dentro del juego, como pueden ser: los personajes,
los logos, los sonidos, los botones, las fuentes, etc.
4º) Diseño de la lógica del juego: en esta fase es donde se define cómo se comportará
el juego. Se aplicarán las reglas ya diseñadas, así como la programación del
comportamiento de cada uno de los eventos del juego.
5º) Pruebas: una de las fases más importantes. Es en este momento cuando se realiza
una comprobación de toda la aplicación, con el fin de valorar el comportamiento del
juego y la aplicación correcta del resto de fases.
6º) Distribución del juego: una vez se han finalizado todas las fases de desarrollo, el
objetivo es que el producto sea distribuido. Para ello, es necesario exportar este
juego de la misma forma que una aplicación.
Página 82 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Cada uno de los objetos representados dentro de una escena tiene unas
determinadas propiedades, que son:
Estas son algunas de las propiedades básicas de los objetos. Estas serán configuradas
de forma particular para cada objeto en función de la posible interacción dentro de
una escena.
Página 83 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Página 84 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Cada uno de estos nodos será la representación de una acción del personaje. Estos
reflejarán las transiciones entre los estados más básicos.
Página 85 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Cuando se está editando un archivo dentro del proyecto este aparecerá como una
pestaña. El editor de texto permite añadir breakpoints en los márgenes al lado de
cada una de las líneas de código que se desea. Una vez seleccionados estos puntos
de parada se comienza la depuración del código a través del botón debug. Esto
ejecutará el código, quedando parado en el primer punto de parada encontrado en
el código. Esto permite ver los valores que han tomado todas las variables hasta ese
momento.
Es posible además navegar entre los distintos puntos de parada para comprobar el
correcto comportamiento de la aplicación.
Otra herramienta que es útil dentro del IDE de Unity es el Unity Test Runner. Esta
herramienta comprueba el código de programación en busca de errores antes de
realizar una compilación. Esto puede ser útil para corregir errores de sintaxis, por
ejemplo.
El código tiene que estar lo más limpio posible, lo que ayudará posteriormente a la
corrección y mejora de algunas funciones. En proyectos con un desarrollo de código
muy extenso, esto puede suponer un problema de optimización muy grande.
Las funciones declaradas deben estar bien definidas y no deberían existir varias
funciones cuyo comportamiento sea el mismo.
Página 86 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Bibliografía
Webgrafía
https://developer.android.com/index.html
http://www.sgoliver.net/blog/curso-de-programacion-android/indice-de-
contenidos/
Página 87 de 88
Módulo 8: Programación multimedia y dispositivos móviles
Joya
Página 88 de 88