3.2 Data Pre-processing
3.2.1 Stemming Experiments
En los últimos años los teléfonos móviles han experimentado una gran evolución, desde los primeros terminales, grandes y pesados, pensados sólo para hablar por teléfono en cualquier parte, a los últimos modelos, con los que el término
27
“medio de comunicación” se queda bastante pequeño. Es así como nace Android. Android es un sistema operativo y una plataforma software, basado en Linux para teléfonos móviles. Además, también usan este sistema operativo (aunque no es muy habitual), tablets, Netbooks, reproductores de música e incluso PC. Android permite programar en un entorno de trabajo (framework) de Java, aplicaciones sobre una máquina virtual Dalvik (una variación de la máquina de Java con compilación en tiempo de ejecución). Además, lo que le diferencia de otros sistemas operativos, es que cualquier persona que sepa programar puede crear nuevas aplicaciones, widgets1, o incluso, modificar el propio sistema operativo, dado que Android es de código libre, por lo que sabiendo programar en lenguaje Java, va a ser muy fácil comenzar a programar en esta plataforma.
1.2.6.1 Versiones Disponibles
Android 1.0 Nivel de AP11 (septiembre 2008)
Primera versión de Android. Nunca se utilizó comercialmente, por lo que no tiene mucho sentido desarrollar para esta plataforma.
Android 1.1 Nivel de API 2 (febrero 2009)
No se añadieron apenas funcionalidades, simplemente se fijaron algunos errores de la versión anterior. Es la opción a escoger si queremos desarrollar una aplicación compatible con todos los dispositivos Android. No obstante, apenas existen usuarios con esta versión.
Android 1.5 Nivel de API 3 (abril 2009, Cupcake)
Android Versión 1.5 Características: Widgets, teclado QWERTY virtual, copy & paste, captura de vídeos y poder subirlos a YouTube directamente.
Android 1.6 Nivel de API 4 (diciembre 2009, Donut)
Android Versión 1.6 Características: Añade a la anterior la mejoría de la interfaz de la cámara, búsqueda por voz, y navegación en Google Maps.
Android 2.0 Nivel de API 5 (octubre 2009, Eclair)
Android Versión 2.0/2.1 Características: Mejoras en Google Maps, salvapantallas animado, incluye zoom digital para la cámara, y un nuevo navegador de internet.
28
Android 2.1 Nivel de API 7 (enero 2010, Eclair)
Se considera una actualización menor, por lo que le siguieron llamando Eclair. Destacamos el reconocimiento de voz que permite introducir un campo de texto sin necesidad de utilizar el teclado. También permite desarrollar fondos de pantalla animados. Se puede obtener información sobre la señal de la red actual que posea el dispositivo.
Android 2.2 Nivel de API 8 (mayo 2010, Froyo)
Android Versión 2.2 Características: Incluye hostpot Wifi, mejora de la memoria, más veloz, Microsoft Exchange y video-llamada.
Android 2.3 Nivel de API 9 (diciembre 2010, Gingerbread)
Android Versión 2.3 Características: Mejoras del consumo de batería, el soporte de vídeo online y el teclado virtual, e incluye soporte para pagos mediante NFC2.
Android 3.0 Nivel de API 11 (febrero 2011, Honeycomb)
Android Versión 3.0/3.4 Características: Mejoras para tablets, soporte Flash y Divx, integra Dolphin, multitarea pudiendo cambiar de aplicación dejando las demás en espera en una columna, widgets y homepage personalizable.
Android 3.1 Nivel de API 12 (mayo 2011)
Permite manejar dispositivos conectados por USB (tanto host como dispositivo) Protocolo de transferencia de fotos y video (PTP/MTP) y de tiempo real (RTP).
Android 3.2 Nivel de API 13 (julio 2011)
Optimizaciones para distintos tipos de tableta. Zoom compatible para aplicaciones de tamaño fijo. Sincronización multimedia desde SD.
Android 4.0 Nivel de API 14 (octubre 2011, Ice Cream Sandwich)
Android Versión 4.0 Características: Multiplataforma (tablets, teléfonos móviles y Netbooks), barras de estado, pantalla principal con soporte para 3D, widgets redimensiónales, soporte USB para teclados, reconocimiento facial y controles para PS3. (Manuel Báez, 2012)
29
Android 4.1 Nivel de API 16 (julio 2012, Jelly Bean)
Pasamos al caramelo, Android 4.1 'Jelly Bean' apareció en julio de 2012 con una estética similar, por no decir idéntica a la de ICS. Mejorando y optimizando la plataforma.
Android 4.4 Nivel de API 19 (octubre 2013, KitKat)
Y fue entonces cuando Google sorprendió al mundo entero llegando a un acuerdo con una famosa marca de chocolatinas para lanzar Android 4.4 'KitKat'
Android 5.0 Nivel de API 21 (noviembre 2014, Lollipop)
Nuevo cambio de unidad, pasamos a Android 5.0 Lollipopque como ya ocurrió en el algunas de las transiciones entre versiones ha traído consigo unos muy amplios cambios sobre todo en la interfaz, que se ha redefinido casi al completo para incluir el denominado Material Design.
Android 6.0 Nivel de API 23 (octubre 2015, Marshmallow)
Y cruzamos la raya que separa al pasado y presente, del futuro. De Android 6.0 'Marshmallow' se presentó en el pasado Google I/O
Android 7.0 Nivel de API 24 (julio 2016, Nougat)
Android 7.0 Con más formas de personalizar Android, Nougat es la versión más dulce de nuestro sistema operativo. (Sánchez, 2017)
Ilustración 14. Versiones Android
30 1.2.6.2 SDK de Android
El SDK es un conjunto de herramientas que le permiten a un programador crear aplicaciones para un sistema en concreto, por ejemplo ciertos paquetes de software, plataformas de hardware, computadoras, consolas de video juegos, y sistemas operativos, se seleccionan de acuerdo al sistema, ya que cada uno de ellos carga las Apis del sistema para el cual se está realizando la aplicación. (CCIA, 2014)
1.3 Herramientas de Desarrollo 1.3.1 Unity
Unity 3D es una herramienta que nos ayuda a desarrollar videojuegos para diversas plataformas mediante un editor y scripting para crear videojuegos con un acabado profesional. Esta herramienta está accesible al público en diferentes versiones, gratuita y profesional, cada cual con sus ventajas y limitaciones, evidentemente la más completa es la profesional.
Sin embargo además estas versiones “básicas” existen añadidos que permiten trasladar nuestro desarrollo a dispositivos móviles, evidentemente volviendo a realizar un desembolso para obtener dicha licencia y poder utilizar estas funcionalidades extras en esta herramienta. (Aroca, 2012)
1.3.1.1 Descripción de Unity
El editor de Unity es el centro de la línea de producción, ofreciendo un completo editor visual para crear juegos. El contenido del juego es construido desde el editor y el gameplay se programa usando un lenguaje de scripts. Esto significa que los desarrolladores no necesitan ser unos expertos en C++ para crear juegos con Unity, ya que las mecánicas de juego son compiladas usando una versión de JavaScript, C# o Boo, un dialecto de Python.
El motor también incluye un editor de terrenos, desde donde se puede crear un terreno (como una hoja en blanco), sobre la que los artistas podrán esculpir la geometría del terreno usando herramientas visuales, pintar o texturizar, cubrir de hierba o colocar árboles y otros elementos de terreno importados desde aplicaciones 3D como Blender, 3DS Max o Maya. (Aroca, 2012)
31 1.3.2 Java JDK
Java 7 Development Kit (o JDK) es el Kit de desarrollo oficial del lenguaje de programación Java, uno de los más populares entre los orientado a objetos. En la actualidad, Java 7 Development Kit es el entorno de desarrollo más popular para Java. (Valenzuela, 2013)
1.3.3 Lenguajes de programación 1.3.3.1 C#
C# es un lenguaje elegante, con seguridad de tipos y orientado a objetos, que permite a los desarrolladores crear una gran variedad de aplicaciones seguras y sólidas que se ejecutan en .NET Framework .NET.
Puede usar C# para crear aplicaciones cliente de Windows, servicios web XML, componentes distribuidos, aplicaciones cliente-servidor, aplicaciones de base de datos y muchas, muchas más cosas. Visual C# proporciona un editor de código avanzado, prácticos diseñadores de interfaz de usuario, un depurador integrado y muchas otras herramientas que facilitan el desarrollo de aplicaciones basadas en el lenguaje C# y .NET Framework.
En cuanto el lenguaje orientado a objetos, C# admite los conceptos de encapsulación, herencia y polimorfismo. Todas las variables y métodos, incluido el método Main, el punto de entrada de la aplicación, se encapsulan dentro de las definiciones de clase. Una clase puede heredar directamente de una clase primaria, pero puede implementar cualquier número de interfaces. Los métodos que invalidan los métodos virtuales en una clase primaria requieren la palabra clave override como una manera de evitar redefiniciones accidentales. En C#, un struct es como una clase sencilla; es un tipo asignado en la pila que puede implementar interfaces pero que no admite herencia.
El proceso de compilación de C# es simple en comparación con C y C++ y más flexible que en Java. Librería de desarrollo de Realidad Aumentada para Android no hay ningún archivo de encabezado independiente y ningún requisito de declaración de métodos y tipos en un orden en particular. Un archivo de código
32
fuente de C# puede definir cualquier número de clases, structs, interfaces y eventos. (Microsoft, 2015)
1.3.4 Librería de desarrollo para Android