Vous êtes sur la page 1sur 113

Pgina |1

MEJORAMIENTO DEL RENDIMIENTO DEL PERSONAL


ATRAVES DEL EMPLEO DE UN PROGRAMA QUE
MEJORA LA CONCENTRACION

Rosa carlora rodriguez mendoza


Carlos adrian tellez justiniano
Dayane Alexandra hurtado ribera
Gnesis Andrea arce lopez

Escuela militar de ingeniera


Santa cruz 2017

Notas del autor


Estudiantes de la carrera de civil escuela militar de ingeniera
unidad academica de santa cruz.
La informacin para este documento deben ser enviados a tercer
semtre de civil de la escuela militar de ingeniera de la unidad
academica de santa cruz, barrio aeronutico y tercer anillo
interno.

Email:ros_yta13@hotmail.com
Pgina |2

MEJORAMIENTO DEL
RENDIMIENTO DEL PERSONAL
ATRAVES DEL EMPLEO DE UN
PROGRAMA QUE MEJORA LA
CONCENTRACION
Pgina |3

Dedicatoria

Con mucho amor y dedicacin para todos nuestros usuarios


Pgina |4

Agradecimiento

A: Dios por iluminarnos y darnos la fortaleza, la paciencia y la sabidura necesaria para

lograr superar esta etapa de nuestras vidas con xito.

A: Nuestros padres por apoyarnos de manera incondicional y ayudarnos a alcanzar esta

meta

A: Nuestros compaeros por su comprensin y participacin como personas sometidas

a prueba.

A: Las personas que nos brindaron su apoyo, consejos y conocimientos

incondicionalmente.
Pgina |5

Resumen

En este presente trabajo se propone el Mejoramiento del rendimiento del personal

atraves del empleo de un programa que mejora la concentracin con el propsito de

desarrollar las capacidades del personal.


Pgina |6

Summary :
This work proposes the improvement of staff performance through an application that

improves concentration for the purpose of developing staff skills.


Pgina |7

ndice

1. INTRODUCCIN............................7
2. ANTECEDENTES.............................8
3. PLANTEAMIENTO DEL PROBLEMA..............................22
4. OBJETIVOS.23
4.1. OBJETIVO GENERAL..............................23
4.2. OBJETIVO ESPECIFICO.23
5. JUSTIFICACIN.23
6. HIPTESIS...24
7. OPERACIONALIZACION DE VARIABLES DE LA HIPTESIS24
8. MATRIZ DE CONSISTENCIA....25
9. MARCO TERICO...27
9.1. QUE ES VISUAL JAVA28
9.1.1. CMO FUNCIONA EL VISUAL JAVA32
9.2. RULETA DE NEWTON 64
9.3. HIPNOSIS MEDIANTE COLORES .66

10.MARCO PRACTICO .....68

10.1. DIAGRAMA DE FLUJO Y LENGUAJE ...........68


10. CONCLUSIONES ...101
11. RECOMENDACIONES ....101
ANEXOS 114
BIBLIOGRAFA
Pgina |8

1. INTRODUCCIN

La competencia global ha alterado significativamente el campo de juego para las compaas,

forzndolas a repensar sus estrategias y necesidades empresariales. Especialmente las relacionadas

con la funcin y el valor de los recursos humanos. Al ya no contarse con la orientacin puramente

funcional del pasado, los ejecutivos de alto rango esperan que los recursos humanos les sirva en

una funcin empresarial que est ligada al xito de su gestin. Los ejecutivos de recursos humanos

indican que el motivo ms importante de la empresa para el cambio es el de alinear a la Funcin

de RRHH como una funcin empresarial estratgica, dado que la globalizacin del mercado ha

creado una intensa competencia continua y una tremenda presin sobre el costo y la calidad. Es

decir, una fuerza laboral bien capacitada y motivada, es la clave del xito. Lo que se requiere para

tener xito el da de hoy lo proporciona la funcin de RRHH.

Despus de ver la situacin de bastantes empleados tomamos la decisin de realizar una aplicacin

para que de esta manera todos los usuarios que tiene un bajo rendimiento laboral por causa de sus

problemas, as puedan tener un mejor desarrollo laboral

2. ANTECEDENTES
Pgina |9

Era de la informacin

Es el perodo que comenz en el inicio de la dcada de 1990. Es la poca en que estamos viviendo

actualmente. Sus caractersticas principales son los cambios, que se tornaron rpidos,

imprevisibles, turbulentos e inesperados. La tecnologa de la informacin integrando la televisin,

el telfono y la computadora trayendo desdoblamientos imprevisibles, transformando el mundo en

una verdadera aldea global. Un impacto comparable al de la Revolucin Industrial en su poca. La

informacin pas a cruzar el planeta en milsimos de segundo. La tecnologa de la informacin

favoreci las condiciones bsicas para el surgimiento de la globalizacin de la economa: la

economa internacional se trastorn en una economa mundial y global. La competitividad se torn

intensa y compleja ante las organizaciones. El voltil mercado de capitales pas a migrar de un

continente a otro en segundos, en procura de nuevas oportunidades de inversiones, aunque

transitorias.

Los cambios y transformaciones en la funcin de Recursos

Humanos

Las tres eras a lo largo del siglo XX, la industrializacin clsica y neoclsica y la era de la

informacin, conducirn a diferentes abordajes sobre cmo lidiar con las personas dentro de las

organizaciones. En esas tres diferentes eras, el rea de RH pas por tres etapas muy distintas:
P g i n a | 10

relaciones industriales, recursos humanos y gestin de personas. Cada abordaje est ajustado a los

patrones de su poca, a la mentalidad predominante y a las necesidades de las organizaciones.

a) Personal / Relaciones Industriales

En la industrializacin clsica surgen los antiguos departamentos de personal y, posteriormente,

los departamentos de personal eran rganos destinados a hacer cumplir las exigencias legales el

empleo: como admisin a travs del contrato individual, registro en la cartera de trabajo, clculo

de las horas trabajadas para pago de los salarios, aplicacin de medidas disciplinarias por el no

cumplimiento del contrato, clculo de vacaciones, etc. Ms adelante, los departamentos de

relaciones industriales asumen el mismo papel agregando otras taras como las relaciones de la

organizacin con los sindicatos y la coordinacin interna con los dems departamentos para

enfrentar problemas sindicales de contenido reivindicatorio. Los departamentos de relaciones

industriales se limitaron a una actuacin operacional y burocrtica, recibiendo instrucciones de la

cpula sobre cmo proceder. Las personas son consideradas apndice de las mquinas y meras

proveedoras de esfuerzo fsico y muscular predominando el concepto de mano de obra.

b) Recursos Humanos

En la industrializacin neoclsica, surgen los departamentos de recursos humanos que sustituyen

los antiguos departamentos de relaciones industriales. Adems de las tareas operacionales y


P g i n a | 11

burocrticas, los llamados ARH desarrollan funciones operacionales y tcticas, como rganos

prestadores de servicios especializados. Cuidan del reclutamiento, seleccin, entrenamiento,

evaluacin, remuneracin, higiene y seguridad del trabajo y de relaciones del trabajo y sindicales,

con variadas dosis de centralizacin y monopolio de esas actividades.

c) Gestin de Personas

En la era de la informacin, surgen los equipos de gestin de personas, que sustituyen los

departamentos de recursos humanos. Las tareas operacionales y burocrticas son transferidas para

terceros a travs de la tercerizacin, en cuanto las actividades tcticas son delegados a los gerentes

de lnea en toda organizacin, los cuales pasan a ser los gestores de personas. Los equipos de RH

proporcionan consultora interna, para que el rea pueda asumir actividades de orientacin global

mirando el futuro y el destino de la organizacin y de sus miembros. Las personas de agentes

pasivos que son administrados y controlados rgidamente, pasan a construir agentes activos e

inteligentes que ayudan a administrar los dems recursos organizacionales. La vuelta es fenomenal.

Las personas pasan a ser consideradas como socios de la organizacin y que toman decisiones

respecto de sus actividades, cumplen metas y alcanzan resultados previamente negociados y que

sirven al cliente en el sentido de satisfacer sus necesidades y expectativas.

En la era de la informacin, encontrar a las personas indicadas dej de ser un problema y pas a

ser la solucin para las organizaciones. Ms que eso, dejo de ser un desafo y pas a ser la ventaja

competitiva para las organizaciones exitosas.


P g i n a | 12

Las tres etapas de la evolucin de los RRHH antes descritas nos indica que la funcin se est

ajustando rpidamente a los nuevos tiempos. Cmo? De una manera amplia e irreversible. Ella

est dejando de ser RRHH para transformarse en Gestin de Personas. De un rea cerrada,

hermtica, monopolista y centralizadora que caracterizaba en el pasado, la moderna Funcin de

RRHH se est tornando un rea abierta, amigable, participativa y descentralizadora y los

criterios de evaluacin de desempeo, as como su proceso de gestin de evaluacin, han cambiado

en su perspectiva y contenido.

Metas de la funcin de RRHH

Alta calidad / productividad / satisfaccin del cliente

Relacin de los recursos humanos con la estrategia de la organizacin.

Retener gente calificada

Estructurar una fuerte cultura organizacional

Alcanzar ndices de satisfaccin altos; y

Desarrollo y entrenamiento gerencial

Tener un buen lugar de trabajo

Objetivos de la funcin de Recursos Humanos

Productividad / Calidad / Servicio al cliente


P g i n a | 13

Fuerte Cultura Organizacional

Enlace de los Recursos Humanos con la Empresa

Satisfaccin de los Empleados

3) Esquema del Modelo de la funcin de RRHH.

ACTUALMENTE CAMBIAR A:
ELEMENTOS

Naturaleza de los Responsable Estratgico


programas y funciones de Operacional Proactivo
Recursos Humanos Interno Social

Creacin de las estrategias El departamento de El departamento de


y polticas de Recursos Recursos Humanos tiene Recursos Humanos y
Humanos la responsabilidad total los gerentes de lnea
comparten la
responsabilidad.

Organizacin de la Defensor de los Socio del negocio


funcin de Recursos empleados Estructura flexible
Humanos Estructura funcional Reporta a lnea
Reporta como staff

Perfil de los Profesionales Hacen carrera en Rotacin. Diversas


de Recursos Humanos Recursos Humanos Experiencias
Especialistas Generalista
P g i n a | 14

Experto en finanzas

Experiencia financiera
limitada

Enfocado a lo actual Enfocado al futuro


Enfoque Manejo de un idioma Varios idiomas

MEDIDAS INTERNAS Y EXTERNAS

Los ejecutivos de relaciones industriales escriben tanto las medidas internas como las externas para

evaluar el desempeo de relaciones industriales. Hay diferentes mtodos identificados por ellos y

el grado al que intentan usarlos. Las mediciones clave que se usan por las compaas competitivas

reflejan medidas especficas a la participacin: clientes, empleados, la comunidad y el gobierno.

La satisfaccin del cliente es por mucho la medida externa de efectividad que se usa ms

frecuentemente. Interinamente, el desempeo de la capacidad central y la satisfaccin de los

empleados se indican como las medidas primarias.

El vicepresidente de alto rango de relaciones industriales de una importante empresa

norteamericana de telecomunicaciones concluye: Las medidas de contabilidad tradicional slo le


P g i n a | 15

dicen dnde ha estado una organizacin; las medidas no financieras le dicen hacia dnde se dirige.

Se desarrollaron cinco preguntas de diagnstico que se pueden usar como una herramienta de

evaluacin para determinar la efectividad relativa y el valor de los servicios de relaciones

industriales de recursos humanos de los resultados de las encuestas y entrevistas.

Cmo contribuyen nuestros productos y servicios de relaciones industriales a la

ventaja competitiva que proporciona nuestra gente?

Cmo alentamos la innovacin y la creatividad de nuestros empleados y dentro de

las propias relaciones industriales?

Cmo servimos como agentes de cambio de tal manera que se ayude a nuestros

empleados a administrar el cambio?

Cul es nuestra contribucin a la sociedad empresarial con los gerentes de alto rango,

gerentes de lnea y vendedores y proveedores externos?

Cmo afecta relaciones industriales a la calidad de trabajo y de vida de nuestros

empleados?

Existe una gran variedad de medidas de desempeo entre ellos se pueden mencionar a las

medidas claves de desempeo, las mismas que aparecen en la siguiente relacin:

Calidad de resultado.

Satisfaccin/retencin del cliente

Rotacin del empleado

Capacitacin del empleado


P g i n a | 16

Inversiones en investigacin y desarrollo

Productividad de investigacin y ventas

Desarrollo de productos nuevos

Crecimiento de mercado

A continuacin se presenta un cuadro que explica un cambio de paradigma de los RRHH, en la

ultima dcada.

DE PARA

Orientacin funcional Orientacin empresarial


Enfoque interno Enfoque del cliente
Reactivo Proactivo
Creador de reglas Consultor
Impulsado a la actividad Impulsado al valor
Enfoque en actividades Enfoque en la efectividad
Perspectiva estrecha Perspectiva amplia
Enfoque tradicionales Pensando fuera de la caja
Desconfianza mutua Sociedad
Toma de decisiones Toma de decisiones
centralizada descentralizada
Una solo toalla para todos Programas hechos a la medida

Fuente: La nueva gestion de personas y su evaluacion de desempeo en empresas competitivas. Bedoya

Sanchez, Enrique Osvaldo.


P g i n a | 17

Paleta de newton

La ruleta de Newton es un mecanismo circular giratorio, conformado por colores del espectro

lumnico que se usa para demostrar la investigacin realizada por Isaac Newton en el ao 1666 que

detalla cmo se descompone un rayo de luz en violeta, azul, celeste, verde, amarillo, naranja y rojo

al momento de pasar por prisma que es un cuerpo cuyos lmites lo establecen un par de polgonos

iguales y planos, dispuestos de forma paralela, y diversos paralelogramos, de acuerdo a la cantidad

de lados que dispongan sus bases.

Con esta investigacin se dio un cambio en la forma que se crea que los rayos de luz estaban

compuestos ya que en el XVII se utilizaba la idea de Descartes de que la luz estaba compuesta por

pequeos corpsculos, este ltimo haba intentado descomponer la luz, pero solo obtuvo los colores

rojo azul.

Newton utilizo un prisma de vidrio que era un elemento muy econmico. En una habitacin en

total oscuridad y dejo pasar un rayo de luz por un agujero en la ventana. Coloco el prisma delante

del rayo de luz, de esta forma lo atravesaba y reflejaba la luz descompuesta en la pared opuesta a

un aproximado de seis metros.

Para comprobar que era la luz que se descompona en colores y no as el prisma sea el que de las

tonalidades a esta. Utilizando una pantalla con un agujero para aislar el color y luego utilizando un

segundo prisma hacia reflejar en otra pared comprobando que solo cambiaba el ngulo y no el

color.
P g i n a | 18

1. PLANTEAMIENTO DEL PROBLEMA

Bsqueda de un sistema para que los usuarios despejen sus problemas. Son frecuentes los casos de

falta de concentracin durante el estudio. Entre otros motivos, esto puede ser lao problemas de los

estudiantes que no permiten el periodo laboral. Entre otros motivos esto puede ser un problema

para el trabajador que no permiten eldesarrollo laboral satisfactoriamente. Sin embargo, todo

usuarios debera saber que la falta de concentracinen su trabajo vuelve ms complicado realizaelo

eficientemente y con ello se alargan las sesiones de este o no se tiene la remuneracin deseada.

La concentracin y la atencin son fundamentales. Dentro de este complejo proceso, estos ltimos

conforman un peldao inicial sobre el cual va a hacerse posible el realizar la tarea con eficiencia y

competencia. Sin estas capacidades, un trabajador nunca podr tener una forma provechosa de

trabajo ya que invertira varias horas para realizar el trabajo nuevamente y que resulta ser ineficaz

ya que solo se llega a hacerlo de forma mecnica , lo cual lleva a cometer errores.

Estos problemas, que afectan considerablemente el rendimiento laboral, muchas veces se deben a

factores externos, tales como un inadecuado lugar de estudio o una inadecuada alimentacin. En

estos casos, el problema se puede revertir mejorando nuestros hbitos o tambin a travs de algunos

estmulos para mejorar la concentracin.

3. OBJETIVOS
P g i n a | 19

3.1.1. OBJETIVO GENERAL


Elaborar un programa para la superacin de problemas de los usuario

3.1.2. OBJETIVOS ESPECFICOS


Captar gente calificada

Conformar una fuerza de trabajo flexible

Procesos de gestin de evaluacin de desempeo en escenarios competitivos

4. JUSTIFICACIN

Vimos la necesidad de investigar debido a que un gran porcentaje de personas sufre de estrs

durante sus actividades cotidianas. Por ello se realiz mediante un leguaje de programacin esta

aplicacin que va a ayudar a que el usuario puedan relajarse en cualquier momento del da.
P g i n a | 20

1. HIPTESIS

Mediante el uso de la aplicacin RAGD el personal lograra disipar sus problemas por un lapso

de tiempo determinado, de aproximadamente una hora, el personal podra enfocarse en su trabajo

y realizar de una manera eficaz un mejor al entrar a un pequeo estado de hipnosis lograra

olvidar a los pocos minutos, ya que su atencin est centrada en la pantalla de la aplicacin, lo

que permite olvidar el estrs y los problemas para tener una mejor desarrollo laboral.

As el personal tendr un mejor rendimiento en el mbito laboral, esto significa que el personal

en la empresa empezara el da con una perspectiva de vida positiva, as tendr una versin sana,

manejable y productiva de la vida.

1. OPERACIONALIZACION DE VARIABLES DE

LA HIPTESIS

Variable Independiente: Aplicacin con la cual el usuario olvidara sus problemas,


empleando la paleta de Newton.
Variable Dependiente: Disipar su problema (el usuario).
P g i n a | 21
P g i n a | 22

1. MARCO TERICO
P g i n a | 23

1.1. HISTORIA DE JAVA

Naci en 1991 Gracias a James Gosling como un proyecto de investigacin para crear un lenguaje de

programacin llamado "oak" ("roble" en espaol), en su poca estaba destinado a solventar un problema de

comunicacin entre dispositivos de consumo como Videograbadoras, televisores, etc.

Estos expertos queran integrar CPU`s a estos dispositivos de consumo para que pudiesen compartir las mismas

mejoras, pero fue un intento fracasado, cambiaron su objetivo a la plataforma de Internet que estaba madurando

en esa poca y usaron el lenguaje para mejorar contenido multimedia mediante implementacin de (applets) y

as fue que se implement el lenguaje Java.

En 1994 surge internet, Sun ve una nueva posibilidad para el Green Project y crea un lenguaje para construir

aplicaciones web basada en Java . El 23 de mayo de 1995 el lenguaje Java es oficialmente

lanzado en la SunWorld Expo 95 con la versin JDK 1.0 alpha. Netscape apuesta a la idea e inicia la

implementacin de interpretadores Java en su navegador, posibilitando la creacin de los famosos Java

applets. A partir de esta etapa Java comienza a crecer mucho.

Desde 1998 hasta hoy la tecnologa evolucion mucho, teniendo uno de los mayores repositorios de

proyectos libres del mundo, java.net. En 1999 surgi la plataforma para desarrollo y distribucin corporativa

bautizada Java 2 Enterprise Edition (J2EE) y la plataforma Java 2 Mobile Edition (J2ME) para dispositivos

mviles, mviles, PDAs y otros dispositivos con recursos limitados.

Actualmente Java es una de los lenguajes ms usados y sirve para cualquier tipo de aplicacin, entre ellas:

web, desktop, servidores, mainframes, juegos, aplicaciones mviles, chips de identificacin, etc.
P g i n a | 24

4.1. QU ES EL LENGUAJE JAVA

Al hablar de Java, nos referimos a un lenguaje de programacin y a una plataforma. Esta plataforma informtica

tiene como propsito ofrecer a los diseadores de aplicaciones el escribir su programa solo una vez para que el

mismo pueda ser ejecutado en cualquier dispositivo, eliminando la necesidad de reprogramarlo para que pueda

ejecutarse en otro.

Java es bien nombrado en el mundo de la tecnologa desde hace ya mucho tiempo, tiene grandes influencias

desde programas muy pequeos (scripts), aplicaciones complejas (desktops), aplicaciones corporativas, sitios

web, aplicaciones mviles, dispositivos embebidos, lnea blanca o electrodomsticos y la ms reciente en Blu-

ray, como vern est presente en todos lados.

Esto identifica a Java no solo como un solo lenguaje de programacin sino toda una tecnologa cuyo lmite es

la imaginacin del programador. Java como lenguaje es uno de los primeros lenguajes estructurados como

orientado a objetos o dicho en siglas POO (viene de Object Oriented Programming en ingles "OOP").

4.2. CARACTERISTICAS PRINCIPALES DEL LENGUAJE JAVA

Desde su creacin Gosling decidi que Java fuera robusto, estable y orientado a objetos, con lo cual estableci

una serie de reglas de diseo para su lenguaje:

Debe ser Orientado a Objetos ( POO)..

Debe ser Distribuido.

Debe ser Simple y de fcil lectura para un programador.

Debe ser Multihilo (Multi-Threats).

Debe ser seguro y confiable.


P g i n a | 25

Debe ser independiente de plataforma.

Explicaremos mejor que significan cada uno de los principios que persigue java o cualquiera de las

implementaciones que hay en el mercado (es correcto, hay mas adems de la oficial).

Java es sensible a maysculas y minsculas. Por convencin los nombres de las clases

comienzan con mayscula y los mtodos y objetos con minscula.

Los comentarios en Java pueden tener varios estilos:

/* comentario */

// comentario

/** comentario extendido

hasta que se encuentre */

Java ignora los comentarios y espacios en blanco. La disposicin del cdigo es ms

conveniencia de visualizacin que exigencia lexicogrfica.

Las sangras y mtodos de presentacin son herencia del C y C++.

Java utiliza; como separador de posiciones y {} como agrupador de posiciones.

Los nombres de los identificadores siguen las siguientes reglas:

Un identificador no puede ser una palabra clave

Un nombre debe empezar con una letra, subrayado _ o signo $

Despus de la primera letra se puede utilizar cualquier carcter, a excepcin de aquellos

reservados para uso del lenguaje (., + ...)

La convencin de nombres ha de ser coherente y aportar significancia al contexto, as:


P g i n a | 26

Emplear sustantivos para los nombres

Emplear verbos para las acciones y mtodos.

Letras maysculas iniciales para nombres de clases.

Minsculas para nombres de mtodos.

Maysculas para distinguir entre palabras en nombres compuestos.

Lo anterior es practica en la OOP, pero el programador podr generar las convenciones

oportunas, pero con significado y valor aadido.

4.3. MQUINA VIRTUAL

Java es multiplataforma. Cuando un programa Java es compilado un cdigo intermediario es generado,

llamado bytecode. Este bytecode es interpretado por las Mquinas Virtuales Java.

(JVMs) para la mayora de los sistemas operativos. La mquina virtual es la responsable por crear un

ambiente multiplataforma, o sea, si alguien construye un sistema operativo nuevo, basta crear una mquina

virtual java que traduzca los bytecodes para cdigo nativo y listo! Todas las aplicaciones java estarn

corriendo sin problemas.

Entre otras funciones, la mquina virtual java tambin es responsable por cargar de forma segura todas las

clases del programa, verificar si los bytecodes adhieren a la especificacin JVM y si no violan la integridad y

la seguridad del sistema.

De un cdigo Java, que est en un archivo .java, el compilador java genera el bytecode: un archivo class.

Despus de eso una mquina virtual java ejecuta el bytecode y corre el programa.
P g i n a | 27

1.1. COMPILADOR E INTERPRETADOR JAVA

Como existe un programa traduciendo un cdigo cada ejecucin del sistema, podra-decirse que Java siempre

ser ms lento que los lenguajes que generan cdigo nativo del sistema operativo como Delphi, VB o C++.

Esto era hasta 1996 cuando Sun cre el compilador Just-in-Time (JIT) que analiza y borra cdigos

innecesarios aumentando considerablemente la velocidad de la ejecucin. Actualmente Java es ms rpido

que el propio C en varios aspectos.

1.2. EDICIONES DE JAVA

Java 2 Standard Edition (J2SE):

Es la tecnologa Java para computadora personales, notebooks y arquitecturas con poder de procesamiento y

memoria considerables. Varias APIs acompaan esta versin y otras tantas pueden ser bajadas opcionalmente

de la web de Sun . Es con ellas que la mayora de las aplicaciones son construidas y ejecutadas.

La J2SE posee dos divisiones: Java Development Kit (JDK) o Standard Development Kit

(SDK): un kit para desarrollo en Java y debe ser instalado slo por los desarrolladores, por poseer

herramientas para tal tarea.

Java Runtime Edition JRE: una versin ms liviana de JDK pues est preparada para el ambiente

de ejecucin, o sea, esta versin ejecutar los sistemas construidos con SDK..
P g i n a | 28

Java 2 Mobile Edition (J2ME): Es la tecnologa Java para dispositivos mviles con limitaciones

de memoria o procesamiento. Posee APIs bien simples y livianas para economizar espacio,

memoria y procesamiento.

Son utilizadas para sistemas a ejecutar en dispositivos mviles, palm tops, pocket pcs, smartphones, javacards

y otros dispositivos. J2ME se divide en dos grupos de bibliotecas:

- Connected Limited Device Configuration (CLDC): Para mviles y smartphones, que son ms limitados

- Connected Device Configuration (CDC): Para Palmtops y Pocket pcs y algunos dispositivos ms poderosos.

Java 2 Enterprise Edition (J2EE): Es la tecnologa Java para aplicaciones corporativas que

pueden estar en internet o no. Posee un gran nmero de APIs donde la seguridad es la principal

preocupacin.

QU ES EL LENGUAJE JAVA

Al hablar de Java, nos referimos a un lenguaje de programacin y a una plataforma. Esta plataforma informtica

tiene como propsito ofrecer a los diseadores de aplicaciones el escribir su programa solo una vez para que el

mismo pueda ser ejecutado en cualquier dispositivo, eliminando la necesidad de reprogramarlo para que pueda

ejecutarse en otro.

Java es bien nombrado en el mundo de la tecnologa desde hace ya mucho tiempo, tiene grandes influencias
desde programas muy pequeos (scripts), aplicaciones complejas (desktops), aplicaciones corporativas, sitios
web, aplicaciones mviles, dispositivos embebidos, lnea blanca o electrodomsticos y la ms reciente en Blu-
ray, como vern est presente en todos lados.

Esto identifica a Java no solo como un solo lenguaje de programacin sino toda una tecnologa cuyo lmite es
la imaginacin del programador. Java como lenguaje es uno de los primeros lenguajes estructurados como
orientado a objetos o dicho en siglas POO (viene de Object Oriented Programming en ingles "OOP").
P g i n a | 29

4.4. TIPOS DE LENGUAJES JAVA

LENGUAJE ORIENTADO A OBJETOS

Uno de los principios de un lenguaje moderno no es hacer cdigos simples, sino implementar objetos. Un objeto
es un fragmento de cdigo que puede interactuar con otro fragmento de cdigo para resolver un problema, no
tiene una estructura orientada a procedimientos.

Un lenguaje orientado a procedimientos es aquel que el tal cual se escribe el cdigo as mismo el compilador lo
leer lnea a lnea. Un lenguaje orientado a objetos estructura todo lo que necesita sin importar el orden en que
se escribe ya que cuando un objeto necesita de otro, este toma su informacin la ejecuta y regresa la respuesta

Por ejemplo, un programa para calcular salario tiene un objeto llamado salario el cual est esperando del objeto
empleado el costo por hora y horas trabajadas, cuando empleado llama al objeto salario este se ejecuta, realiza
el clculo programado y retorna el salario al objeto empleado.

En otro blog describir ms detallado las caractersticas y estndares de interpretacin y aplicacin usados en
cualquier lenguaje orientado a objetos.

LENGUAJE DISTRIBUDO

Java dio paso a la introduccin de tecnologas de redes distribuidas como lo son la Invocacin de Mtodos
Remotos "RMI" (Remote Methond Invocation por sus siglas en ingles), CORBA (Common Request Broker
Architecture) y URL (Universal Resource Locator).

El dinamismo de java permite crear pequeas partes de cdigo que pueden ser fcilmente invocadas desde
cualquier computadora en internet y ser ejecutadas en esa computadora.
P g i n a | 30

LENGUAJE SIMPLE

Java es simple porque le fueron retirados elementos de programacin complejos e inseguros como lo son los
punteros a direcciones de memoria, una prctica mal utilizada en otros lenguajes. En su lugar permite hacer

referencias a objetos y tiene una funcin llamada reciclaje de memoria, la cual destruye los objetos que ya fueron
usados y ya no se hacen ms referencias.

LENGUAJE MULTIHILO

Multihilo es la forma de describir el proceso de ejecutar varias tareas diferentes al mismo tiempo, por ejemplo:
Consultar una base de datos, reproducir en pantalla una interfaz de usuario, imprimir un reporte. Esto hace un
mejor uso de los recursos del sistema.

LENGUALE SEGURO Y ESTABLE

El lenguaje java es seguro porque el entorno donde se ejecuta aplica medidas de seguridad para proteger el
cdigo de posibles ataques:

Prohbe el acceso a memoria mediante punteros, usa referencias en ese caso.

Impide que los programas distribuidos como applets, hagan lectura y escritura de discos duros de un equipo.

Verifica que el cdigo creado sea vlido

Implementa "Firmas Digitales" as la persona o equipo que est recibiendo el cdigo puede verificar su
legitimidad.

LENGUAJE INDEPENDIENTE DE PLATAFORMA


P g i n a | 31

Desde los inicios de la computacin las plataformas existentes tuvieron grandes variaciones, hoy da tenemos
pocas pero las ms grandes son Windows, Linux, Unix, Mac y tambin tenemos arquitecturas de computacin
32 bits y 64 bits. Debido a estas diferencias cada sistema operativo se comporta distinto, tiene

distintas necesidades y recursos y normalmente se tendra que crear un cdigo especfico para cada plataforma
y arquitectura.

Sin embargo Java elimina este problema ya que un paquete de java tiene todos los recursos que necesita el
sistema operativo para ejecutar el cdigo java sin importar la plataforma que sea, de este modo el programador
solo se preocupa por crear su cdigo ya que sea ledo y ejecutado en cualquier CPU.

La forma en que Java lo hace es mediante un intrprete llamado Mquina Virtual Java o JVM (Java Virtual
Machine en ingles). Java tiene disponible una JVM para cada plataforma en que desee ejecutar cdigo Java, sin
embargo el cdigo java necesita adems del JVM unas bibliotecas que contengan clases y objetos especficos
para la plataforma donde se va a ejecutar, esta combinacin de JVM y bibliotecas es lo que se conoce como el
Entorno de Ejecucin de Java JRE, actualmente estamos en la versin 6.

Cuando Java comenz a caminar lo hizo con su JSE 1.0

1.1. PRODUCTOS DE JAVA

Vendiendo del mercado al que se desea dirigir y del objetivo del software que va a crear hay un kit de desarrollo,
entornos de emulacin para dispositivos de consumo ( como celulares por ejemplo), estas implementaciones
de Java la encontramos en tres diferentes productos:

Java JSE: Tambin llamada Java Standard Edicin. Permite desarrollar applets y aplicaciones que se ejecutaran
en navegadores web o en computadoras de trabajo comunes, " aplicaciones sencillas como un block de notas".

Java JEE: Tambin llamada Java Enterprise Edition. Est orientado a aplicaciones empresariales distribuidas,
ambientes cliente-servidor " aplicaciones completas como un correo electrnico".

Java JME: Tambin llamada Java Micro Edition. Est orientado a aplicaciones con recursos limitados como
dispositivos mviles, es usada para crear aplicaciones pequeas o juegos.
P g i n a | 32

1.2. ANDROID STUDIO

Conocemos a Android como uno de los sistemas operativos que lideran el mercado de la tecnologa
de comunicacin, enfocado en materia de telefona celular. Sin mucho que decir sobre esto, es claro
entonces que la demanda por usuario a las virtudes que ofrece el sistema, hablando ms
especficamente de la adquisicin de aplicaciones para mejorar o Personalizar nuestro equipo
Android, son cada da ms exigentes por parte del usuario, y a su vez el alto grado de competencia
que existen entre las mismas exige a sus desarrolladores la tarea de innovar o mejorar an ms la
composicin de cada una. Por ello, y asociado al tema de la complejidad que puede existir en la
programacin de una aplicacin, el mismo sistema Android ofrece un kit de herramientas
apropiado e indicado para el desarrollo de dichas aplicaciones. Tal kit o herramientas componen lo
que se conoce como Android Studio. Este es el IDE oficial de Android para el desarrollo de
aplicaciones. Basado en IntelliJ IDEA; un entorno o ambiente de desarrollo para programas, que
posee potentes herramientas de edicin de cdigo. Se puede decir que en

cuanto a su anlisis de cdigo el mismo destaca los errores de forma inmediata, para as dar una
solucin ms rpida de estos. Como herramientas integradas para el desarrollo o construccin de
programas en Android, contiene una interfaz de usuario que es construida o diseada previamente,
con variados modelos de pantalla, donde en ella los elementos existentes pueden ser desplazados.
Adicionalmente se abarca depuradores para emuladores y la posibilidad de trabajo con Logcat.
IntelliJ IDEA soporta variados leguajes que se basan en JVM; Java (por ello la J de IntelliJ),
Clojure, Groovy, Kotin y Scala. Ms un soporte para Maven y Gradle. Con esta tecnologa,
asociada a Android Studio, las posibilidades son cmodas Para la creacin y construccin de
aplicaciones para este sistema.

Android Studio posee distintos componentes que ayudan a la tarea de la construccin de


aplicaciones; sistema de construccin basado en Gradle, la construccin de variantes y mltiples
P g i n a | 33

archivo APK, como tambin plantillas de cdigo que ayudan a la creacin de aplicaciones. Un
completo editor de diseo con soporte para la edicin de arrastrar y soltar el

tema elementos. Facilidad de uso y compatibilidad de versiones, Cdigo encoge con ProGuard y
consumo de recursos cada vez menor con Gradle. Por ltimo, soporte integrado para Google Cloud
Platform, lo que hace ms fcil de integrar Google mensajera en la nube y la App Engine.

En cuanto al desarrollo del flujo de trabajo, Android Studio posee un conjunto de herramientas
encargadas, Adicionando a eso el posible acceso desde la lnea de comandos las herramientas
SDK. Lo importante de todo esto es que, Android Studio ofrece comodidad para los
desarrolladores, ya que desde l es posible invocar, durante el desarrollo de aplicaciones, las
herramientas necesarias como una forma ms gil de trabajo.

Entre las fases de desarrollo que abarcan la realizacin de aplicaciones en Android Studio
encontramos cuatro etapas. La primera es la configuracin de entorno; durante esta fase se instala
y configura el entorno de desarrollo. Adems se realiza la conexin a los elementos en donde se
pueden realizar la instalacin de las app, y se crean dispositivos virtuales Android (AVDS).

La segunda fase abarca la Configuracin del Proyecto y Desarrollo; durante esta se realiza la
configuracin del proyecto y el desarrollo del mismo. Hablamos de la creacin de mdulos que
contengan recursos para la aplicacin y archivos de cdigo fuente. La tercera fase comprende las
pruebas, depuracin y construccin de la aplicacin; A esta altura se construye el proyecto en un
paquete (s) depurable .apk que se puede instalar y ejecutar en el emulador o en un dispositivo con
Android. Se utiliza un sistema de construccin basado en Gradle. Con este se proporciona
flexibilidad, variantes de construccin a la medida y la resolucin de dependencias. En el caso de
usar otro IDE se puede desarrollar el proyecto usando Gradle, y a su vez, instalarlo en un dispositivo
que use ADB. Posteriormente se hace la depuracin de la aplicacin a travs de los mensajes de
supervisin de dispositivos, ms un dispositivo de registro de Android (Logcat) junto con la idea
de IntelliJ. Adems, Se puede usar un depurador JDWP compatible, adicionando las herramientas
P g i n a | 34

de depuracin y de registro que se proporcionan con el SDK de Android. Ya al finalizar, se usan


las herramientas de prueba SDK de Android para las pruebas a la aplicacin.

PRINCIPALES CARACTERSTICAS QUE INCLUYE ANDROID STUDIO:

Soporte para programar aplicaciones para Android Wear (sistema operativo para

dispositivos corporales como por ejemplo un reloj).

XHerramientas Lint (detecta cdigo no compatible entre arquitecturas diferentes o cdigo

confuso que no es capaz de controlar el compilador) para detectar problemas de

rendimiento, usabilidad y compatibilidad de versiones.

XUtiliza ProGuard para optimizar y reducir el cdigo del proyecto al exportar a APK (muy

til para dispositivos de gama baja con limitaciones de memoria interna).

XIntegracin de la herramienta Gradle encargada de gestionar y automatizar la

construccin de proyectos, como pueden ser las tareas de testing, compilacin o

empaquetado.

XNuevo diseo del editor con soporte para la edicin de temas.

XNueva interfaz especfica para el desarrollo en Android.

XPermite la importacin de proyectos realizados en el entorno Eclipse, que a diferencia de

Android Studio (Gradle) utiliza ANT.

XPosibilita el control de versiones accediendo a un repositorio desde el que poder descargar

Mercurial, Git, Github o Subversion.


P g i n a | 35

XAlertas en tiempo real de errores sintcticos, compatibilidad o rendimiento antes de

compilar la aplicacin.

XVista previa en diferentes dispositivos y resolucion

Integracin con Google Cloud Platform, para el acceso a los diferentes servicios que

proporciona Google en la nube.

XEditor de diseo que muestra una vista previa de los cambios realizados directamente en

el archivo xml.

Se espera que se desarrollen nuevas funciones con cada versin de Android Studio. Las siguientes

caractersticas se proporcionan en la versin estable actual:

Integracin de ProGuard y funciones de firma de aplicaciones.

Renderizado en tiempo real

Consola de desarrollador: consejos de optimizacin, ayuda para la traduccin, estadsticas

de uso.

Soporte para construccin basada en Gradle.

Refactorizacin especifica de Android y arreglos rpidos.

Un editor de diseo enriquecido que permite a los usuarios arrastrar y soltar componentes

de la interfaz de usuario
P g i n a | 36

Herramientas Lint para detectar problemas de rendimiento, usabilidad, compatibilidad de

versiones, y otros problemas.

Plantillas para crear diseos comunes de Android y otros componentes.

Soporte para programar aplicaciones para Android Wear.

Soporte integrado para Google Cloud Platform, que permite la integracin con Google

Cloud Messaging y App Engine.

Un dispositivo virtual de Android que se utiliza para ejecutar y probar aplicaciones

Entre las fases de desarrollo que abarcan la realizacin de aplicaciones en Android Studio

encontramos cuatro etapas. La primera es la configuracin de entorno; durante esta fase se instala

y configura el entorno de desarrollo. Adems se realiza la conexin a los elementos en donde se

pueden realizar la instalacin de las app, y se crean dispositivos virtuales Android (AVDS).

La segunda fase abarca la Configuracin del Proyecto y Desarrollo; durante esta se realiza la
configuracin del proyecto y el desarrollo del mismo. Hablamos de la creacin de mdulos que
contengan recursos para la aplicacin y archivos de cdigo fuente. La tercera fase comprende las
pruebas, depuracin y construccin de la aplicacin; A esta altura se construye el proyecto en un
paquete (s) depurable .apk que se puede instalar y ejecutar en el emulador o en un dispositivo con
Android. Se utiliza un sistema de construccin basado en Gradle. Con este se proporciona
flexibilidad, variantes de construccin a la medida y la resolucin de dependencias. En el caso de
usar otro IDE se puede desarrollar el proyecto usando Gradle, y a su vez, instalarlo en un dispositivo
que use ADB. Posteriormente se hace la depuracin de la aplicacin a travs de los mensajes de
supervisin de dispositivos, ms un dispositivo de registro de Android (Logcat) junto con la idea
de IntelliJ. Adems, Se puede usar un depurador JDWP compatible, adicionando las herramientas
P g i n a | 37

de depuracin y de registro que se proporcionan con el SDK de Android. Ya al finalizar, se usan


las herramientas de prueba SDK de Android para las pruebas a la aplicacin.

PRINCIPALES CARACTERSTICAS QUE INCLUYE ANDROID STUDIO:

Soporte para programar aplicaciones para Android Wear (sistema operativo para

dispositivos corporales como por ejemplo un reloj).

XHerramientas Lint (detecta cdigo no compatible entre arquitecturas diferentes o cdigo

confuso que no es capaz de controlar el compilador) para detectar problemas de

rendimiento, usabilidad y compatibilidad de versiones.

XUtiliza ProGuard para optimizar y reducir el cdigo del proyecto al exportar a APK (muy

til para dispositivos de gama baja con limitaciones de memoria interna).

XIntegracin de la herramienta Gradle encargada de gestionar y automatizar la

construccin de proyectos, como pueden ser las tareas de testing, compilacin o

empaquetado.

XNuevo diseo del editor con soporte para la edicin de temas.

XNueva interfaz especfica para el desarrollo en Android.

XPermite la importacin de proyectos realizados en el entorno Eclipse, que a diferencia de

Android Studio (Gradle) utiliza ANT.

XPosibilita el control de versiones accediendo a un repositorio desde el que poder descargar

Mercurial, Git, Github o Subversion.


P g i n a | 38

XAlertas en tiempo real de errores sintcticos, compatibilidad o rendimiento antes de

compilar la aplicacin.

XVista previa en diferentes dispositivos y resolucin

Integracin con Google Cloud Platform, para el acceso a los diferentes servicios que

proporciona Google en la nube.

XEditor de diseo que muestra una vista previa de los cambios realizados directamente en

el archivo xml.

Se espera que se desarrollen nuevas funciones con cada versin de Android Studio. Las siguientes

caractersticas se proporcionan en la versin estable actual:

Integracin de ProGuard y funciones de firma de aplicaciones.

Renderizado en tiempo real

Consola de desarrollador: consejos de optimizacin, ayuda para la traduccin, estadsticas

de uso.

Soporte para construccin basada en Gradle.

Refactorizacin especifica de Android y arreglos rpidos.

Un editor de diseo enriquecido que permite a los usuarios arrastrar y soltar componentes

de la interfaz de usuario
P g i n a | 39

Herramientas Lint para detectar problemas de rendimiento, usabilidad, compatibilidad de

versiones, y otros problemas.

Plantillas para crear diseos comunes de Android y otros componentes.

Soporte para programar aplicaciones para Android Wear.

Soporte integrado para Google Cloud Platform, que permite la integracin con Google

Cloud Messaging y App Engine.

Un dispositivo virtual de Android que se utiliza para ejecutar y probar aplicaciones

Android no utiliza los estndares establecidos de Java, i.e. Java SE y ME, lo cual es un problema

para el desarrollo. Esto impide la compatibilidad entre aplicaciones Java escritas para otras

plataformas. Android slo utiliza la sintxis y la semntica de Java, pero no incorpora en su

totalidad las bibliotecas de clases de Java y APIs ( Application Programming Interface ) que

acompaan a Java SE o ME. Sin embargo, hay diversas herramientas en el mercado de empresas

como Myriad Group y UpOnTek que dan un servicio de conversin entre J2ME y Android.

ARCHIVOS DEL PROYECTO


P g i n a | 40

Ya conocida una parte de la composicin de Android Studio y como se ejecuta el trabajo dentro de

l, vale decir que hace unas semanas tuvimos la nueva versin de este, disponible en su edicin

2.1.0 en fechas del mes de abril. Debemos saber que las actualizaciones peridicas hechas a

Android Studio suceden sin la necesidad de actualizar el proyecto, en este aspecto no debe existir

preocupacin por el desarrollador.

Entre los principales cambios hallados en esta nueva versin, se aprecian el apoyo para el desarrollo

en la nueva versin del sistema operativo, Android N, en su Vista previa. La plataforma Android

N aade soporte para Java 8, que posee caractersticas de lenguaje que requieren un nuevo

compilador experimental llamado Jack. La ltima versin de Jack solo es trabajable en la versin

2.1. De Android Studio. Por ello, es necesario usar esta versin, si se

desea trabajar con Java 8. Vale destacar que aunque Android Studio 2.1 ahora es estable, el

compilador Jack es an experimental, por lo tanto, se debe activar con la propiedad jackOptions en

su archivo build.gradle.

Entre otras novedades en la nueva versin, se hicieron correcciones a errores menores adems de

algunas mejoras; el Depurador de Java-aware C++ est activado por defecto cuando se utiliza un

dispositivo de N o un emulador y seleccin del modo de depurador nativo. Como recomendacin

para mejoras en la realizacin de las app, es bueno actualizar el plugin de Android para Gradle a la

versin 2.1.0.
P g i n a | 41

Renderizacin en tiempo real

-Consola de desarrollador: consejos de optimizacin, ayuda para la traduccin,

estadsticas de uso.

-Soporte para construccin basada en Gradle.

-Refactorizacin especifica de Android y arreglos rpidos.

-Herramientas Lint para detectar problemas de rendimiento, usabilidad, compatibilidad de

versiones, y otros problemas.

-Plantillas para crear diseos comunes de Android y otros componentes.

-Soporte para programar aplicaciones para Android Wear

REQUISITOS DEL SISTEMA


Los requisitos del sistema para las tres plataformas son:

2 GB de RAM (4 GB recomendados)

400 MB de espacio en disco

1 GB para Android SDK

Monitor de 1280x800

Java Development Kit 7


P g i n a | 42

Para activar la aceleracin del emulador (HAXM) en sistemas Windows, se requiere un procesador

Intel con soporte para VT-x, EM64T y funcionalidad Execute Disable Bit

La tecnologa Java se usa para desarrollar aplicaciones para un amplio alcance de entornos, desde

dispositivos del consumidor hasta sistemas empresariales heterogneos. En esta seccin, obtenga

una vista de alto nivel de la plataforma Java y sus componentes. Vea Recursos para aprender ms

acerca de los componentes de la plataforma Java discutidos en esta seccin.

API DE JAVA

La mayora de los desarrolladores Java hacen referencia constantemente a la documentacin API

de Java online oficial, tambin llamada el Javadoc (vea Recursos). De forma predeterminada,

usted ve tres marcos en el Javadoc. El marco superior izquierdo muestra todos los paquetes en la

API y debajo estn las clases en cada paquete. El marco principal (a la derecha) muestra detalles

del paquete o de la clase seleccionada actualmente. Por ejemplo, si

selecciona el paquete java.util en el marco superior izquierdo y luego selecciona la clase ArrayList

que aparece debajo de l, en el marco derecho, ver detalles acerca del ArrayList, que incluyen una

descripcin de lo que hace, cmo usarlo y sus mtodos.


P g i n a | 43

Como cualquier lenguaje de programacin, el lenguaje Java tiene su propia estructura, reglas de

sintaxis y paradigma de programacin. El paradigma de programacin del lenguaje Java se basa en

el concepto de programacin orientada a objetos (OOP), que las funciones del lenguaje soportan.

El lenguaje Java es un derivado del lenguaje C, por lo que sus reglas de sintaxis se parecen mucho

a C: por ejemplo, los bloques de cdigos se modularizan en mtodos y se delimitan con llaves ({ y

}) y las variables se declaran antes de que se usen.

Estructuralmente, el lenguaje Java comienza con paquetes. Un paquete es el mecanismo de espacio

de nombres del lenguaje Java. Dentro de los paquetes se encuentran las clases y dentro de las clases

se encuentran mtodos, variables, constantes, entre otros. En este tutorial, aprender acerca de las

partes del lenguaje Java.

EL COMPILADOR JAVA

Cuando usted programa para la plataforma Java, escribe el cdigo de origen en archivos .java y

luego los compila. El compilador verifica su cdigo con las reglas de sintaxis del lenguaje, luego

escribe los cdigos byte en archivos .class. Los cdigos byte son instrucciones estndar destinadas

a ejecutarse en una Java Virtual Machine (JVM). Al agregar este nivel de


P g i n a | 44

abstraccin, el compilador Java difiere de los otros compiladores de lenguaje, que escriben

instrucciones apropiadas para el chipset de la CPU en el que el programa se ejecutar.

LA JVM

Al momento de la ejecucin, la JVM lee e interpreta archivos .class y ejecuta las instrucciones del

programa en la plataforma de hardware nativo para la que se escribi la JVM. La JVM interpreta

los cdigos byte del mismo modo en que una CPU interpretara las instrucciones del lenguaje del

conjunto. La diferencia es que la JVM es un software escrito especficamente para una plataforma

particular. La JVM es el corazn del principio "escrito una vez, ejecutado en cualquier lugar" del

lenguaje Java. Su cdigo se puede ejecutar en cualquier chipset para el

cual una implementacin apropiada de la JVM est disponible. Las JVM estn disponibles para

plataformas principales como Linux y Windows y se han implementado subconjuntos del lenguaje

Java en las JVM para telfonos mviles y aficionados de chips.

EL RECOLECTOR DE BASURA

En lugar de forzarlo a mantenerse a la par con la asignacin de memoria (o usar una biblioteca de

terceros para hacer esto), la plataforma Java proporciona una gestin de memoria lista para usar.

Cuando su aplicacin Java crea una instancia de objeto al momento de ejecucin, la JVM asigna

automticamente espacio de memoria para ese objeto desde el almacenamiento dinmico, que es

una agrupacin de memoria reservada para que use su programa.


P g i n a | 45

El recolector de basura Java se ejecuta en segundo plano y realiza un seguimiento de cules son

los objetos que la aplicacin ya no necesita y recupera la memoria que ellos ocupan. Este abordaje

al manejo de la memoria se llama gestin de la memoria implcita porque no le exige que escriba

cualquier cdigo de manejo de la memoria. La recogida de basura es una de las funciones esenciales

del rendimiento de la plataforma Java.

EL KIT DE DESARROLLO DE JAVA


Cuando usted descarga un kit de desarrollo de Java (JDK), obtiene, adems del compilador y

otras herramientas, una librera de clase completa de programas de utilidad preconstruidos que

lo ayudan a cumplir cualquier tarea comn al desarrollo de aplicaciones. El mejor modo para tener

una idea del mbito de los paquetes y bibliotecas JDK es verificar la documentacin API JDK (vea

Recursos).

EL JAVA RUNTIME ENVIRONMENT


El Java Runtime Environment (JRE, tambin conocido como el Java Runtime) incluye las

bibliotecas de cdigos de la JVM y los componentes que son necesarios para programas en

ejecucin escritos en el lenguaje Java. Est disponible para mltiples plataformas. Puede

redistribuir libremente el JRE con sus aplicaciones, de acuerdo a los trminos de la licencia del
P g i n a | 46

JRE, para darles a los usuarios de la aplicacin una plataforma en la cual ejecutar su software. El

JRE se incluye en el JDK.

Configuracin de su entorno de desarrollo de Java


En esta seccin, tendr instrucciones para descargar e instalar el JDK 6 y el lanzamiento actual de

IDE Eclipse y para configurar su entorno de desarrollo de Eclipse.

Si usted ya ha instalado el JDK e IDE Eclipse, tal vez quiera saltar a la seccin Getting started with

Eclipse o a la que le sigue, Object-oriented programming concepts.

Su entorno de desarrollo
El JDK incluye un conjunto de herramientas de lnea de comandos para compilar y ejecutar su

cdigo Java, que incluye una copia completa del JRE. Aunque usted ciertamente puede usar estas

herramientas para desarrollar sus aplicaciones, la mayora de los desarrolladores valoran la

funcionalidad adicional, la gestin de tareas y la interfaz visual de un IDE.

Eclipse es un IDE de cdigo abierto popular para el desarrollo Java. Maneja las tareas bsicas, tales

como la compilacin de cdigos y la configuracin de un entorno de depuracin, para que pueda

centrase en escribir y probar cdigos. Adems, puede usar Eclipse para organizar archivos de

cdigos de origen en proyectos, compilar y probar esos proyectos y almacenar archivos de

proyectos en cualquier cantidad de repositorios de origen. Necesita tener instalado un JDK para

usar Eclipse para el desarrollo Java.


P g i n a | 47

QU ES UN OBJETO?
Los lenguajes de programacin estructurada como C y COBOL siguen un paradigma de

programacin muy diferente de los orientados a objetos. El paradigma de programacin

estructurada est altamente orientado a datos, lo cual significa que usted tiene estructuras de datos

por una parte y luego instrucciones del programa que actan sobre esos datos. Los lenguajes

orientados a objetos, como el lenguaje Java, combinan datos e instrucciones del programa en

objetos.

Un objeto es una entidad independiente que contiene atributos y comportamientos y nada ms. En

lugar de tener una estructura de datos con campos (atributos) y pasar esa estructura a toda la lgica

del programa que acta sobre ella (comportamiento), en un lenguaje orientado a objetos, se

combinan los datos y la lgica del programa. Esta combinacin puede ocurrir en niveles

completamente diferentes de granularidad, desde objetos especficos como un Number hasta

objetos de aplicacin general como un servicio de FundsTransfer en una gran aplicacin bancaria.

OBJETOS PADRE E HIJO


Un objeto padre es aquel que sirve como la base estructural para derivar objetos hijos ms

complejos. Un objeto hijo se parece a su padre pero es ms especializado. El paradigma orientado

a objetos le permite reutilizar los atributos y comportamientos comunes del objeto padre y le agrega
P g i n a | 48

a sus objetos hijos atributos y comportamientos que difieren. (Usted aprender ms sobre herencia

en la siguiente seccin de este tutorial).

COMUNICACIN Y COORDINACIN DE OBJETOS


Los objetos se comunican con otros objetos por medio del envo de mensajes (llamadas de mtodo

en el lenguaje Java). Adems, en una aplicacin orientada a objetos, el cdigo del programa

coordina las actividades entre objetos para realizar tareas dentro del contexto del dominio de

aplicacin dado. (En el paradigma Modelo-Vista-Controlador, este cdigo de programa de

coordinacin es el Controlador. Vea Recursos para aprender ms acerca de MVC).

Resumen del objeto

Un objeto bien escrito:

tiene lmites ntidos.

realiza un conjunto limitado de actividades.

conoce solo lo relacionado a sus datos y cualquier otro objeto que necesite para cumplir sus

actividades.

Bsicamente, un objeto es una entidad diferenciada que tiene solo las dependencias necesarias de

otros objetos para realizar sus tareas.

Ahora ver cmo luce un objeto.

EL OBJETO PERSON
P g i n a | 49

Comenzar con un ejemplo que est basado en escenario comn de desarrollo de aplicacin: se

representa a un individuo con un objeto Person.

Volviendo a la definicin de un objeto, usted sabe que un objeto tiene dos elementos primarios:

atributos y comportamiento. Ver cmo estos se aplican al objeto Person.

Atributos

Qu atributos puede tener una persona? Algunos atributos comunes incluyen:

Nombre

Edad

Altura

Peso

Color de ojos

Gnero

Probablemente a usted se le pueden ocurrir ms (y siempre puede agregar ms atributos ms tarde)

pero esta lista es un buen comienzo.

Comportamiento

Una persona real puede hacer todo tipo de actividades pero los comportamientos de los objetos

normalmente se relacionan con algn tipo de contexto de aplicacin. En un contexto de aplicacin

de negocio, por ejemplo, puede querer preguntarle a su objeto Person: "Qu edad tiene?" Como

respuesta, Person le dira el valor de su atributo de Edad.


P g i n a | 50

Una lgica ms compleja podra estar oculta dentro del objeto Person pero por ahora suponga que

esa

Person tiene el comportamiento de responder estas preguntas:

Cul es su nombre?

Qu edad tiene?

Cul es su altura?

Cunto pesa?

Cul es su color de ojos?

Cul es su gnero?

Estado y cadena

El Estado es un concepto importante en OOP. El estado de un objeto se representa en cualquier

momento por medio del valor de sus atributos.

En el caso de Person, su estado se define por sus atributos, tales como nombre, edad, altura y peso.

Si usted quisiera presentar una lista de varios de esos atributos, podra hacerlo utilizando una clase

de String, sobre la cual hablar ms en el tutorial posteriormente.


P g i n a | 51

Juntos, los conceptos de estado y cadena le permiten decirle a Person: cunteme quin es usted

dndome un listado (o una String) de sus atributos.

PRINCIPIOS DE OOP
Si usted viene de un ambiente de programacin estructurada, la proposicin de valores de OOP

puede que no sea clara todava. Despus de todo, los atributos de una persona y cualquier lgica

para recuperar (y convertir) sus valores pueden escribirse en C o COBOL. Esta seccin clarifica

los beneficios del paradigma OOP al explicar sus principios distintivos: encapsulamiento, herencia

y polimorfismo.

ENCAPSULAMIENTO

Recuerde que un objeto es, sobre todo, diferenciado o independiente. Este es el principio de

encapsulamiento en funcionamiento. Ocultacin es otro trmino que a veces se usa para expresar

la naturaleza independiente y protegida de los objetos.

Sin tener en cuenta la terminologa, lo que es importante es que el objeto mantiene un lmite entre

su estado y comportamiento y el mundo exterior. Como los objetos del mundo real, los objetos

usados en la programacin de computadora tienen diversos tipos de relaciones con diferentes

categoras de objetos en las aplicaciones que los utilizan.


P g i n a | 52

En la plataforma Java, puede usar especificadores de acceso (los que presentar ms adelante en el

tutorial) para variar la naturaleza de las relaciones de los objetos desde lo pblico a lo privado. El

acceso pblico tiene una gran apertura, mientras que el acceso privado significa que los atributos

del objeto son accesibles solo dentro del objeto mismo.

El lmite entre lo pblico y lo privado hace cumplir el principio orientado a objetos de

encapsulamiento. En la plataforma Java, usted puede variar la fortaleza de ese lmite sobre una

base de objeto a objeto, al depender de un sistema de confianza. El encapsulamiento es una potente

funcin del lenguaje Java.

HERENCIA

En la programacin estructurada, es comn copiar una estructura, darle un nombre nuevo y agregar

o modificar los atributos que hacen que la nueva identidad (por ejemplo, un registro de Cuenta) sea

diferente de su fuente original. Con el tiempo, este abordaje genera una gran cantidad de cdigos

duplicados, que pueden crear problemas de mantenimiento.

OOP presenta el concepto de herencia, por el cual los objetos especializados, sin ningn cdigo

adicional, pueden "copiar" los atributos y el comportamiento de los objetos de origen en los que

se especializan. Si alguno de esos atributos o comportamientos necesitan modificarse, entonces


P g i n a | 53

simplemente modifquelos temporalmente. Solo modifique lo que necesite modificar para crear

objetos especializados. Como ya sabe desde la seccin Object-oriented programming concepts, el

objeto origen se llama el padre y la especializacin nueva se llama el hijo.

HERENCIA EN FUNCIONAMIENTO

Suponga que est escribiendo una aplicacin de recursos humanos y quiere usar el objeto Person

como base para un objeto nuevo llamado Employee. Al ser el hijo de Person, el Employee tendra

todos los atributos de un objeto Person, junto con los adicionales, tales como:

Nmero de identificacin del contribuyente

Fecha de contratacin

Salario

La herencia hace que sea fcil crear la nueva clase de Employee del objeto sin necesidad de copiar

manualmente todo el cdigo de Person o mantenerlo.

POLIMORFISMO

El polimorfismo es un concepto ms difcil de entender que el encapsulamiento o la herencia.

Bsicamente, significa que los objetos que pertenecen a la misma ramificacin de una jerarqua,

cuando se enva el mismo mensaje (es decir, cuando se le indica que realice lo mismo), pueden

manifestar ese comportamiento de modo diferente.


P g i n a | 54

Para entender cmo el polimorfismo se aplica a un contexto de aplicacin de negocio, regrese al

ejemplo de Person. Recuerda indicarle a Person que formatee sus atributos en una String? El

polimorfismo hace que sea posible para Person representar sus atributos en una variedad de formas,

dependiendo del tipo de Person que sea.

El polimorfismo es uno de los conceptos ms complejos con los que se encontrar en OOP en la

plataforma Java y no dentro del mbito de un tutorial introductorio. Vea Recursos si quiere

aprender ms acerca del polimorfismo.

COMENZAR CON EL LENGUAJE JAVA

El lenguaje Java: no est puramente orientado a objetos

El lenguaje Java le permite crear objetos de primera clase pero no todo en el lenguaje es un objeto.

Hay dos cualidades que diferencian el lenguaje Java de los lenguajes puramente orientados a

objetos como Smalltalk. Primero, el lenguaje Java es una mezcla de objetos y tipos primitivos.

Segundo, le permite escribir un cdigo que exponga el funcionamiento interno de un objeto a

cualquier otro objeto que lo utilice.


P g i n a | 55

El lenguaje Java s le da las herramientas necesarias para seguir principios OOP slidos y producir

un cdigo slido orientado a objetos. Debido a que Java no est puramente orientado a objetos,

debe ejercitar alguna disciplina sobre cmo usted escribe un cdigo. El lenguaje no lo obliga a

hacer lo correcto, por lo tanto debe hacerlo usted mismo. (Esta ltima seccin del tutorial, Writing

good Java code, proporciona consejos).

Sera imposible introducir toda la sintaxis del lenguaje Java en un solo tutorial. Lo que resta de la

Parte 1 se centra en los conceptos bsicos del lenguaje, por lo que le da suficiente conocimiento y

prctica para escribir programas simples. OOP se trata por completo de los objetos, por lo cual esta

seccin comienza con dos temas relacionados especficamente con la forma en que el lenguaje Java

los maneja: palabras reservadas y la estructura de un objeto Java.

PALABRAS RESERVADAS

Como cualquier lenguaje de programacin, el lenguaje Java designa ciertas palabras que el

compilador reconoce como especiales y, como tales, usted no tiene permitido usarlas para nombrar

sus construcciones Java. La lista de palabras reservadas es sorprendentemente corta:


P g i n a | 56

afirmar paquete
booleano privado
interrupcin protegido
byte
caso pblico
capturar retorno
caract. corto
clase esttico
const. strictfp
continuar sper
predeterminado conmutador
hacer sincronizado
doble
else esto
enumer. arrojar
extiende arroja
final transitorio
finalmente intentar
flotante invlido
para voltil
ir a mientras
si
implementa
importar
instancia de
int
interfaz
largo
nativo
nuevo
P g i n a | 57

Observe que true, false y null tcnicamente no son palabras reservadas. Aunque son literales,

las incluyo en esta lista porque no puede usarlas para nombrar construcciones Java.

Una ventaja de la programacin con un IDE es que puede usar coloreado de sintaxis para

palabras reservadas, como ver ms adelante en este tutorial.

Estructura de un objeto Java

Recuerde que un objeto es una entidad diferenciada que contiene atributos y comportamiento.

Eso significa que tiene un lmite ntido y un estado y puede realizar actividades cuando se lo

piden correctamente. Cada lenguaje de orientacin a objetos tiene reglas sobre cmo definir un

objeto.

VENTAJAS USO ANDROID STUDIO:

XAndroid Studio ha pasado a ser el entorno recomendado para el desarrollo de

aplicaciones en Android, al tratarse de un IDE oficial de Google en colaboracin con

JetBrains (compaa de desarrollo software especializada en diseo de IDEs).

XAndroid Studio permite la creacin de nuevos mdulos dentro de un mismo proyecto,

sin necesidad de estar cambiando de espacio de trabajo para el manejo de proyectos,

algo habitual en Eclipse.

XCon la simple descarga de Android Studio se disponen de todas las herramientas

necesarias para el desarrollo de aplicaciones para la plataforma Android.


P g i n a | 58

XSu nueva forma de construir los paquetes .apk, mediante el uso de Gradle,

proporciona una serie de ventajas ms acorde a un proyecto Java.

Facilita la distribucin de cdigo, y por lo tanto el trabajo en equipo.

Reutilizacin de cdigo y recursos.

Permite compilar desde lnea de comandos, para aquellas situaciones en las que no est

disponible un entorno de desarrollo.

Mayor facilidad para la creacin de diferentes versiones de la misma aplicacin, que

proporciona numerosas ventajas como puede ser la creacin de una versin de pago y

otra gratuita, o por ejemplo diferentes dispositivos o almacn de datos.

DESVENTAJAS USO ANDROID STUDIO:

VAunque ya ha se ha lanzado la primera versin estable, la v1.0, al estar en una fase

inicial, siempre es suceptible de introducirse ms cambios que puedan provocar

inestabilidad entre proyectos de diferentes versiones.

VCurva de aprendizaje ms lenta para nuevos desarrolladores de Android.

VEl sistema de construccin de proyectos Gradle puede resultar complicado

inicialmente.

VEn comparativa con Eclipse, menor nmero de plugins.

Creacin de una interfaz de usuario usando XML


P g i n a | 59

A veces puede ser muy complicado programar interfaces de usuario, ya que pequeos

cambios en el diseo pueden corresponder a complicadas modificaciones en el cdigo.Un

principio importante en el diseo de software es que conviene separar todo lo posible el

diseo, los datos y la lgica de la aplicacin.

4.5. RULETA DE NEWTON

El disco giratorio coloreado de Isaac Newton (1642-1727) demostr que la luz blanca est

formada por los colores del arco iris. Newton observ que, al hacer atravesar un haz luminoso

por una lente, siempre existen variaciones de color alrededor de la imagen transmitida, esta

coloracin, generada por los diferentes focos luminosos a los que se ve expuesta la lente, se la

denomina dispersin de la luz. Asimismo, comprob que, si haca pasar un haz luminoso por

un prisma, la luz blanca se descompona en una serie de colores brillantes (arco iris) que

denomin espectro solar. De esta experiencia dedujo que, si la luz blanca se poda descomponer

en los colores del arco iris, combinando stos se podra volver al color blanco.

El disco giratorio de color fue una de las diversas experiencias de las que se sirvi para

demostrar su teora. Se trata de un disco dividido en sectores pintados con los colores del

espectro visible. Al hacerlo girar a gran velocidad se puede observar como estos colores

desaparecen, tomando una tonalidad blanca, ms brillante cuanto mejor se haya hecho la

proporcin de colores.
P g i n a | 60

EXPLICACIN:

Newton descubri que la luz blanca lleva adentro todos los colores que podemos ver, menos el

negro. Por qu el negro no? Porque es la ausencia de color; cuando no hay nada de luz, que

todo est oscuro, las cosas siempre las vemos negras.

Entonces nosotros vemos el color de cada cosa porque le llega a ese objeto luz blanca, y el

objeto guarda todos los colores menos el suyo. Una manzana reflejar el rojo y se guardar los

dems, una hoja blanca refleja toda la luz que le llega y un pedazo de carbn absorbe toda la

luz.

Pero para que nosotros sepamos de qu color es un cuerpo, su luz tiene que llegar a nuestros

ojos, que mandan la informacin al cerebro. Algo curioso de los ojos es que siempre guardan

lo que ven por una dcima de segundo, que, aunque es un tiempo muy corto puede ayudarnos

en muchas cosas.

Por ejemplo, si esto no pasara no podramos ver bien las pelculas ya que estas son una serie

de fotos inmviles, que se ven en movimiento gracias a que el ojo empalma varias imgenes

con diferentes posiciones.

Bueno, lo mismo pasa con los colores si pasan muy rpido frente a los ojos; se empalman. Y

cuando se empalman todos los colores primarios nuestro cerebro slo distingue el blanco. Hay

que recordar que para que se empalmen el disco se tiene que mover rpido, de modo que todos

los colores pasen por el mismo lugar en menos de una dcima de segundo.
P g i n a | 61

4.6. HIPNOSIS MEDIANTE COLORES

La hipnosis es un procedimiento en el cual lo que hace es que la persona que se somete

experimente cambios en las sensaciones, percepciones, pensamientos o comportamientos.

La mayora de los tratamientos basados en hipnosis incluyen sugerencias para la relajacin,

calma y bienestar. Instrucciones para imaginar o pensar acerca de experiencias agradables son

tambin habitualmente incluidos durante la hipnosis. La persona responde a la hipnosis de

diferentes maneras, algunos describen a la hipnosis como un estado de atencin concentrada,

en la que se sienten muy tranquilos y relajados. La mayora de la gente describe la experiencia

de lo ms agradable. Lo que se quiere lograr con el proyecto es que la persona que se someta a

la hipnosis por medio de la Ruleta de Newton, que al mirar fijamente como cambian los colores

tenga la sensacin de un estado de relajamiento, en otras palabras, la persona se olvide de sus

problemas por un momento y su mente quede en blanco.

La hipnosis produce un estado atencin muy focalizado, que minimiza otros pensamientos y

sensaciones. Consta de dos procesos, la induccin y la sugestin.

Las instrucciones que da el hipnotizador para que la persona que se somete a hipnosis alcance

un estado mental caracterstico se denominan induccin.

La sugestin consiste en frases que describen cambios en las percepciones y que no requieren

que la persona que va a ser hipnotizada se esfuerce por lograr.

Cualquier persona puede ser hipnotizada. De hecho, el 80% podran experimentar este

fenmeno con relativa facilidad. Del 20% restante, la mitad son mucho ms sugestionables que

la media y el otro 10% muy difciles de hipnotizar.


P g i n a | 62

Superacin de los problemas de los estudiantes mediante la ruleta de newton:

Podemos decir que una persona o estudiante puede superar sus problemas mediante la ruleta

de newton puesto que al someterse a la ruleta las personas van a sufrir una hipnosis ya que

introduciendo cada problema en cada uno de los colores de la paleta y

posterior mente vemos que nuestros problemas van fusionndose y de esta manera van

convirtindose en la nada (que representa el color blanco) y posterior mente vemos un mensaje

de superacin, entonces los estudiantes podemos superar nuestros problemas antes de ingresar

a clase.
P g i n a | 63

1. MARCO PRACTICO
P g i n a | 64

1. CONCLUSIONES

Finalizada la investigacin, podemos concluir que este programa es un mtodo efectivo para

el personal. Mediante una prueba realizada a un miembro del grupo se pudo determinar que si

se cumplen los objetivos propuestos antes de realizar esta investigacion.

Mediante nuestro programa de la ruleta de newton el personal podr olvidar sus problemas de

la vida cotidiana mediante un determinado tiempo

El programa fue sometido a prueba por uno de los integrantes grupo para verificar la solucin

del problema y auto superacin lo cual nos dio un resultado positivo.

2. RECOMENDACIONES

De acuerdo a los resultados obtenidos ,este modelo puede ser aplicado en todo tipo de

personas mediante su optimizacin para plataformas mviles como ser Android que es a la

cual est destinada este programa por sus beneficios evidentes, facilidad de uso los cuales

pueden ser decisivos al momento de elegir un modelo de programa para ser utilizado en

cualquier circunstancia .Es recomendable la evaluacin de este programa; desde la

perspectiva del impacto que causara la aplicacin en el rendimiento a corto plazo en el

personal con la finalidad de alcanzar los objetivos propuestos ; tambin se recomienda

evaluar la eficiencia de este programa en un lapso de tiempo que el personal determine.


P g i n a | 65

ANEXOS
P g i n a | 66

Anexo A
P g i n a | 67

Anexo B
P g i n a | 68

ANEXO C

Login Activity

mEmail = email;
mPassword = password;
}

@Override
protected Boolean doInBackground(Void... params) {
// TODO: attempt authentication against a network
service.

try {
// Simulate network access.
Thread.sleep(2000);
} catch (InterruptedException e) {
return false;
}

for (String credential : DUMMY_CREDENTIALS) {


String[] pieces = credential.split(":");
if (pieces[0].equals(mEmail)) {
// Account exists, return true if the password
matches.
return pieces[1].equals(mPassword);
}
}

// TODO: register the new account here.


return true;
}

@Override
protected void onPostExecute(final Boolean success) {
mAuthTask = null;
showProgress(false);

if (success) {
finish();
} else {

mPasswordView.setError(getString(R.string.error_incorrect_password
));
mPasswordView.requestFocus();
}
}

@Override
protected void onCancelled() {
mAuthTask = null;
showProgress(false);
}
}
}
P g i n a | 69

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.paint.sinamistudio.ruletadenewton.LoginActivity">

<!-- Login progress -->


<ScrollView
android:id="@+id/login_form"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
android:id="@+id/email_login_form"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<AutoCompleteTextView
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="usuario"
android:inputType="textEmailAddress"
android:maxLines="1"
android:singleLine="true" />

</android.support.design.widget.TextInputLayout>

<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/prompt_password"
android:imeActionId="@+id/login"
android:imeActionLabel="@string/action_sign_in_short"
android:imeOptions="actionUnspecified"
android:inputType="textPassword"
android:maxLines="1"
android:singleLine="true" />

</android.support.design.widget.TextInputLayout>

<Button
android:id="@+id/email_sign_in_button"
style="?android:textAppearanceSmall"
android:layout_width="match_parent"
P g i n a | 70

android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/action_sign_in"
android:textStyle="bold" />

<Button
android:id="@+id/register_button"
style="?android:textAppearanceSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="register"
android:textStyle="bold" />

</LinearLayout>
</ScrollView>

<ProgressBar
android:id="@+id/login_progress"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:visibility="gone" />

</LinearLayout>

Main Activity

package com.paint.sinamistudio.ruletadenewton;

import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity {

private RouletteView mRouletteView;


private SectorsDbAdapter mDbHelper;
public static Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRouletteView = (RouletteView) findViewById(R.id.rouletteView);
setToolbar();
context = MainActivity.this;
}
P g i n a | 71

@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_message:
Intent i = new Intent(this, SectorsConfig.class);
startActivity(i);
return true;
case R.id.menu_start:
mRouletteView.girar(10);
reset();
mRouletteView.updateSectors();
return true;
case R.id.menu_developed:
creditos();
return true;
case R.id.menu_tutorial:
Intent i2 = new Intent(this, TutorialActivity.class);
startActivity(i2);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onStart() {
super.onStart();
mRouletteView.updateSectors();
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mRouletteView.updateSectors();
}

private void setToolbar() {


Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}

private void creditos() {


String text = "Desarrollador: RAGD";
AlertDialog.Builder builder = new
AlertDialog.Builder(MainActivity.this);
builder.setTitle("Crditos")
.setMessage(text)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int
which) {
}
});
builder.create().show();
}

private void reset() {


mDbHelper = new SectorsDbAdapter(this);
P g i n a | 72

mDbHelper.open();
RouletteInitialization initializer = new
RouletteInitialization(MainActivity.this);
Resources res = getResources();
String[] answers = res.getStringArray(R.array.predefined);
initializer.initRoulette(answers);
}

public static void reiniciar() {


Intent i = new Intent(context,
MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);;
context.startActivity(i);
}
}
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.paint.sinamistudio.ruletadenewton.MainActivity">

<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
tools:layout_editor_absoluteY="0dp"
tools:layout_editor_absoluteX="8dp">

<android.support.v7.widget.Toolbar
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:elevation="8dp"/>

</android.support.design.widget.AppBarLayout>

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_marginTop="50sp"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TextView
android:layout_width="fill_parent"
android:text="@string/title"
android:layout_gravity="center"
android:gravity="center"
android:layout_height="40sp"
android:textStyle="bold" />
<com.paint.sinamistudio.ruletadenewton.RouletteView
android:id="@+id/rouletteView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center" />
P g i n a | 73

</LinearLayout>

</android.support.design.widget.CoordinatorLayout>

Register Activity

package com.paint.sinamistudio.ruletadenewton;

import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class RegisterActivity extends AppCompatActivity {

EditText nombre, apellido, usuario, password, password2;


Button registrar;
private SQLiteDatabase db;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);

initDataBase();

nombre = (EditText)findViewById(R.id.edit_nombre);
apellido = (EditText)findViewById(R.id.edit_apellido);
usuario = (EditText)findViewById(R.id.edit_usuario);
password = (EditText)findViewById(R.id.edit_contrasea);
password2 = (EditText)findViewById(R.id.edit_contrasea2);

registrar = (Button)findViewById(R.id.btn_registrar);

registrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

if(password.getText().toString().equals(password2.getText().toString())) {
addUsuario();
Toast.makeText(RegisterActivity.this, "Registro
Completo", Toast.LENGTH_SHORT).show();
finish();
}else{
Toast.makeText(RegisterActivity.this, "Contraseas
incorrecta", Toast.LENGTH_SHORT).show();
}
}
});
}

private void initDataBase() {


DBUsuario dbUsuario =
P g i n a | 74

new DBUsuario(RegisterActivity.this, "DBUsuario", null, 1);


db = dbUsuario.getWritableDatabase();
}
private void addUsuario() {
ContentValues nuevoProducto = new ContentValues();
nuevoProducto.put("nombre", nombre.getText().toString());
nuevoProducto.put("apellido", apellido.getText().toString());
nuevoProducto.put("usuario", usuario.getText().toString());
nuevoProducto.put("password", password.getText().toString());
db.insert("usuario", null, nuevoProducto);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.paint.sinamistudio.ruletadenewton.RegisterActivity">

<EditText
android:id="@+id/edit_nombre"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Nombre :"/>
<EditText
android:id="@+id/edit_apellido"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Apellidos :"/>
<EditText
android:id="@+id/edit_usuario"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Usuario :"
/>
<EditText
android:id="@+id/edit_contrasea"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="Password :"/>
<EditText
android:id="@+id/edit_contrasea2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="Repita Password :"/>

<Button
android:id="@+id/btn_registrar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Registrar"/>

</LinearLayout>
P g i n a | 75

Roulett Initialization

package com.paint.sinamistudio.ruletadenewton;

import android.content.Context;
import android.database.Cursor;

import java.util.Random;

public class RouletteInitialization {


private SectorsDbAdapter mDbHelper;
private Cursor mSectorsCursor;
private Random mRandomGenerator;
private final Context mCtx;

public RouletteInitialization(Context ctx) {


this.mCtx = ctx;
mRandomGenerator = new Random();
mDbHelper = new SectorsDbAdapter(mCtx);
mDbHelper.open();
}

public void initRoulette(String[] answers){


mDbHelper.deleteAll();
String new_a = answers[mRandomGenerator.nextInt(answers.length)];
//String new_a = answers[0];
mDbHelper.createSector(new_a);
for (int i = 0; i < 0; i++){
createRandomSector(answers);
}
}

public void createRandomSector(String[] answers){


mSectorsCursor = mDbHelper.fetchAllSectors();
int sectors = mSectorsCursor.getCount();
String[] used = new String[sectors];
mSectorsCursor.moveToFirst();
for (int i = 0; i < sectors ; i++)
{
used[i] = mSectorsCursor.getString(1);
mSectorsCursor.moveToNext();
}

String new_a = "text";


boolean found = false;
while (found == false)
{
found = true;
new_a = answers[mRandomGenerator.nextInt(answers.length)];
//new_a = answers[index];
for (int j = 1; j < used.length; j++)
{
new_a = "Problema " + (j+1);
if (new_a.equals(used[j]))
{
found = false;
}
}
}
mDbHelper.createSector(new_a);
P g i n a | 76

tutorial xml

<?xml version="1.0" encoding="utf-8"?>


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.paint.sinamistudio.ruletadenewton.TutorialActivity">

<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
tools:layout_editor_absoluteY="0dp"
tools:layout_editor_absoluteX="8dp">

<android.support.v7.widget.Toolbar
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:elevation="8dp"/>

</android.support.design.widget.AppBarLayout>

<Button
android:id="@+id/paso1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/app_bar"
android:layout_centerHorizontal="true"
android:layout_marginTop="106dp"
android:text="Paso N1" />

<Button
android:id="@+id/paso2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/paso1"
android:layout_alignStart="@+id/paso1"
android:layout_below="@+id/paso1"
android:layout_marginTop="74dp"
android:text="Paso N2" />

<Button
android:id="@+id/paso3"
android:layout_width="wrap_content"
P g i n a | 77

android:layout_height="wrap_content"
android:layout_alignEnd="@+id/paso2"
android:layout_alignRight="@+id/paso2"
android:layout_below="@+id/paso2"
android:layout_marginTop="59dp"
android:text="Paso N3" />

</RelativeLayout>

Roulrtte View

package com.paint.sinamistudio.ruletadenewton;

import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.media.MediaPlayer;
import android.os.SystemClock;
import android.support.v7.app.AlertDialog;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Random;

public class RouletteView extends SurfaceView implements


SurfaceHolder.Callback {

private static final int MIN_FORCE = 1;


private static final int MAX_FORCE = 10000;
private static final int FRAME = 5;
private int mFPS = 60;
private long mFrameTime = 1000 / mFPS;

private final Paint mPaint = new Paint();


private final RectF mRectF = new RectF();
private final Path mPath = new Path();
private int mStroke;
private int mCenterY;
private int mCenterX;
private int mRadius;
private int mSectors;
private float mSweepAngle;
private int mAngleOffset = 0;
private int mLastPointAngle;

private ArrayList<Coordinate> mPoints = new ArrayList<Coordinate>();


private int[] mSectorColors;
private int[] mColors = { 0xFFF79A18, 0xFFF71120, 0xFF8729AB,
P g i n a | 78

0xFFC231FB, 0xFF1132C7,
0xFF0432FC, 0xFF53D0D4, 0xFF49D774, 0xFFADF70D, 0xFFF7F73C,
0xFFF5EA10, 0xFFF5D310
};
private int[] mColorsC = { 0xFFF79A18, 0xFFF71120, 0xFF8729AB,
0xFFC231FB, 0xFF1132C7,
0xFF0432FC, 0xFF53D0D4, 0xFF49D774, 0xFFADF70D, 0xFFF7F73C,
0xFFF5EA10, 0xFFF5D310
};
private int[] mColorsB = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFFFFFF,
};

private SurfaceHolder mSurfaceHolder;


private Context mContext;
private int mAngleDiff = 0;
private MediaPlayer mediaPlayer;
private String[] mAnswers;
private String[] mSuperacion;
private Cursor mSectorsCursor;
private SectorsDbAdapter mDbHelper;

public RouletteView(Context context) {


super(context);
mContext = context;
initRoulette();
}

public RouletteView(Context context, AttributeSet attrs) {


super(context, attrs);
mContext = context;
initRoulette();
}

public RouletteView(Context context, AttributeSet attrs, int defStyle) {


super(context, attrs, defStyle);
mContext = context;
initRoulette();
}

private void initRoulette() {


mSurfaceHolder = getHolder();
mSurfaceHolder.addCallback(this);
mediaPlayer = MediaPlayer.create(mContext, R.raw.beat);
mDbHelper = new SectorsDbAdapter(mContext);
mDbHelper.open();

@Override
public void surfaceCreated(SurfaceHolder holder) {
mCenterX = this.getWidth() / 2;
mCenterY = this.getHeight() / 2;
mRadius = Math.min(mCenterX, mCenterY);
int rectRad = mRadius - FRAME;
mRectF.set(mCenterX - rectRad, mCenterY - rectRad, mCenterX +
rectRad,
mCenterY + rectRad);
mStroke = 2;
P g i n a | 79

mPaint.setStrokeWidth(mStroke);
mPaint.setAntiAlias(true);
updatePoints(0);
}
/**ACTUALIZA LOS SECTORES DE LA PALETA*/
public void updateSectors() {
mSectorsCursor = mDbHelper.fetchAllSectors();
mSectors = mSectorsCursor.getCount();
if (mSectors < 2) {
RouletteInitialization initializer = new RouletteInitialization(
mContext);
Resources res = getResources();
String[] answers = res.getStringArray(R.array.predefined);
initializer.initRoulette(answers);
mSectorsCursor = mDbHelper.fetchAllSectors();
mSectors = mSectorsCursor.getCount();
}
mSweepAngle = 360 / mSectors;
updateColors();
updateAnswers();
updatePoints(0);
}
/**ACTUALIZA LAS PREGUNTAS */
private void updateAnswers() {
mSectorsCursor = mDbHelper.fetchAllSectors();
mAnswers = new String[mSectors];
for (int i = 0; i < mSectors; i++) {
mSectorsCursor.moveToPosition(i);
mAnswers[i] = mSectorsCursor.getString(mSectorsCursor
.getColumnIndexOrThrow(SectorsDbAdapter.KEY_BODY));

}
}

/**************************************************************************
*******/
public void girar(int diferencia) {
mAngleDiff = diferencia;
spin(-1*(int)Math.signum(mAngleDiff)*Math.min(Math.abs(mAngleDiff) *
25,360*20));
}
public void spin(int force) {
boolean show_answer = true;
int clockwise = (force > 0) ? 1 : -1;
force = Math.abs(force);
if (force < MIN_FORCE) {
show_answer = false;
}
while (force > 0) {
int gradosPorFrame = (int) clockwise * force / mFPS;
force = force + 20;
updatePoints(gradosPorFrame);
repaint();
if(force >= 11000) {
mColors = mColorsB;
updateColors();
}
if(force >= 12000) {
break;
}
SystemClock.sleep(1000 / 240);
P g i n a | 80

}
showSectorSentence(show_answer);
}

/**************************************************************************
*******/
/**************** HILO QUE PINTA CADA FRAME DE SEGUNDO LA PALETA EN SU
NUEVA POSICION *************/
public void repaint() {
Canvas c = null;
try {
c = mSurfaceHolder.lockCanvas(null);
synchronized (mSurfaceHolder) {
doDraw(c);
}
} finally {
if (c != null) {
mSurfaceHolder.unlockCanvasAndPost(c);
}
}
}
protected void doDraw(Canvas canvas) {
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
for (int i = 0; i < mSectors; i++) {
// Draw sector
mPaint.setColor(mSectorColors[i]);
Coordinate myPoint = mPoints.get(i);
mPath.reset();
mPath.moveTo(mCenterX, mCenterY);
mPath.lineTo(myPoint.x, myPoint.y);
mPath.addArc(mRectF, i * mSweepAngle + mAngleOffset, mSweepAngle);
mPath.lineTo(mCenterX, mCenterY);
mPath.close();
canvas.drawPath(mPath, mPaint);
}
// Draw lines
mPaint.setColor(Color.BLACK);
for (int i = 0; i < mSectors; i++) {
Coordinate myPoint = mPoints.get(i);
canvas.drawLine(mCenterX, mCenterY, myPoint.x, myPoint.y, mPaint);
}
mPaint.setColor(Color.WHITE);
mPaint.setStrokeWidth(mStroke * 2);
canvas.drawLine(mCenterX + mRadius - FRAME * 2, mCenterY, mCenterX
+ mRadius + FRAME, mCenterY, mPaint);
mPaint.setStrokeWidth(mStroke);
}
private void showSectorSentence(boolean sentence) {
String text;
mSuperacion = getResources().getStringArray(R.array.Superacion);
if (sentence) {
Random R = new Random();
text = mSuperacion[R.nextInt(mSuperacion.length)];
} else {
Resources res = getResources();
text = res.getString(R.string.stronger);
}
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle("Superate")
.setMessage(text)
.setPositiveButton("OK",
P g i n a | 81

new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which)
{
MainActivity.reiniciar();
}
});
builder.create().show();
}
public int getCurrentSector() {
return mSectors - 1 - (int) (mAngleOffset / mSweepAngle);
}
private void updatePoints(int angle) {
int currentSector = getCurrentSector();
mAngleOffset = mAngleOffset + angle;
while (mAngleOffset < 0) {
mAngleOffset = mAngleOffset + 360;
}
while (mAngleOffset > 360) {
mAngleOffset = mAngleOffset - 360;
}
mPoints.clear();
float newpointX, newpointY;
for (int i = 0; i < mSectors; i++) {
newpointX = (float) Math.cos(Math.toRadians(i * mSweepAngle
+ mAngleOffset))
* mRadius + mCenterX;
newpointY = (float) Math.sin(Math.toRadians(i * mSweepAngle
+ mAngleOffset))
* mRadius + mCenterY;
mPoints.add(new Coordinate(newpointX, newpointY));
}
if (getCurrentSector() != currentSector) {
mediaPlayer.start();
}
}
private class Coordinate {
public float x;
public float y;

public Coordinate(float newX, float newY) {


x = newX;
y = newY;
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
repaint();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
private void updateColors() {

mSectorColors = new int[mSectors];


switch (mSectors) {
case 2:
mSectorColors = new int[] { mColors[3], mColors[8] };
break;
case 3:
P g i n a | 82

mSectorColors = new int[] { mColors[2], mColors[6], mColors[10] };


break;
case 4:
mSectorColors = new int[] { mColors[2], mColors[4], mColors[7],
mColors[10] };
break;
case 5:
mSectorColors = new int[] { mColors[1], mColors[3], mColors[5],
mColors[7], mColors[10] };
break;
case 6:
mSectorColors = new int[] { mColors[1], mColors[3], mColors[5],
mColors[7], mColors[9], mColors[11] };
break;
case 7:
mSectorColors = new int[] { mColors[0], mColors[2], mColors[4],
mColors[6], mColors[8], mColors[9], mColors[11] };
break;
case 8:
mSectorColors = new int[] { mColors[0], mColors[2], mColors[3],
mColors[5], mColors[7], mColors[8], mColors[9], mColors[11]
};
break;
case 9:
mSectorColors = new int[] { mColors[0], mColors[1], mColors[3],
mColors[4], mColors[5], mColors[7], mColors[8], mColors[9],
mColors[11] };
break;
case 10:
mSectorColors = new int[] { mColors[0], mColors[1], mColors[2],
mColors[4], mColors[5], mColors[6], mColors[7], mColors[9],
mColors[10], mColors[11] };
break;
case 11:
mSectorColors = new int[] { mColors[0], mColors[1], mColors[2],
mColors[3], mColors[4], mColors[6], mColors[7], mColors[8],
mColors[9], mColors[10], mColors[11] };
break;
case 12:
mSectorColors = mColors;
break;
default:
mSectorColors = mColors;
}
}
/****** FIN DE LAS PINTADAS DE PALETA************/
}

Sector Edit
package com.paint.sinamistudio.ruletadenewton;

import android.database.Cursor;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
P g i n a | 83

public class SectorEdit extends AppCompatActivity {

private SectorsDbAdapter mDbHelper;


private EditText mSectorText;
private Long mRowId;
private int mPosition;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.edit_sector);
setToolbar();

mSectorText = (EditText) findViewById(R.id.sector_text);


Button buttonOk = (Button) findViewById(R.id.button_ok);
Button buttonDelete = (Button) findViewById(R.id.button_delete);

mDbHelper = new SectorsDbAdapter(this);


mDbHelper.open();

Bundle extras = getIntent().getExtras();


mRowId = extras != null ?
extras.getLong(SectorsDbAdapter.KEY_ROWID)
: null;
mPosition = extras != null ?
extras.getInt(SectorsConfig.LIST_POSITION)
: null;
populateText();

buttonOk.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// Perform action on clicks
saveState();
setResult(RESULT_OK);
finish();
}
});
if (mPosition < 2){
buttonDelete.setEnabled(false);
}
else
{
buttonDelete.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// Perform action on clicks
mDbHelper.deleteSector(mRowId);
setResult(RESULT_OK);
finish();
}
});
}

}
@Override
protected void onPause() {
super.onPause();
saveState();
}
P g i n a | 84

@Override
protected void onResume() {
super.onResume();
populateText();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
saveState();
outState.putSerializable(SectorsDbAdapter.KEY_ROWID, mRowId);
}

private void populateText() {


if (mRowId != null) {
Cursor sector = mDbHelper.fetchSector(mRowId);
startManagingCursor(sector);
mSectorText.setText(sector.getString(

sector.getColumnIndexOrThrow(SectorsDbAdapter.KEY_BODY)));
}
}

private void saveState() {


String body = mSectorText.getText().toString();
if (body.length() != 0 && mRowId != null) {
mDbHelper.updateSector(mRowId, body);
}
}

private void setToolbar() {


Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
}

Sectors Config

package com.paint.sinamistudio.ruletadenewton;

import android.app.ListActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class SectorsConfig extends ListActivity {

private static final int ACTIVITY_EDIT = 0;


public static final String LIST_POSITION = "list_position";
private SectorsDbAdapter mDbHelper;
private Cursor mSectorsCursor;
P g i n a | 85

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sectors_config);
setTitle(null);

mDbHelper = new SectorsDbAdapter(this);


mDbHelper.open();
fillData();

final Button buttonAdd = (Button) findViewById(R.id.button_add);


buttonAdd.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
RouletteInitialization initializer = new
RouletteInitialization(SectorsConfig.this);
Resources res = getResources();
String[] answers = res.getStringArray(R.array.predefined);
initializer.createRandomSector(answers);
fillData();
}
});
final Button buttonDone = (Button) findViewById(R.id.button_done);
buttonDone.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
finish();
}
});

final Button reset_b = (Button) findViewById(R.id.reset);


reset_b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
RouletteInitialization initializer = new
RouletteInitialization(SectorsConfig.this);
Resources res = getResources();
String[] answers = res.getStringArray(R.array.predefined);
initializer.initRoulette(answers);
fillData();
}
});

@Override
protected void onListItemClick(ListView l, View v, int position, long
id) {
super.onListItemClick(l, v, position, id);
Intent i = new Intent(this, SectorEdit.class);
i.putExtra(SectorsDbAdapter.KEY_ROWID, id);
i.putExtra(LIST_POSITION, position);
startActivityForResult(i, ACTIVITY_EDIT);
}

@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
fillData();
}

private void fillData() {


// Get all of the rows from the database and create the item list
P g i n a | 86

mSectorsCursor = mDbHelper.fetchAllSectors();
startManagingCursor(mSectorsCursor);
final Button buttonAdd = (Button) findViewById(R.id.button_add);
if (mSectorsCursor.getCount() < 12) {
buttonAdd.setEnabled(true);
} else {
buttonAdd.setEnabled(false);
}
// Create an array to specify the fields we want to display in the
list
String[] from = new String[] { SectorsDbAdapter.KEY_BODY };

// and an array of the fields we want to bind those fields to (in


this
// case just text1)
int[] to = new int[] { R.id.text1 };

// Now create a simple cursor adapter and set it to display


SimpleCursorAdapter sectors = new SimpleCursorAdapter(this,
R.layout.sector_text, mSectorsCursor, from, to);
setListAdapter(sectors);
}

Sectors Db Adapter

package com.paint.sinamistudio.ruletadenewton;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class SectorsDbAdapter {

public static final String KEY_BODY = "body";


public static final String KEY_ROWID = "_id";

private static final String TAG = "SectorsDbAdapter";


private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;

/**
* Database creation sql statement
*/
private static final String DATABASE_CREATE =
"create table sectors (_id integer primary key autoincrement, "
+ "body text not null);";

private static final String DATABASE_NAME = "fortunewheeldatabase";


private static final String DATABASE_TABLE = "sectors";
private static final int DATABASE_VERSION = 2;
P g i n a | 87

private final Context mCtx;

private static class DatabaseHelper extends SQLiteOpenHelper {

DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + "
to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS sectors");
onCreate(db);
}
}

/**
* Constructor - takes the context to allow the database to be
* opened/created
*
* @param ctx the Context within which to work
*/
public SectorsDbAdapter(Context ctx) {
this.mCtx = ctx;
}

/**
* Open the sectors database. If it cannot be opened, try to create a
new
* instance of the database. If it cannot be created, throw an
exception to
* signal the failure
*
* @return this (self reference, allowing this to be chained in an
* initialization call)
* @throws SQLException if the database could be neither opened or
created
*/
public SectorsDbAdapter open() throws SQLException {
mDbHelper = new DatabaseHelper(mCtx);
mDb = mDbHelper.getWritableDatabase();
return this;
}

public void close() {


mDbHelper.close();
}

/**
* Create a new sector using the body provided. If the sector is
* successfully created return the new rowId for that sector, otherwise
return
P g i n a | 88

* a -1 to indicate failure.
*
* @param body the body of the sector
* @return rowId or -1 if failed
*/
public long createSector(String body) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_BODY, body);

return mDb.insert(DATABASE_TABLE, null, initialValues);


}

/**
* Delete the sector with the given rowId
*
* @param rowId id of sector to delete
* @return true if deleted, false otherwise
*/
public boolean deleteSector(long rowId) {

return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) >


0;
}

public void deleteAll(){


mDb.delete(DATABASE_TABLE, null, null);
}

/**
* Return a Cursor over the list of all sectors in the database
*
* @return Cursor over all sector
*/
public Cursor fetchAllSectors() {

return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID,


KEY_BODY}, null, null, null, null, null);
}

/**
* Return a Cursor positioned at the sector that matches the given
rowId
*
* @param rowId id of sector to retrieve
* @return Cursor positioned to matching sector, if found
* @throws SQLException if sector could not be found/retrieved
*/
public Cursor fetchSector(long rowId) throws SQLException {

Cursor mCursor =

mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,


KEY_BODY}, KEY_ROWID + "=" + rowId, null,
null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;

}
P g i n a | 89

/**
* Update the sector using the details provided. The sector to be
updated is
* specified using the rowId, and it is altered to use the body
* values passed in
*
* @param rowId id of sector to update
* @param body value to set sector body to
* @return true if the sector was successfully updated, false otherwise
*/
public boolean updateSector(long rowId, String body) {
ContentValues args = new ContentValues();
args.put(KEY_BODY, body);

return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId,


null) > 0;
}
}

Tutorial activity

package com.paint.sinamistudio.ruletadenewton;

import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;

public class TutorialActivity extends AppCompatActivity implements


View.OnClickListener {

Button paso_uno, paso_dos, paso_tres;


MediaPlayer mp1, mp2, mp3;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tutorial);
paso_uno = (Button)findViewById(R.id.paso1);
paso_dos = (Button)findViewById(R.id.paso2);
paso_tres = (Button)findViewById(R.id.paso3);
mp1 = MediaPlayer.create(this, R.raw.grabacion_uno);
mp2 = MediaPlayer.create(this, R.raw.grabacion_dos);
mp3 = MediaPlayer.create(this, R.raw.grabacion_tres);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

paso_uno.setOnClickListener(this);
paso_dos.setOnClickListener(this);
paso_tres.setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
P g i n a | 90

case R.id.paso1:
mp1.start();
break;
case R.id.paso2:
mp2.start();
break;
case R.id.paso3:
mp3.start();
break;
}
}
}

Edid sector xml

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/layout_root"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
tools:layout_editor_absoluteY="0dp"
tools:layout_editor_absoluteX="8dp">

<android.support.v7.widget.Toolbar
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:elevation="8dp"/>

</android.support.design.widget.AppBarLayout>

<EditText android:id="@+id/sector_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center_horizontal">
<Button android:text="@string/done"
android:id="@+id/button_ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
P g i n a | 91

<Button android:text="@string/delete"
android:id="@+id/button_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
</LinearLayout>
</LinearLayout>

Sector Text xml

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>

Sectors config. Xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical">
<ListView android:id="@+id/android:list"
android:layout_alignParentTop="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/buttons"
/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/buttons"
android:layout_alignParentBottom="true"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button android:text="@string/add" android:id="@+id/button_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
<Button android:text="@string/done" android:id="@+id/button_done"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
<Button android:text="@string/reset" android:id="@+id/reset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</RelativeLayout>

Menu main menu xml


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
P g i n a | 92

>
<item android:title="MENU"
app:showAsAction="ifRoom"
>
<menu>
<item
android:id="@+id/menu_start"
android:title="Girar"
android:orderInCategory="100"/>
<item
android:id="@+id/menu_message"
android:title="Mensajes"
android:orderInCategory="300"/>
<item
android:id="@+id/menu_tutorial"
android:title="Tutorial"
android:orderInCategory="400"/>
<item
android:id="@+id/menu_developed"
android:title="Desarrolladora"
android:orderInCategory="500"/>
</menu>
</item>
</menu>

Values:

Colors xml

<?xml version="1.0" encoding="utf-8"?>


<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
</resources>

Dimens xml

<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>

Strings xml
<resources>
<string name="app_name">RAGD</string>
<string name="title">Gira la Ruleta de Newton</string>
<string name="stronger">Venga, grala un poco ms fuerte</string>
P g i n a | 93

<string name="add">Aadir</string>
<string name="done">Hecho</string>
<string name="reset">Reset</string>
<string name="delete">Eliminar</string>
<string name="menu_config">Configurar</string>
<string name="config">Configuracin</string>
<string-array name="predefined">
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
</string-array>
<string-array name="Superacion">
<item>Porque todo lo bueno empieza con miedo</item>
<item>Quien quiere hacer algo encuentra un medio, quien no quiere
hacer
nada encuentra una excusa</item>
<item>Nacimos para ser felices no para ser perfecto</item>
<item>Hoy vas a conquistar el cielo sin mirar lo alto que queda del
suelo</item>
<item>Sonre! hoy es un da excelente, para estar orgulloso de
quien eres</item>
<item>Hoy mralo de otra manera ES TU DA</item>
<item>Hoy me he puesto una sonrisa que combina con todo</item>
<item>Una persona positiva convierte sus problemas en retos nunca
en obstculos</item>
<item>Nunca dejes de intentar por miedo a equivocarte</item>
<item>Si el plan no funciona cambia el plan pero no cambies la
meta</item>
<item>Se positivo!</item>
<item>No te rindas nunca los campeones no se rinden</item>
<item>Lo que se rinden nunca ganada nada</item>
<item>Levntate y sigue...</item>
<item>Sonre como si tu da fuera el ultimo.
La vida empieza cada 5 minutos , disfrtala.
Encontraras el significado de la vida si tu lo creas.
Cuando una puerta se cierra , otra se abre.</item>
<item>Tu meta es el mejor sueo que tendrs</item>
<item>Rendirse no te lleva a nada...</item>
<item>A la cima no se llega superando a los demas, sino a ti
mismo</item>
<item>Desecha tristezas y melancolias, la vida es una sola</item>
<item>Nadie que dio lo mejor de si mismo lo ha lamentado</item>
<item>El mayor placer de la vida es hacer lo que la gente te dice
que no eres capaz de hacer</item>
<item>Tu mente es libre ten el coraje de seguirla</item>
<item>Cuando nada es seguro todo es posible</item>
<item>Enamorat de tu vida...</item>
<item>Toda persona tiene capacidad para cambiarse a si mismo
...</item>
<item>Si se quiere se puede ....</item>
<item>Seamos realistas y hagamos lo imposible...</item>
</string-array>
P g i n a | 94

<string name="title_activity_login">Sign in</string>

<!-- Strings related to login -->


<string name="prompt_email">Email</string>
<string name="prompt_password">Password </string>
<string name="action_sign_in">Sign in </string>
<string name="action_sign_in_short">Sign in</string>
<string name="error_invalid_email">This email address is
invalid</string>
<string name="error_invalid_password">This password is too
short</string>
<string name="error_incorrect_password">This password is
incorrect</string>
<string name="error_field_required">This field is required</string>
<string name="permission_rationale">"Contacts permissions are needed
for providing email
completions."
</string>
</resources>

Styles xml

<resources>

<!-- Base application theme. -->


<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>

</resources>

Manifests

Android manifest xml

<?xml version="1.0" encoding="utf-8"?>


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.paint.sinamistudio.ruletadenewton">

<!-- To auto-complete the email text field in the login form with the
user's emails -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
P g i n a | 95

android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<activity
android:name=".SectorsConfig"
android:label="Editar Mensajes"
android:theme="@style/AppTheme" />
<activity
android:name=".SectorEdit"
android:label="Editar"
android:theme="@style/AppTheme" />
<activity
android:name=".TutorialActivity"
android:label="Tutorial" />
<activity
android:name=".MainActivity"
/>
<activity android:name=".RegisterActivity"></activity>
</application>

</manifest>

Example Instrumentes Test

package com.paint.sinamistudio.ruletadenewton;

import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;

import org.junit.Test;
import org.junit.runner.RunWith;

import static org.junit.Assert.*;

/**
* Instrumentation test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing
documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();

assertEquals("com.paint.sinamistudio.ruletadenewton",
appContext.getPackageName());
P g i n a | 96

}
}

Example Unit test

package com.paint.sinamistudio.ruletadenewton;

import org.junit.Test;

import static org.junit.Assert.*;

/**
* Example local unit test, which will execute on the development machine
(host).
*
* @see <a href="http://d.android.com/tools/testing">Testing
documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
}

GRADLE SCRIPTS

Build Gradle

// Top-level build file where you can add configuration options common to
all sub-projects/modules.

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'

// NOTE: Do not place your application dependencies here; they


belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
jcenter()
}
}

task clean(type: Delete) {


P g i n a | 97

delete rootProject.buildDir
}

Model

apply plugin: 'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion "25.0.1"
defaultConfig {
applicationId "com.paint.sinamistudio.ruletadenewton"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-
core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.0.1'
compile 'com.android.support:design:25.0.1'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
testCompile 'junit:junit:4.12'
}

Gradle wrapper properties

#Sun Mar 12 14:31:48 BOT 2017


distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-
all.zip

Proguard rules pro


P g i n a | 98

# Add project specific ProGuard rules here.


# By default, the flags in this file are appended to flags specified
# in C:\Ronaldo\SDK\SDK/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following


# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Uncomment this to preserve the line number information for


# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to


# hide the original source file name.
#-renamesourcefileattribute SourceFile

Gradle properties

# Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:


# Gradle settings configured through the IDE *will override*
# any settings specified in this file.

# For more details on how to configure your build environment visit


# http://www.gradle.org/docs/current/userguide/build_environment.html

# Specifies the JVM arguments used for the daemon process.


# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m

# When configured, Gradle will run in incubating parallel mode.


# This option should only be used with decoupled projects. More details,
visit
#
http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:
decoupled_projects
# org.gradle.parallel=true

Settings gradle

include ':app'
P g i n a | 99

Local properties

## This file is automatically generated by Android Studio.


# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Wed Apr 26 21:50:15 BOT 2017
sdk.dir=D\:\\SDK\\SDK\\SDK

MENU / MAIN_MENU.XML

<?xml version="1.0" encoding="utf-8"?>


<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">

<item
android:id="@+id/menu_start"
android:title="Girar"
android:orderInCategory="100"/>
<item
android:id="@+id/menu_message"
android:title="Mensajes"
android:orderInCategory="300"/>
<item
android:id="@+id/menu_developed"
android:title="Desarrolladora"
android:orderInCategory="300"/>
</menu>

VALUES/ STRINGS.XML

<resources>
<string name="app_name">RAGD</string>
<string name="title">Gira la Ruleta de Newton</string>
<string name="stronger">Venga, grala un poco ms fuerte</string>
<string name="add">Aadir</string>
<string name="done">Hecho</string>
<string name="reset">Reset</string>
<string name="delete">Eliminar</string>
<string name="menu_config">Configurar</string>
<string name="config">Configuracin</string>
<string-array name="predefined">
<item>Problema</item>
<item>Problema</item>
P g i n a | 100

<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
<item>Problema</item>
</string-array>
<string-array name="Superacion">
<item>Porque todo lo bueno empieza con miedo</item>
<item>Quien quiere hacer algo encuentra un medio, quien no quiere
hacer
nada encuentra una excusa</item>
<item>Nacimos para ser felices no para ser perfecto</item>
<item>Hoy vas a conquistar el cielo sin mirar lo alto que queda del
suelo</item>
<item>Sonre! hoy es un da excelente, para estar orgulloso de
quien eres</item>
<item>Hoy mralo de otra manera ES TU DA</item>
<item>Hoy me he puesto una sonrisa que combina con todo</item>
<item>Una persona positiva convierte sus problemas en retos nunca
en obstculos</item>
<item>Nunca dejes de intentar por miedo a equivocarte</item>
<item>Si el plan no funciona cambia el plan pero no cambies la
meta</item>
<item>Se positivo!</item>
<item>No te rindas nunca los campeones no se rinden</item>
<item>Lo que se rinden nunca ganada nada</item>
<item>Levntate y sigue...</item>
<item>Sonre como si tu da fuera el ultimo.
La vida empieza cada 5 minutos , disfrtala.
Encontraras el significado de la vida si tu lo creas.
Cuando una puerta se cierra , otra se abre.</item>
<item>Tu meta es el mejor sueo que tendrs</item>
<item>Rendirse no te lleva a nada...</item>
<item>A la cima no se llega superando a los demas, sino a ti
mismo</item>
<item>Desecha tristezas y melancolias, la vida es una sola</item>
<item>Nadie que dio lo mejor de si mismo lo ha lamentado</item>
<item>El mayor placer de la vida es hacer lo que la gente te dice
que no eres capaz de hacer</item>
<item>Tu mente es libre ten el coraje de seguirla</item>
<item>Cuando nada es seguro todo es posible</item>
<item>Enamorat de tu vida...</item>
<item>Toda persona tiene capacidad para cambiarse a si mismo
...</item>
<item>Si se quiere se puede ....</item>
<item>Seamos realistas y hagamos lo imposible...</item>
</string-array>
</resources>
P g i n a | 101

Anexo D

Figura 1. Pantalla de inicio

Fuente: Elaboracin propia


P g i n a | 102

Figura 2. Registrarse

Fuente: Elaboracin propia


P g i n a | 103

Figura 3. Pantalla inicio

Fuente: Elaboracin propia


P g i n a | 104

Figura 4. Menu

Fuente: Elaboracin propia

Figura 5. Tutoriales
P g i n a | 105

Fuente : elaboracin propia


P g i n a | 106

Figura 6. Introducion de problemas

Fuente: Elaboracin propia


P g i n a | 107

Figura 7. Girar

Fuente: Elaboracin propia


P g i n a | 108

Figura 8. Mensaje de superacin

Fuente: Elaboracin propia


P g i n a | 109

Figura 9. Creditos

Fuente: Elaboracin propia


P g i n a | 110

Figura 10. Vuelve a empezar

Fuente: Elaboracin propia

Anexo E
P g i n a | 111

Audios

Tutorial

Pas 1
Bienvenido a RAGD
Espero que usted est listo para olvidar sus problemas
Para iniciar Ud deber
Ingresar sus problemas en cada casilla con una sola palabra significativa

Pas 2
Girar la ruleta
Presione girar; concentra tu mirada en la funcin de los colores y ve cmo se funcionan los
colores convirtindose en la nada

Pas 3
Reljate !!!
Bueno ya llegamos al punto final, entonces Ud est en una situacin de relajacin absoluta ,
Ud est apto para continuar su vida con xito y ser una persona totalmente exitosa, Ud lo puede
todo , no se rinda, hoy es su da!!!

Anexo
P g i n a | 112

rbol de Problemas

Anexo
P g i n a | 113

rbol de obj
Aumento de Felicidad, tranquilidad Disminucin del ritmo de
productividad laboral e aceptacin trabajo, mayor tranquilidad

Disminucin de la presin
Aumento del al momento de realizar
rendimiento laboral un trabajo

Incrementar un
Aumento de Mejorar el entorno Reducir la jornada ambiente de trabajo
motivacin social laboral ms relajado