Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
info:cursos:cibernarium:android [04/10/2017 15:32] mateinfo:cursos:cibernarium:android [07/07/2018 10:41] (actual) – [Creación de aplicacions con Google Android] mate
Línia 1: Línia 1:
 = Creación de aplicacions con Google Android = Creación de aplicacions con Google Android
 +{{tag>android cursos}}
 == datos curso == datos curso
   * ONLINE ([[https://cibernarium.barcelonactiva.cat/web/guest/ficha-actividad?activityId=823431]])   * ONLINE ([[https://cibernarium.barcelonactiva.cat/web/guest/ficha-actividad?activityId=823431]])
Línia 53: Línia 54:
     * tiene asignada una vista (layout)     * tiene asignada una vista (layout)
     * java     * java
-    * cada una tiene su ciclo de vida (pausar, destruir, etc...) 
     * el sistema puede cerrar nuesta activity si necesita memoria     * el sistema puede cerrar nuesta activity si necesita memoria
   * Intents   * Intents
Línia 68: Línia 68:
     * UI's mostran las funcionalidades de nuestra app     * UI's mostran las funcionalidades de nuestra app
     * amigables     * amigables
 +    * cada una tiene su ciclo de vida (pausar, destruir, etc...)
   * Content Providers   * Content Providers
     * proveedores de contenido, comunicación con otras apps para hacer uso de los datos     * proveedores de contenido, comunicación con otras apps para hacer uso de los datos
Línia 74: Línia 75:
     * receptor de difusión     * receptor de difusión
     * las modificaciones se notifican con un **intent**     * las modificaciones se notifican con un **intent**
 +
 +== Modulo 2
 +=== Lenguajes de programación
 +  * Java:
 +    * sintaxis c, c++
 +    * todo son objetos
 +    * declaración variables
 +    * sentencias de condición
 +    * sentencias de control
 +    * Arrays / vectores
 +    * Package:
 +      * clases afines de la aplicación
 +      * como una biblioteca
 +      * físicamente representan una carpeta
 +    * Herencia entre clases
 +      * public, protected, private
 +    * ejecución en máquina virtual
 +    * OOP encapsula conceptos en clases
 +    * una clase define:
 +      * variables, atributos
 +      * funciones, métodos (getters,setters, otros)
 +  * XML
 +    * extensible markup language
 +    * diseñado para transportar y almacenar datos
 +    * tags por definir
 +    * autodescriptivo
 +    * es texto, almacena
 +    * estricto!
 +    * estructura jerárquica (árbol)
 +
 +===Activities
 +  * la mayoria están formadas por activities
 +  * cada A corresponde a una vista
 +  * no tienen control sobre su cierre
 +    * tiene 3 estados: resumed (cima de la pila), paused (visible, sin foco, no interactuación), stopped (invisible)
 +  * Heredan desde la clase Activity
 +  * se han de declarar en Manifest
 +  * se crea una PILA de A
 +  * métodos vinculados con la Activity:
 +    * onCreate
 +    * onStart
 +    * onResume
 +    * onPause
 +    * onStop
 +    * onRestart
 +    * onDestroy
 +      * este método también es llamado con un cambio de orientación de pantalla
 +
 +=== Intents
 +  * elementos de comunucación entre A
 +  * representación de intención o solicitud de una tarea a otra App
 +    * ''startActivity(intent);''
 +    * ''startService(intent);''
 +  * iniciar servicios, llamar a otras actividades, envío de mensajes de difusión
 +    * ''sendBroadcast(intent);''
 +  * 2 tipos:
 +    * implicitos
 +      * se le indica la acción y de manera implicita ejecuta la aplicación relacionada
 +    * explicitos
 +      * indicamos que componente exacto queremos lanzar
 +  * objeto Intent contiene atributos:
 +    * Componente: nombre del componente, path de la clase (x.xx.xxx.xxxx), cada punto separa las carpetas donde encontrar
 +        * solo tiene sentido para intentslos explicitos
 +        * ''getComponent'', ''setComponent''
 +    * Accion: 
 +      * solo tiene sentido para intents implícitos
 +      * lista de acciones en web Google
 +    * Dato: modificar los datos de un Intent
 +      * ''setData'', ''getData''
 +    * Categoria:detalles adicionales de la acción ejecutada
 +      * ''addCategory'', ''removeCategory'', ''getCategories''
 +      * varias categorias se pueden asignar
 +    * Extras: info de un componente a otro (JSON?), llaves clave, valor
 +
 +== Modulo 3
 +=== Listeners
 +  * Ligados a la vista
 +  * 4 métodos
 +    - crear un elemento listener y definir la función *onClick* (método existente no implementado, uso de @Override)
 +    - la clase de la activity ejecute el *onClick*, haciendo un ''implements'' en la definición de la clase (no @Overrido)
 +    - crear nuestra propia clase Listener, heredando de Listener (para cosas muy específicas que no se puedan aprovechar de los existentes)
 +    - a través del XML, definiendo el valor de la función
 +
 +=== Activities (II)
 +  * Guardar el estado de las Activities (por cierre no controlado)
 +  * métodos proporcionados por Android
 +    * ''onSaveInstanceState'' -> llamnado antes del evento "onPause"
 +    * ''inRestoreInstaceState'' -> llamado después del evento "onCreate"
 +  * almacenar valores
 +    * parejas clave-valores
 +    * valores primitivos
 +    * ''putString'', ''putInteger'', ...
 +    * ''getString'',''getInteger'', ...
 +
 +=== Notificaciones
 +  * Toast
 +    * notificaciones fugaces
 +    * solo se muestra 1
 +    * se apilan
 +  * SnackBar
 +    * versión mejorada del Toast
 +    * permite añadir acciones
 +    * requiere de Android Design Support Library (no sirve versiones antiguas de Android)
 +  * StatusBar
 +    * acciones asociadas (ir a una activity de nuestra app)
 +    * se puede configurar su tiempo de vida
 +    * implementación
 +      * Instaciar ''NotificationManager''
 +      * inicializar nuestra notificación (builder) y inicializar el Intent Explícito
 +      * generar stack articial de activities y adjuntarle el Intent
 +      * generar la notificación de nuestro builder y hacer que se muestre.
 +
 +=== Almacenaje
 +  * interno:
 +    * privados para la aplicación
 +    * al desinstalar la app, se borran
 +    * se guardan en raw.res
 +    * funciones útiles:
 +      * ''getFilesDir()''
 +      * ''getDir()''
 +      * ''deleteFile()''
 +      * ''fileList()''
 +  * externo:
 +    * memoria que no pertenece a nuestro dispositivo
 +    * para que pueda acceder a la SD, hay que darle permisos (manifest)
 +    * todos los usuarios y apps tienen acceso a estos ficheros
 +  * shared preferences
 +    * guarda los datos de nuestra app
 +    * primitivos
 +    * clave-valor
 +    * se mantienen aunque se destruya la app
 +    * classe SharedPreferences()
 +
 +== modulo 4
 +=== SQL
 +  * información guardada en tablas
 +  * columnas, filas
 +  * SQLite Database
 +  * ''bd.query(argumentos)''
 +  * SQL
 +    * CREATE TABLE...
 +    * DROP TABLE...
 +    * SELECT...
 +    * INSERT...
 +    * UPDATE...
 +    * DELETE..
 +
 +=== SQLite Open Helper
 +  * ayuda para el SQL en Android
 +  * se puede usar para instrucciones SQL
 +  * o ejecutar los métodos al uso
 +  * CREATE... ''onCreate'', ''onUpgrade''
 +  * SELECT... ''getReadableDatabase'', ''db.query''
 +  * INSERT... ''getWritableDatabase'', ''db.insert'', ''values.put(par-valor)''
 +  * UPDATE... ''db.update'', similar a INSERT
 +  * DELETE... ''db.delete''
 +
 +=== Preparación para la venta de apps i AdMob
 +  * Cuenta desarrollador GooglePlay (25$) de por vida
 +  * Google Wallet para vender apps (gratuita), vincular cuenta bancaria (tarda 3-4 días en validarse)
 +  * AdMob, sistema anuncios, Paypal
 +    * permite colocar anuncios, Google gestiona los anuncios
 +    * 3000 visualizaciones, 1€
 +    * hay que llegar a 70€ para cobrar
 +  * crear aplicaciones útiles
 +  * entra por la vista
 +  * desarrolla el programa, mejora después
 +  * probar en muchos dispositivos
 +  * desarrolar muchas aplicaciones para ver cual triunfa
 +  * formas alternativas de financiamiento: anuncios, sin pagar por la app, y si con el tiempo funciona, de pago
  • info/cursos/cibernarium/android.1507156332.txt.gz
  • Darrera modificació: 04/10/2017 15:32
  • per mate