Constantes

Una constante es una representación simbólica que representa un valor. El valor es conocido en tiempo de compilación, por lo que en muchos lenguajes una constante puede reemplazarse por su valor en la compilación, de forma que en tiempo de ejecución deja de existir.

Por convenio, escribiremos el nombre de una constante siempre en mayúsculas.

const double PI = 3.141592654;
public final static double PI = 3.141592654;
const double PI = 3.141592654;
PI = 3.141592654

En python, no tenemos ninguna palabra reservada que nos permita crear una constante. Tenemos dos maneras de solucionarlo.

La primera, sería crear variables con todas sus letras en mayúsculas, para dar a entender que esa variable no debe cambiar.

La segunda, sería crear un fichero que contenga el conjunto de variables con los valores deseados. Después, importaremos ese fichero, no nos va a permitir cambiar el valos de estas constantes por lo que las podemos considerar cosntantes.

const double PI = 3.141592654;

const val PI = 3.141592654
PI = 3.141592654

Hola Mundo

Cuando aprendes un lenguaje de programación el primer ejercicio que se suele realizar es el programa Hola mundo. Simplemente escribe en la consola el texto «¡Hola, mundo!».
Su función es verificar que hemos instalados correctamente las herramientas de desarrollo y somos capaces de ejecutar un programa que muestra un mensaje en pantalla.

#include <iostream>

int main () {
  std::cout << "!Hola Mundo!" << std::endl;
}
public class HolaMundo {
   public static void main(String[] args) {
      System.out.println("!Hola Mundo!");
   }
}
document.write("!Hola Mundo!");

con versión 2.4

print "!Hola Mundo!"

con versión 3.0

print("!Hola Mundo!")
namespace EspacioNombres {
    class HolaMundo {
        static void Main(string[] args) {
            System.Console.WriteLine("!Hola Mundo!");
        }
    }
}
disp("!Hola Mundo!")
fun main() {
    println("!Hola Mundo!")
}
puts "!Hola Mundo!"

Comentarios y Documentación

Comentarios

Los comentarios son muy útiles para introducir aclaraciones en el código y así mejorar su legibilidad. Los comentarios son ignorados por el compilador o intérprete.

En muchos lenguajes de programación se insiste en utilizar nombres de variables y métodos muy expresivos, de forma que los comentarios sean prácticamente innecesarios. 

// Comentario de una línea

int i = 0; // Comentarios para explicar la variable i

/* Comentario de
varias líneas */

En los lenguajes C, C++, Java, JavaScript, C# y Kotlin disponemos de dos tipos de comentarios. Usa // para comentar los caracters a la derecha. Usa /* y */ para comentar los caracteres entre ellos.

// Comentario de una línea

int i = 0; // Comentarios para explicar la variable i

/* Comentario de
varias líneas */

En los lenguajes C, C++, Java, JavaScript, C# y Kotlin disponemos de dos tipos de comentarios. Usa // para comentar los caracters a la derecha. Usa /* y */ para comentar los caracteres entre ellos.

// Comentario de una línea

i = 0; // Comentarios para explicar la variable i

/* Comentario de
varias líneas */

En los lenguajes C, C++, Java, JavaScript, C# y Kotlin disponemos de dos tipos de comentarios. Usa // para comentar los caracters a la derecha. Usa /* y */ para comentar los caracteres entre ellos.

# Comentario de una línea

i = 0 # Comentarios para explicar la variable i

""" Comentario de
    varias líneas """

''' Los strings también se pueden definir 
    usando comillas simples. Se utiliza la triple 
    comilla cuando queremos usar varias líneas '''

En Python usa el símbolo # para comentar los caracters a la derecha. También se puede introducir comentarios de varias líneas definiendo un string sin asignar por medio de triple comillas """ o '''.

// Comentario de una línea

i = 0; // Comentarios para explicar la variable i

/* Comentario de
varias líneas */

En los lenguajes C, C++, Java, JavaScript, C# y Kotlin disponemos de dos tipos de comentarios. Usa // para comentar los caracters a la derecha. Usa /* y */ para comentar los caracteres entre ellos.

% Comentario de una línea

i = 0 % Comentarios para explicar la variable i

%% Divisor de sección

En MATLAB usa el símbolo % para comentar los caracters a la derecha. También se puede introducir un divisor de sección con % más un espacio.

// Comentario de una línea

var i: Int // Comentarios para explicar la variable i

/* Comentario de
varias líneas */

En los lenguajes C, C++, Java, JavaScript, C# y Kotlin disponemos de dos tipos de comentarios. Usa // para comentar los caracters a la derecha. Usa /* y */ para comentar los caracteres entre ellos.

# Comentario de una línea

i = 0 # Comentarios para explicar la variable i

=begin 
aquí comienza un comentario 
de varias líneas
=end i = i + 1 #Esto ya no es un comentario

En Ruby y Perl usa el símbolo # para comentar los caracters a la derecha. Puedes insertar comentarios de varias líneas usando la notación POD

Documentación

Muchos lenguajes de programación incorporan sistemas que nos permiten documentar las clase, funciones o variables en el mismo fichero donde escribimos el código. Es similar a los comentarios, pero con la ventaja que la documentación es reconocida por el sistema. Gracias a esto podremos generar la documentación de nuestro código de forma automática, o que nuestras clases o funciones se incorporen automáticamente al sistema de ayuda del entorno de desarrollo.

Veamos un ejemplo. Muchos entornos de desarrollo muestran información sobre una función cuando situamos el ratón sobre ella. Si has escrito documentación para una función escrita por ti, cuando sitúes el ratón sobre tu función, también mostrará la ayuda:

 
/**
 * Aquí comienza la documentación de la clase.
 * Explicamos su uso.
 * @author Nombre del autor
 */
public class Clase {
   /**
    * Documentación de la variable
    */
   private int variable;
 
   /**
    * Documentación de un método. 
    * Calcula una potencia
    *
    * @param base La base de la potencia
    * @param exponete El exponente de la potencia
    * @return Devuelve la base elevada al exponente
    * @throws UndefinedException si ambos parámetros son 0
    */
   public double potencia(double base, double exponente) throws UndefinedException{
      //...código
   }
}

Java utiliza un sistema de comentarios para documentar el código conocido como javadoc. Todo comentario que introduzcamos de la forma /** … */ será utilizado por Java para documentar el elemento que es definido a continuación. Este elemento puede ser una clase, una variable o un método. Podemos usar etiquetas usando el carácter @.


class Clase(object):
   """
   Este es el docstring que permite documentar esta clase.
   Tradicionalmente se utiliza triple comilla, para poder usar varias líneas.
   Pero no es obligatorio.
   """
   def potencia(base, exponente):
      """Este es el docstring del método."""
      pass

En Python utiliza un String literal en la primera expresión tras una clase, módulo o función para documentarlos. Este String se conoce como docstring y puedes consultarlo en tiempo de ejecución usando el atributo .__doc__.

El módulo pydoc genera automáticamente documentación a partir de módulos Python. La documentación puede presentarse como páginas de texto en la consola, servirse en un navegador web o guardarse en archivos HTML. La información mostrada se obtiene del atributo .__doc__ Desde el interprete usa el comando help(Clase) para que pydoc nos muestre información sobre la clase.



/**
 * Aquí comienza la documentación de la clase.
 * Explicamos su uso.
 * @author Nombre del autor
 * @since version 1.1.51.
 * @param T Explicación del usu del tipo T.
 * @property propiedad Explicación de esta propiedad.
 * @constructor Explicación del constructor.
 */
public class Clase<T>(val propiedad:String) {
   /**
    * Documentación de un método. 
    * Calcula una potencia
    *
    * @param base La base de la potencia
    * @param exponete El exponente de la potencia
    * @return Devuelve la base elevada al exponente
    * @throws UndefinedException si ambos parámetros son 0
    */
   fun potencia(base: Double, exponente: Double): Double {
      //...código
   }
}

Kotlin utiliza un sistema de comentarios para documentar el código conocido como KDoc. ES muy similar a Javadoc. Todo comentario que introduzcamos de la forma /** … */ será utilizado para documentar el elemento que es definido a continuación. Este elemento puede ser una clase o un método. Podemos usar etiquetas usando el carácter @.

Máster Android: Información

Maestria online en la UPV en Desarrollo Aplicaciones Android

Hazte un experto en desarrollo de Aplicaciones Android, recibiendo un titulo de Máster por la Universidad Politécnica de Valencia

Si perteneces a algún país de Latinoamérica, te puedes beneficiar de las condiciones especiales:

- Descuento en el precio de la matrícula para países de la lista

- Envío del material a tu domicilio sin coste adicional (libros de Android la editorial Marcombo).

- Envío del título del Master físicamente expedido por la Universidad Politécnica de Valencia.

- Tramitación del título de Máster /Diploma Apostillado para que tenga la misma validez en tu país.

- Posibilidad de realizar prácticas en empresa de forma online.

Existen varios itinerarios formativos. Infórmate.

Quiero recibir información

*Nombre: *Correo: Teléfono: Comentarios: (*) campo obligatorio

Puedes consultar el dossier aquí

Máster Android: Información

Máster online en la UPV en Desarrollo Aplicaciones Android

Hazte un experto en desarrollo de Aplicaciones Android, recibiendo un titulo de Máster por la Universidad Politécnica de Valencia

Si perteneces a algún país de Latinoamérica, te puedes beneficiar de las condiciones especiales:

- Descuento en el precio de la matrícula para países de la lista

- Envío del material a tu domicilio sin coste adicional (libros de Android la editorial Marcombo).

- Envío del título del Master físicamente expedido por la Universidad Politécnica de Valencia.

- Tramitación del título de Máster /Diploma Apostillado para que tenga la misma validez en tu país.

- Posibilidad de realizar prácticas en empresa de forma online.

Existen varios itinerarios formativos. Infórmate.

Quiero recibir información

*Nombre: *Correo: Teléfono: Comentarios: (*) campo obligatorio

Puedes consultar el dossier aquí

Preguntas frecuentes

Itinerarios:

El Máster son 60 créditos, puedes hacer el Máster en un año académico o bien primero el Diploma que son 30 créditos el primer año y al siguiente amplias a Máster, haciendo los otros 30 créditos.

También puedes realizar asignaturas sueltas si son de tu interés y si más adelante decides ampliar a Diploma o Máster, te convalidan las asignaturas superadas que hayas realizado.
 

Clases y tutorías:

Las clases se realizan a través de Adobe connect y son participativas donde si que hay interacción entre el alumno y el profesor.
Además, estas clases se graban por si no puedes asistir en el horario establecido, que suele ser por las tardes a partir de las 18:00 hora española.
Se cuelgan de la plataforma Poliformat en dos formatos para facilitar el visionado de las clases.
Las tutorías también se pueden solicitar bajo demanda.
 

Material a entregar:

Con la matricula se entregan los libros de la editorial Marcombo actualizados en cada edición, tanto los libros como el envío están incluidos en la matricula. Estos sirven de apoyo a los cursos.
Las unidades estarán además actualizadas en la plataforma de Poliformat en formato pdf, para facilitar los ejercicios y poder copiar el código.
 

Horarios:

Hay un calendario con los días que se imparten las asignaturas, donde tienen una fecha de comienzo y una de fin, pero si no se puede asistir siempre se puede ver las grabaciones de las clases que estarán en la poliformat.


Metodología:

Cada asignatura se compone de unidades que tienen clases una vez a la semana, (mirar el calendario), tutorías y donde se repasan los conceptos con el pdf subido a recursos de la plataforma. Además, se afianza los conceptos con las preguntas de repaso de la unidad y se presentan tareas una o dos unidades, dependerá de la asignatura. Y finalmente se realiza un examen tipo test en la plataforma.

 

Proyecto:

Tanto el Máster como el Diploma tienen Proyecto Final, por lo que si has realizado el Diploma y luego amplias a Máster solo realizas la ampliación de la asignatura del Proyecto que será por los créditos restantes.
Se entrega una memoria del proyecto y se recomienda hacer presentación.
Posibilidad de poder realizar el proyecto final como practicas en empresa a través del SIE de la UPV


Formas y métodos de pago:

Mediante transferencia o tarjeta de crédito
Se puede hacer el pago en una sola cuota o bien fraccionarlo en 4 cuotas siendo el 50% al inicio y el otro 50% en 3 cuotas cada 2 meses.


Matricula:

Se realiza a través de la página del www.cfp.upv.es buscando el titulo correspondiente de la preinscripción online, donde te das de alta en el CFP, rellenas tus datos, y subes la documentación correspondiente DNI o Pasaporte y titulación universitaria.
Pasaras a preinscripción y en el momento que se acepte tu matricula te mandarán un mail con la confirmación de la misma.
Si necesitas ayuda con la matricula puedes contactar con beatigi@upvnet.upv.es
Enlace matricula Máster
Enlace matricula Diploma


Requisitos:

Los requisitos son saber programar en cualquier lenguaje si es Java mejor y poseer una titulación universitaria de cualquier carrera. O bien estar en el último año de carrera con menos de 30 créditos por superar, incluido el TFG. En este último caso se guarda la nota y el titulo del Máster /Diploma se expide cuando se acaba la carrera universitaria.


¿Que pasa si mi titulo es de un país fuera de la unión europea?

Para realizar la matricula no tendrás ningún problema, pero a la hora de la expedición del titulo del Diploma o Máster deberás de tener tu titulación universitaria apostillada.
Por lo que tienes de plazo hasta final del curso para poder apostillar/legalizar el titulo.
Esto es un tramite relativamente sencillo que se suele realizar en el país de origen donde se emitió el titulo universitario.


¿Que pasa si no poseo titulación universitaria?

Como caso excepcional existe la posibilidad de poder realizar la totalidad del Máster y Diploma como experiencia laboral demostrada en el sector de más de tres años, esta valoración la realiza el director del titulo con la vida laboral del aspirante.
En este caso, el alumno nunca recibe el titulo del Máster o Diploma como tal sino un certificado por cada una de las asignaturas que supera.


Precios y descuentos:

Máster 60 ECTS

El precio del público en general son 3000€
Periodo promocional (del 10/06/18 al 31/10/18) 2300€
Colectivos con descuento 2000€
Los colectivos son relación UPV (trabajadores, antiguos alumnos y alumnos), Desempleados y Profesores Primaria, ESO, Universidad (añadir al expediente documentación que lo justifique)
Países de rentas bajas. Consultar listado en: http://www.androidcurso.com/images/pdf/wblist.pdf


Diploma 30 ECTS

El precio del público en general son 1500€
Periodo promocional (del 10/06/18 al 31/10/18) 1260€
Colectivos con descuento 1100€
Los colectivos son relación UPV (trabajadores, antiguos alumnos y alumnos), Desempleados y Profesores Primaria, ESO, Universidad (añadir al expediente documentación que lo justifique)
Países de rentas bajas. Consultar listado en: http://www.androidcurso.com/images/pdf/wblist.pdf


Asignaturas de forma modular:

Las asignaturas que se realicen de forma modular o sueltas salvo ofertas puntuales son precio de 46,25 por crédito.
Ejemplo: Firebase trabajando en la Nube (8 ECTS)
Público en general: 370€
Colectivo con descuento: 310€
Si decides hacer primero una o varias de las asignaturas y quieres continuar ampliando a Máster o Diploma te convalidan las asignaturas que ya tengas superadas.
 

prueba editor

Hola link

Hola link

Hola link

hola 3
 

Máster Información

Máster online en la UPV en Desarrollo Aplicaciones Moviles

Hazte un experto en desarrollo de Aplicaciones Moviles recibiendo un titulo de Máster por la Universidad Politécnica de Valencia

Si perteneces a algún país de Latinoamérica, te puedes beneficiar de las condiciones especiales:

- Descuento en el precio de la matrícula para países de la lista

- Envío del material a tu domicilio sin coste adicional (libros de Android la editorial Marcombo).

- Envío del título del Master físicamente expedido por la Universidad Politécnica de Valencia.

- Posibilidad de realizar prácticas en empresa de forma online.

Existen varios itinerarios formativos. Infórmate.

Quiero recibir información

*Nombre: *Correo: Teléfono: Comentarios: (*) campo obligatorio

Puedes consultar el dossier aquí

Condiciones paises Latinoamerica

Si perteneces a algún país de Latinoamérica, te puedes beneficiar de las condiciones especiales:

Descuento en el precio de la matrícula para países de la lista

Envío del material a tu domicilio sin coste adicional (libros de Android la editorial Marcombo)

Envío del título del Master /Diploma físicamente expedido por la Universidad Politécnica de Valencia.

Tramitación del título de Máster /Diploma Apostillado para que tenga la misma validez en tu país

Puedes consultar el dossier aquí

Existen varios itinerarios formativos, puedes realizar el Máster en un año, un año el Diploma y al siguiente amplias a Máster.

O bién por asignaturas sueltas tu decides.

Pidemos información mandando un correo a beatigi@upvnet.upv.es

 

Programa Avanzado

El curso  “ANDROID: PROGRAMACIÓN AVANZADA” de forma parte del “Diploma de Especialización  en Desarrollo de Aplicaciones para Android” de la UPV

Se divide en:

MÓDULOS FORMATIVOS

UNIDAD 1

Diseño avanzado de interfaces de usuario

  • Comprender el funcionamiento de los Fragments
  • Usar la barra de acciones y Navigation Drawer
  • Aprender a realizar animación de propiedades

UNIDAD 2.

Creación de vistas personalizada

  • Crear nuevas vistas modificando o combinando vistas existentes
  • Crear una vistas desde cero
  • Aprender a integrar un widget de escritorio en nuestra aplicación

UNIDAD 3.

Hilos para el interfaz del usuario

  • Comprender el funcionamiento del hilo del interfaz de usuario
  • Aprender el uso de AsyncTask para crear nuevos hilos
  • Crear animaciones con SurfaceView

UNIDAD 4

Conectividad con Bluetooth

  • Comprender el funcionamiento de Bluetooth
  • Crear una comunicación entre dos dispositivos de Android
  • Crear una comunicación entre un dispositivo de Android y un ordenador personal.

UNIDAD 5

Servicios en la nube

  • Comprender el funcionamiento de los servicios en la nube
  • Introducir  servicios ofrecidos por Google
  • Dominar el uso de las notificaciones push
  • Almacenar datos  en la nube con Google Drive
  • Conocer los servicios de Backup de Google

UNIDAD 6

Aplicaciones Web en Android

  • Comprender las bases de las tecnologías Web
  • Aprender a usar de WebView
  • Realizar Aplicaciones híbridas
  • Conocer alternativas en la programación independiente de la plataforma para móviles

UNIDAD 7

Programación en código nativo

  • Conocer cuando es interesante desarrollar en código nativo
  • Aprender a instalar Android NDK
  • Utilizar correctamente el interface JNI
  • Introducir el proceso de imágenes en código nativo

UNIDAD 8

Redes sociales

  • Conocer cómo sacarles provecho a las redes sociales
  • Integrar nuestras aplicaciones con Facebook
  • Integrar nuestras aplicaciones con Twitter
UNIDAD 9

Ingeniería inversa en Android

  • Aprender a obtener el código Java de aplicaciones publicadas
  • Modificar aplicaciones de terceros
  • Ofuscar el código de nuestras aplicaciones
  • Usar licencias con Google Play
 

Programa Disp. Wearable, Android TV/Auto, Visión Artificial

El curso "Disp. Wearable, Android TV/Auto, Visión Artificial", de forma parte del “Diploma de Especialización  en Desarrollo de Aplicaciones para Android” de la UPV

Se divide en:

MÓDULOS FORMATIVOS

 

PARTE 1  - Análisis Imagen en Android usando OpenCV

UNIDAD 1.

  •  Introducción al procesado de imágenes
  •  OpenCV: Instalación y un primer proyecto
   

UNIDAD 2.

  • Preprocesado: transformaciones de intensidad y operadores locales
   

UNIDAD 3

  • Binarización y segmentación de objetos
  •  Reconocimiento de dígitos
Proyecto

 Detección de imágenes de tráfico

 

PARTE 2  - Android WEAR y Android Auto

 

Android Wear

UNIDAD 4

  • Diseño y usabilidad para Wearable
  • Entorno de desarrollo, emulador y primer proyecto
  • Entrada por voz, Notificaciones, ...
   

UNIDAD 5

  • Creación de interfaces de usuario personalizados
  • Publicar aplicaciones para Wearable
 

Android Auto

UNIDAD 6

 

  • Desarrollo de Aplicaciones, mensajería y multimedia
  • Patrones de diseño y publicación
   
Proyecto

Wear: Aplicación para Pédel

Auto: Reproductor Multimedia

   
 

PARTE 3 - Desarrollo para TV y Google Play Game

   

UNIDAD 7

  • El entorno Android TV y sus aplicaciones
  • Recomendaciones y búsquedas

UNIDAD 8

  • Google Cast: Aplicación emisora sobre Android y sobre HTML5
  • Miracast en Android

UNIDAD 9

  • Google Play Game: Aplicaciones multijugador en tiempo real y por turnos.
  • Logros, marcadores, eventos, misiones y regalos...
   
Proyecto

 GPD: Juego mulltijugador online

Android TV: Videoteca

Miracast: Pictionary

Google Cast: Voluntaria

 
Si quieres información sobre este curso o sobre el Diploma o Máster,  mandanos un correo a beatigi@upvnet.upv.es
 

Preguntas frecuentes

preguntas de android

 

¿Quién se puede matricular en el Diploma y en los cursos?

Para la matriculación del Diploma de Especialista Universitario, deberán  poseer una titulación universitaria (en cualquier especialidad) o estar matriculado en el último curso.

Excepcionalmente se puede realizar una asignatura del Diploma obteniendo solo un certificado NO el Diploma, aquellos alumnos que acrediten más de tres años de experiencia  laboral relacionada con el programa de estudios al que se pretende acceder, para estos casos mejor ponerse antes en contacto por correo beatigi@upvnet.upv.es y exponer el caso.

Aunque en cuanto esté disponible el Master formado por los dos Diplomas que se detallan a continuación  la asignatura de -Android: Fundamentos de Programación (10 cred.) será de acceso al público en general sin requisitos de acceso universitario:

DIPLOMA DE ESPECIALIZACIÓN EN DESARROLLO DE APLICACIONES PARA ANDROID

DIPLOMA DE ESPECIALIZACIÓN EN COMPUTACIÓN MÓVIL Y UBICUA

COMO SE REALIZA LA MATRICULACIÓN:

La matriculación se hace a través de la página del CFP:

En estos momentos está disponible la pre-inscripción del curso, donde si no tienes ficha en el CFP (Centro de Formación Permanente), deberás rellenar la ficha de inscripción con tus datos.

Enlace para la pre-inscripción del Diploma completo:

14.DEDAA DIPLOMA DE ESPECIALIZACIÓN EN DESARROLLO DE APLICACIONES PARA ANDROID

Los alumnos que quieran matricularse del DEU_Android completo y que hayan realizado anteriormente algún curso de los que se pueden convalidar como:

ANDROID: PROGRAMACIÓN DE APLICACIONES PARA MÓVILES

ANDROID ONLINE: PROGRAMACIÓN AVANZADA

Deberán matricularse de los módulos sueltos  que les falten para conseguir el título propio.

14.DEDAA-49991. ANDROID: FUNDAMENTOS DE PROGRAMACION

14.DEDAA-49992. ANDROID: PROGRAMACION AVANZADA

15.DEDAA-49993. GOOGLE GLASS Y DISPOSITIVOS WEARABLE

15.DEDAA-49994. PROYECTO DEL DIPLOMA DE ESPECIALIZACION EN DESARROLLO DE APLICACIONES PARA ANDROID (solo lo podrán hacer los que opten al Diploma completo)

En el siguiente enlace de la publicidad del curso se pueden ver el temario, fechas y precios..

Página de publicidad del curso del DEU_Android

¿Qué conocimientos previos de programación debo tener?

Para el de Fundamentos de programación:

En el curso se utilizará el lenguaje de programación Java. Es recomendable tener conocimientos sobre este lenguaje. No obstante no resulta imprescindible haber trabajado con Java; si conoces otros lenguajes de programación (especialmente si se trata de C, C++ u otro lenguaje orientado a objetos) no tendrás excesivos problemas para seguir el curso.

Si no tienes nociones de programación este curso no está indicado para ti.

NOTA: Las particularidades de Java serán explicadas a medida que aparezcan; se proporcionará material para iniciarse en Java y se creará un foro para la resolución de dudas sobre Java.

¿Qué pasa si no puedo asistir a las sesiones por el Policonecta?

Podrás acceder  a las clases por Policonecta desde cualquier ordenador con acceso a Internet. En esta clase se resolverán dudas de caracter general y se hará una introducción de cada tema.

Aquellos alumnos que no puedan asistir en directo, podrán acceder a las grabaciones de las clase. 

¿Cómo recibo el libro?

El libro se entregará en la clase de presentación (única que se realizará de forma presencial).
Aquellos alumnos que no puedan asistir a esta clase, podrán verla y participar a través de Policonecta. Estos alumnos recibirán el libro por correo postal. Es imprescindible confirmar la dirección postal de envío.

¿Cómo recibo el certificado?

El certificado de aprovechamiento es emitido y enviado por el Centro de Formación Permanente de la UPV. Será enviado por correo postal a la dirección facilitada en la matrícula.

¿Qué es Policonecta, Poliformat, Polimedia …?

Son las herramientas para la teleformación de la Universidad Politécnica de Valencia.

Para una descripción más detallada accede a: http://www.androidcurso.com/index.php/teleformacion/herramientas

¿Si tengo dudas con los ejercicios o me atasco como las puedo resolver?

La atención personalizada resulta fundamental en una materia como programación.
En el curso dispondrás de un sistema de tutorías descrito en: http://www.androidcurso.com/index.php/teleformacion/tutorias

¿Si me quedo fuera del curso por falta de plazas como me entero de las siguientes ediciones?

Sería interesante mandar un correo electrónico  a beatigi@upvnet.upv.es. Así te avisemos en las próximas ediciones del curso, y podrás apuntarte de los primeros.

Subvencionado para empresas

Todos los cursos de la Universidad politécnica de Valencia pueden ser subvencionados a través de la  "Fundación tripartita"

Las empresas disponen de un crédito para financiar la formación de sus trabajadores cuyo importe se obtiene al aplicar a la cuantía ingresada por cada empresa el año anterior, en concepto de cuota de formación profesional, el porcentaje que anualmente se establece.

Ejemplo: en empresas de  4 ó 5 trabajadores hasta 400€ .

Para más información llamar al 900 200 800 o bien entrar en:

http://www.fundaciontripartita.org/Empresas

Ediciones

 

Fecha inicio

Empresa

Lugar

Horas

16/03/2010

Vodafone

Barcelona

25

08/06/2010

Centro Formación Permanente (UPV)

Valencia

30

17/06/2010

Centro Formación Permanente (UPV)

Valencia

35

12/07/2010

Centro Formación Permanente (UPV)

Valencia

35

11/07/2011

Campus de Verano (UPV)

Gandia

20

15/07/2011

Centro Formación Permanente (UPV)

Valencia

35

22/06/2011

TRAGSA

Paterna

30

05/09/2011

ProSolutions

Santa Cruz de Tenerife

30

20/09/2011

VAERSA

Valencia

30

01/10/2011

Colegio de Ingenieros de Telecomunicaciones de

la Comunidad Valenciana

Valencia

35

01/12/2011

Centro Formación Permanente (UPV)

onLine

200

01/06/2012 Centro Formación Permanente (UPV) onLine 250
23/07/2012 Urbalab Gandia 25
03/10/2012 Centro Formación Permanente (UPV) onLine 250
31/01/2013 Curso MOOC Miriadax  de la UPV onLine 120
27/02/2013
Centro Formación Permanente (UPV)
onLine AVANZADO 190
03/07/2013 Centro Formación Permanente (UPV) onLine

250

22/07/2013 Campus de Verano (UPV) Gandía 20
13/11/2013 Centro de Formación Permanete online AVANZADO 190
18/02/14 Curso MOOC  de la UPVX online  

 

Datos de contacto

 

Jesús Tomás Gironés

Departamento de Comunicaciones

Universidad Politécnica de Valencia

e-mail: jtomas@upv.es

 

Beatriz Tirado Gil

Inst. Inv. Gestión Integrada Zonas Costeras (IGIC)

Universidad Politécnica de Valencia

e-mail: beatigi@upvnet.upv.es

Datos de interes

Fecha inicio: 1-12-2011

Fecha fin: 23-2-2012

Clases a través de Poni[Conecta]: Jueves de 19:00 a 22:00 (excepto 8/12/211 que se realizará en 7/12/2011).

Duración: 200 horas de trabajo del alumno distribuidas a lo largo de 12 semanas

Dedicación recomendada: 17 horas de estudio semanales

Precio: 300 € (incluye: libro, acceso a material didáctico, asistencia a clases por teleconferencia, tutorías, evaluación y certificación)

Inscripción: Pulsar aquí

Presentación

Presentación

 La Universidad Politécnica de Valencia a través del Centro de Formación Permanente está impulsando el e-learning como una herramienta útil y necesaria para la formación permanente, apostando por el desarrollo de sistemas de aprendizaje, flexibles, interactivos y colaborativos. Debido a la gran acogida del curso “Android: Programación de aplicaciones para móviles” en modo presencial y a las expectativas que abre esta nueva plataforma, se propone su edición online.

 La telefonía móvil está cambiando la sociedad actual de una forma tan significativa como lo ha hecho Internet. Esta revolución no ha hecho más que empezar, los nuevos terminales ofrecen unas capacidades similares a un ordenador personal, lo que permite que puedan ser utilizados para leer nuestro correo o navegar por Internet. Pero a diferencia de un ordenador, un teléfono móvil siempre está en el bolsillo del usuario. Esto permite un nuevo abanico de aplicaciones mucho más cercanas al usuario. De hecho, muchos autores coinciden en que el nuevo ordenador personal del siglo veintiuno será un terminal móvil.

El lanzamiento de Android como nueva plataforma para el desarrollo de aplicaciones móviles ha causado una gran expectación y está teniendo una importante aceptación tanto por los usuarios como por la industria. En la actualidad se está convirtiendo en una seria alternativa frente a otras plataformas como Symbian, iPhone o Windows Phone.

A lo largo del curso se estudiarán las características de Android, que lo hacen diferente de sus competidores. Se explicará también cómo instalar y trabajar con el entorno de desarrollo (Eclipse + Android SDK). Se desarrollará desde un punto de vista práctico los aspectos necesarios para la implementación de aplicaciones sobre Android, haciendo especial hincapié en los elementos más novedosos de esta plataforma. Incluyendo: el diseño de interfaz de usuario, gráficos, posicionamiento, sensores, multimedia, seguridad, Internet,…

Profesorado del “Diploma de Especialización  en Desarrollo de Aplicaciones para Android” y "Master en Desarrollo de Aplicaciones Móviles".

La mayor parte de la formación la imparten profesores de varias universidades, con amplia experiencia docente y profesional en el desarrollo de aplicaciones.  Se complementan con profesionales externos a la universidad. Pues es bueno poder disponer de la experiencia del trabajo de las empresas del sector.

Profesor Empresa
Jesús Tomás Dpto.Comunicaciones de la UPV
Antonio Albiol Dpto.Comunicaciones de la UPV
Jordi Bataller Dpto. Informática de la UPV
Miguel Garcia Dpto. Informática en la ETSI de la UV
Vicente Carbonell Sector privado Plasfesa
Gonzalo Puga Ayut. de Albuñol
Jorge Barroso Google Developer Expert (GDE)
Adrián Catalán Google Developer Expert (GDE) Universidad Galileo

 

 

 

 

 

 

 

Beatriz Tirado –(coordinadora) técnico del Instituto de Gestión Integrada de Zonas Costeras (IGIC) de la UPV

Uso de adaptadores en ListView (introducción)

En el ejercicio anterior hemos visto como podíamos asociar un Layout definido por nosotros al ListView y personalizar uno de sus campos. Si queremos algo más adaptable, por ejemplo cambiar varios campos, tendremos que escribir nuestro propio adaptador extendiendo la clase BaseAdapter.

Para crear un descendiente de BaseAdapter has de sobrescribir los siguientes cuatro métodos:

  • View getView(int position, View convertView, ViewGroup parent) Este método ha de construir un nuevo objeto View que corresponda a la posición position . Opcionalmente podemos partir de una vista base convertView para generar más rápido  este objeto. El último parámetro corresponde al contenedor de vistas donde el objeto va a ser añadido.
  • int getCount() Devuelve el número de elementos de la lista. 
  • Object getItem(int position) Devuelve el elemento en una determinada posición de la lista.
  • long getItemId(int position) Devuelve el identificador de fila de una determinada posición de la lista.

Veamos un ejemplo:

Ejercicio paso a paso: Un ListView con nuestro propio adaptador

1. Crea la clase AdaptadorLugares en el proyecto con el siguiente código:

public class AdaptadorLugares extends BaseAdapter { 
     private LayoutInflater inflador; // Crea Layouts a partir del XML
     TextView nombre, direccion;
     ImageView foto;
     RatingBar valoracion;
     public AdaptadorLugares(Context contexto) {
          inflador =(LayoutInflater)contexto
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     }
     public View getView(int posicion, View vistaReciclada, 
                                        ViewGroup padre) {
          Lugar lugar =MainActivity.lugares.elemento(posicion);
          if (vistaReciclada == null) {
               vistaReciclada= inflador.inflate(R.layout.elemento_lista, null);
          }
          nombre = (TextView) vistaReciclada.findViewById(R.id.nombre);
          direccion = (TextView) vistaReciclada.findViewById(R.id.direccion);
          foto = (ImageView) vistaReciclada.findViewById(R.id.foto);
          valoracion = (RatingBar) vistaReciclada.findViewById(R.id.valoracion);
          nombre.setText(lugar.getNombre());
          direccion.setText(lugar.getDireccion());
          int id = R.drawable.otros;
          switch(lugar.getTipo()) {
            case RESTAURANTE:id = R.drawable.restaurante; break;
            case BAR:        id = R.drawable.bar;         break;
            case COPAS:      id = R.drawable.copas;       break;
            case ESPECTACULO:id = R.drawable.espectaculos; break;
            case HOTEL:      id = R.drawable.hotel;       break;
            case COMPRAS:    id = R.drawable.compras;     break;
            case EDUCACION:  id = R.drawable.educacion;   break;
            case DEPORTE:    id = R.drawable.deporte;     break;
            case NATURALEZA: id = R.drawable.naturaleza;  break;
            case GASOLINERA: id = R.drawable.gasolinera;  break;
          }
          foto.setImageResource(id);
          foto.setScaleType(ImageView.ScaleType.FIT_END);
          valoracion.setRating(lugar.getValoracion());  
          return vistaReciclada;
     }

     public int getCount() {
          return MainActivity.lugares.size();
     }
     public Object getItem(int posicion) {
          return MainActivity.lugares.elemento(posicion);
     }

     public long getItemId(int posicion) {
          return posicion;
     }
}

En el constructor de la clase creamos un inflater en el objeto inflador. Un inflater es una herramienta que nos permite crear un objeto Java a partir de un fichero XML que lo describe. El el ejemplo cremaos un inflater para layouts.

En esta clase el método más importante es getView(), que usa el sistema para pedir cada uno de los elementos a insertar. Cuando se llame a getView(), nos indicarán tres parámetros: la posición del elemento a insertar, una vista reciclada y el layout contenedor donde se insertará el elemento. Este método ha de devolver una vista con la información adecuada del elemento a insertar.

El parámetro vistaReciclada se utiliza para mejorar el rendimiento en la creación de vistas. Para la primera llamada a getView(), este parámetro será nulo y tendremos que crear una nueva vista e inflarla con el inflater desde un XML (este proceso puede ser algo lento). Pero para las siguientes llamadas, este parámetro contendrá la vista devuelta por nosotros en la llamada anterior, para esta posición. De esta forma ya no será necesario crearla desde cero y solo tendremos que modificar sus características y devolverla. El resto del método se utiliza para actualizar cada campo, según el lugar a representar.

Nota:En este ejemplo el  BaseAdapter  devuelve siempre el mismo tipo de vista. Aunque esta es la forma más habitual de trabajar, no tiene por qué ser necesariamente así. Cada elemento devuelto desde getView() podría ser una vista totalmente diferente a las demás.

Finalmente tenemos que definir tres métodos que permiten acceder a la información representada. El método getCount() será el que indique cuántos elementos queremos mostrar. El método getItem() devolverá el objeto libro que se muestra en una determinada posición. El método getItemId() devolverá el id que se muestra en una determinada posición. El id es un valor numérico que identifica cada elemento. Si utilizamos un vector se suele utilizar el índice del vector como id, mientras que en bases de datos suele ser el campo de indexación principal. En esta primera versión del adaptador se muestran todos los lugares en el mismo orden en que los tenemos en el vector, por lo tanto, el id coincide con la posición. Más adelante mostraremos un ejemplo más complejo donde ya no ocurrirá esto.

2. Reemplaza en la clase onCreate() de la clase MainActivityla inicialización de adaptadorpor:

adaptador = new AdaptadorLugares(this);

3. Ejecuta la aplicacióny verifica el resultado.

NOTA: En algunos casos el adaptador ha de trabajar con listas muy grandes o estas listas han de ser creadas desde un servidor. En estos casos es mejor ir solicitando la información a medida que se va representando. Un ejemplo se muestra en la aplicación ApiDemos descrita en el capítulo 1, en la actividad: com.example.android.apis.view.List13

Detectar una pulsación sobre un elemento de la lista

Un ListView puede tener diferentes componentes que nos permitan interaccionar con el usuario. Por ejemplo, cada elemento definido en getView() puede tener botones para diferentes acciones.

Hay un tipo de interacción muy sencilla de definir. La clase ListActivity tiene un método que es invocado cada vez que se pulsa sobre un elemento de la lista. El siguiente ejercicio ilustra cómo utilizarlo.

Ejercicio paso a paso: Detectar una pulsación sobre un elemento de la lista

1. Haz que la clase MainActivity clase implemete el interfaz OnItemClickListener  añadiendo el código subrayado:

public class MainActivity extends ActionBarActivity
                          implements OnItemClickListener {
   …
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      …
     
      listView.setOnItemClickListener(this);
   }
   …

En este caso vamos a definir un escuchador de eventos. Los eventos son generados por el listView cuando se pulsa sobre el, y son escuchados por nuestra clase (this). Para conseguir esto, nuestra clase ha de implementar el interfaz OnListItemClick. Y al listView le indicamos que nos mande  a nosotros los eventos mediante setOnListItemClick(this)(this).

2. Añade el siguiente método  a la clase:

@Override
protected void onItemClick(AdapterView parent,View vista,
                                            int posicion, long id){
   Intent i = new Intent(this, VistaLugar.class);
   i.putExtra("id", id);
   startActivity(i);
}

El método onItemClick() dispone de cuatro parámetros: el adaptador que se ha llamado, la vista pulsada dentro de este listView, la posición del elemento pulsado y su id.

3. Ejecuta la aplicación, pulsa sobre un lugar para ver su de información detallada.

[1] Para saber más sobre clases genéricas puedes ver el siguiente Polimedia http://youtu.be/N3yy2pfUaE0.

La vista ListView (introducción)

Una vista ListView visualiza una lista deslizable verticalmente de varios elementos, donde cada elemento puede definirse como un Layout .Su utilización es algo compleja, pero muy potente. Un ejemplo lo podemos ver en la siguiente figura:

Definir un ListView conlleva los siguientes cuatro pasos:

  • Diseñar un Layout que lo contenga al ListView
  • Diseñar un Layout individual que se repetirá en la lista
  • Implementar una actividad que lo visualice el Layout con el ListView
  • Personalizar cada una de los Layouts individuales según nuestros datos  

Veamos estos pasos con más detalle:

Para utilizar un ListView dentro de un Layout puedes usar la siguiente estructura:

<FrameLayout>
       <ListView
              android:id="@android:id/list"
              ... />
       <TextView
              android:id="@android:id/empty"
              ... />
</FrameLayout>

Donde tenemos un FrameLayout que permite visualizar dos posibles elementos, uno u otro, pero no los dos simultáneamente. El primero es el ListView que se visualizará cuando haya algún elemento en la lista. El segundo puede ser cualquier tipo de vista y se visualizará cuando no existan elementos en la lista. El sistema controla la visibilidad de forma automática, solo has de tener cuidado de identificar cada uno de los elementos con el valor exacto que se muestra.

NOTA: Recuerda que para crear nuevos identificadores debes utilizar la expresión"@+id/nombre_identificador". El carácter @ significa que se trata de un identificador de recurso que se definirá en la clase R.java. El carácter + significa que el recurso ha de ser creado en este momento. En este caso hemos utilizado identificadores definidos en el sistema (es decir @android:significa que es un recurso definido en la clase android.R.java).

Una vez creado el Layout que contiene el ListView tendremos que visualizarlo en una actividad. Para este propósito utilizaremos un  tipo de actividad especial,  ListActivity.

También tendremos que indicar al sistema cada uno de los Layouts individuales que contendrá el ListView. Esto lo haremos llamando al método setListAdapter(). Existen varias alternativas con diferentes grados de dificultad. Para una mejor conprensión iremos mostrando tres ejemplos de uso de setListAdapter(), de más sencillo a más complejo.

Las capturas anteriores muestran los tres ListView que vamos a construir. El de la izquierda se limita a mostrar una lista de Strings. El del centro visualiza una lista de un Layout diseñado por nosotros. Aunque este Layout tiene varios componentes (una imagen, dos textos y RatingBar), solo cambiamos uno de los textos. En el último ejemplo cambiaremos todos los componentes.

video[Tutorial] Uso de ListView

Un ListView con textos

La actividad inicial de la aplicación Mis Lugares nos permite escoger entre cuatro botones. En una aplicación como la desarrollada, sería mucho más interesante que en esta actividad se visualizaran directamente una lista con los lugares almacenados.

NOTA: En los siguientes ejercicios resolveremos el problema de una forma ligeramente distinta a la explicada anteriormente y en el vídeo.

Ejercicio paso a paso: Un ListView con textos en la actividad principal de Mis Lugares

1.     Reemplaza el contenido del layout content_main.xml por siguiente código:

<LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent">
   <ListView
       android:id="@+id/listView"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:drawSelectorOnTop="false" />
</LinearLayout>

Observa como en este caso el id es definido por nosotros, en lugar de utilizar un id del sistema.

2.     En la práctica “Recursos alternativos en Mis Lugares” se crea un recurso alternativo para este layout en res/layout-land/content_main.xml. Elimina este recurso alternativo.

3.     Añade en la actividad MainActivity el código subrayado:

public class MainActivity extends AppCompatActivity {
    ...
    public BaseAdapter adaptador;
    @Override 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        adaptador = new ArrayAdapter(this, 
                           android.R.layout.simple_list_item_1, 
                           MainActivity.lugares.listaNombres()); 
        ListView listView = (ListView) findViewById(R.id.listView);
        listView.setAdapter(adaptador);
    }
    ...

En este caso, la actividad no hereda de ListActivity, si no que el ListView es incorporado como un elemento dentro de la actividad. Además, ha de llamar al método setAdapter() para indicar el adaptador con la lista de elementos a visualizar. En el ejemplo se ha utilizado una de la posibilidades más sencillas, para crear un adaptador, usar la clase ArrayAdapter<clase>. Un ArrayAdapter crea las vistas del ListView a partir de los datos almacenados en un array. Puedes utilizar un array que contenga datos de cualquier clase, no tienes más que indicar en <Clase> la clase deseada. En este caso se utiliza de un array de String[1]. El constructor de ArrayAdapter<clase> tiene tres parámetros: El primer parámetro es un Context con información sobre el entorno de la aplicación. Utilizaremos como contexto la misma actividad que hace la llamada. El segundo parámetro es un Layout, utilizado para representar cada elemento de la lista. En este ejemplo, en lugar de definir uno nuevo, utilizaremos una ya definido en el sistema. El último parámetro es un array con los string a mostrar. Para ello, llamamos al método listaNombres() que nos devuelve una lista con todos los nombres de los lugares.

4.     Elimina del método onCreate() el código destinado a inicializar los botones. 

5.     Añade a la interfaz  Lugares el siguiente método:

List listaNombres() //Devuelve un ArrayList con todos los elementos

5.     Añade el siguiente método a la clase LugaresVector.

public List listaNombres(){
       ArrayList resultado = new ArrayList();
       for (Lugar lugar:vectorLugares){
             resultado.add(lugar.getNombre());
       }
       return resultado;
}

6.     En un ejercicio anterior habíamos aplicado un estilo para que no se mostrara la barra de acciones. Elimina este atributo en AndroidManifest.xml para que vuelva a aparecer la barra de acciones:

<application
     …
     <activity
          android:name="com.example.mislugares.MainActivity"
          android:label="@string/app_name"
          android:theme="@android:style/AppTheme.NoTitleBar.Fullscreen">
          …

7.       Prueba si funcionan las modificaciones introducidas.

Un ListView que visualiza Layouts personalizados

Vamos a personalizar el ListView anterior para que cada elemento de la lista sea un layout definido por nosotros.Tal y como se muestra en la siguiente captura de pantalla, solo modificaremos un campo de la vista (el nombre del lugar).

Ejercicio paso a paso: Un ListView que visualiza layouts personalizados

1.     Reemplaza en código subrayando del ejercicio anterior por:

adaptador = new ArrayAdapter(this,
       R.layout.elemento_lista,
       R.id.nombre,
       Lugares.listaNombres());

Como hemos explicado, la clase ArrayAdapter<String> permite insertar los datos desde un array de String en nuestro ListView. En este ejemplo se utiliza un constructor con cuatro parámetros:

this: es el contexto, con información sobre el entorno de la aplicación.

R.layout.elemento_lista: es una referencia de recurso a la vista que será utilizada repetidas veces para formar la lista. Se define a continuación.

R.id. titulo:  identifica un id de la vista anterior que ha de ser un TextView. Su texto será reemplazado por el que se indica en el siguiente parámetro.

MainActivity.lugares.listaNombres(): vector de String con los textos que serán visualizados en cada uno de los TextView.

2.     Ahora hemos de definir el layout que representará cada uno de los elementos de la lista. Crea el fichero res/Layout/elemento_lista.xml con el siguiente código:

<RelativeLayout  
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="?android:attr/listPreferredItemHeight">
       <ImageView 
             android:id="@+id/foto"
             android:layout_width="?android:attr/listPreferredItemHeight"
             android:layout_height="?android:attr/listPreferredItemHeight"
             android:layout_alignParentLeft="true"
             android:contentDescription="fotografía"
             android:src="@drawable/bar"/>
       <TextView 
             android:id="@+id/nombre"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="Nombres del lugar"
             android:layout_toRightOf="@id/foto"
             android:layout_alignParentTop="true"
             android:textAppearance="?android:attr/textAppearanceMedium"
             android:singleLine="true" />
       <TextView 
             android:id="@+id/direccion"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_below="@id/nombre"
             android:layout_toRightOf="@id/foto"
             android:gravity="center"
             android:singleLine="true"
             android:text="dirección del lugar"/>
       <RatingBar
             android:id="@+id/valoracion"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_alignParentBottom="true"
             android:layout_below="@id/direccion"
             android:layout_toRightOf="@id/foto"
             style="?android:attr/ratingBarStyleSmall"
             android:isIndicator="true"
             android:rating="3"/>
</RelativeLayout>

Para combinar las vistas se ha escogido un RelativeLayout, su alto se establece a partir de un parámetro de configuración del sistema ?android:attr/listPreferredItemHeight (alto preferido para item de lista). El primer elemento que contiene es un ImageView alineado a la izquierda. Su alto es la misma que el contenedor (match_parent) y su ancho se establece con el mismo parámetro que el alto del contenedor. Por lo tanto la imagen será cuadrada. A la derecha se muestran  dos textos. En el texto de mayor tamaño se visualizará para el nombre del lugar y en el de menor tamaño la dirección. Bajo estos textos se ha incluido un RatingBar.

3.     Ejecuta la aplicación y verifica el resultado.

[1] Para saber más sobre clases genéricas puedes ver el siguiente Polimedia http://youtu.be/N3yy2pfUaE0.