Aquesta és una revisió antiga del document
Creación de aplicacions con Google Android
datos curso
- Octubre 2017
- Cristian Barrientos Beltrán (https://github.com/cristianbarri)
Modulo 1
Sistema operativo Android
- software libre: sistema operativo, middleware, aplicaciones, API's, SDK
- SDK completo, multiplataforma, emulador, depuración, plugin Eclipse
- reprovechamiento de componentes
- gráficos 2D nativos, 3D con librerias
- SQLite
- enfocado a teléfonos, etc…
- Java + XML
- Interfaces de usaurios complejas
- soporte multimèdia, comunicaciones, sensores
- versiones:
- 1.0, 1.1, 1.5, 1.6
- 2.0, 2.1, 2.2, 2.3.x
- 3.x, 4.0.x, 4.1, 4.2, 4.3
- 4.4
- 5.0
- 6.0
- (otras)
Estructura de un proyecto
- AndroidManifest.xml
- configuración
- permisos solicitados
- versión android mínima
- Activity (pantalla)
- Servicios
- Broadcast receivers
- Content providers
- Intent-filters
- Proguard.cfg
- Optimizar/ofuscar código (cambio nombre variable)
- dificultar ingeniería inversa
- reducir medida de la APK
- se ejecuta automáticamente (build) en modo release (para entregar)
- carpeta src
- package
- carpeta res
- carpeta Drawable (imágenes, audios)
- carpeta Layouts
- carpeta Values
componentes
- Activities
- componente principal
- tiene asignada una vista (layout)
- java
- el sistema puede cerrar nuesta activity si necesita memoria
- Intents
- intención o solicitud de realizar una tarea
- servicios de comunicación entre componentes dentro de la misma App o con ajenas
- Servicios
- funcionamiento en segundo plano
- dos tipos
- started: se lanza y no vuelve
- bound: interacción
- Interfaz de usuario
- view, viewgroups
- permite la interacción con el usuario
- UI's mostran las funcionalidades de nuestra app
- amigables
- cada una tiene su ciclo de vida (pausar, destruir, etc…)
- Content Providers
- proveedores de contenido, comunicación con otras apps para hacer uso de los datos
- Broadcast Receivers
- escuchando eventos, cambios estado teléfono
- receptor de difusión
- 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