SlideShare uma empresa Scribd logo
1 de 17
1
Desarrollo de aplicaciones
móviles en Android
2
Índice
Historia
¿Qué es Android?
Arquitectura del sistema
Entorno de desarrollo
Arquitectura de las
aplicaciones
Almacenamiento de datos
Multimedia
Práctica final
3
Almacenamiento de datos
 En aplicaciones típicas de
escritorio, el sistema operativo
ofrece el sistema de ficheros
para compartir datos entre
aplicaciones
 En Android, los ficheros son
privados por aplicación
 Para compartir información, se
utilizan los Content Providers
4
Almacenamiento de datos: Preferences
 Técnica ágil para guardar datos simples de la
aplicación
 Los datos se almacenan en pares key/value
 Usado típicamente para guardar las
preferencias de la aplicación (fuentes,
colores..)
 Permite guardar datos primitivos
(Boolean, float...)
 Esta información persiste aunque la
aplicación muera.
 Actividades tienen los métodos
onSaveInstance() o onStop() para
guardar los datos antes de acabar
 Se invoca el método
getSharedPreferences (File) si tenemos
varios ficheros o getPreferences() para
un sólo fichero.
5
Almacenamiento de datos: Preferences (II)
import android.app.Activity;
import android.content.SharedPreferences;
public class Calc extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";
. . .
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
}
@Override
protected void onStop(){
super.onStop();
// Save user preferences. We need an Editor object to
// make changes. All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
// Don't forget to commit your edits!!!
editor.commit();
}
}
6
Ejemplo del workspace:
 Preferences-PersistentState: en este ejemplo se muestra cómo persistir la
información utilizando las Preferences
La Activity principal muestra dos campos de texto editable. Cuando se modifican los
valores de estos campos y se pulsa el botón de volver en dispositivo, al regresar a la
Activity se puede ver cómo en el segundo campo se ha perdido la información. Esto es
debido a que la Activity ha restaurado la información de ese campo en el método
onResume(), llamado al restaurar la instancia.
Ejemplos y ejercicios
7
Almacenamiento de datos: ficheros locales
 Por defecto, sólo la aplicación puede acceder a
esos ficheros (permisos Unix)
 Acceso similar a Java estándar, se deben crear
inputs y outpus streams
 Sólo se soportan archivos creados en la misma
carpeta que la aplicación
 Las aplicaciones van a la ruta: /data/app
(gratuitas) y /data/app-private (de pago), las
nuevas versiones soportan almacenamiento en
la SDCard
String FILE_NAME = "tempfile.tmp";
// Create a new output file stream that’s private to this application.
FileOutputStream fos = openFileOutput(FILE_NAME, Context.MODE_PRIVATE);
// Create a new file input stream.
FileInputStream fis = openFileInput(FILE_NAME);
8
Ejemplo del workspace:
 Storage-File: en este ejemplo se muestra cómo utilizar Files para almacenar y
listar la información de ficheros
La Activity principal cómo interactuar con los métodos de la clase File y el sistema de
ficheros de Android (ruta local, ruta de caché…)
 Storage-SDCard: en este ejemplo se muestra cómo utilizar almacenamiento
externo (SDCard) verificando previamente permisos para acceder y escribir.
La Activity principal verifica que el almacenamiento externo ha sido montado y que se
dispone de permisos de escritura en éste.
Ejemplos y ejercicios
9
Almacenamiento de datos: SQLite
 Cada base de datos es privada para la
aplicación, pero pueden acceder todas las
clases de ésta.
 Las bases de datos se almacenan en la
carpeta
/data/data/nombre_package/databases
 Para compartir la información utilizar
ContentProviders
 Permite gestionar upgrades de las bases de
datos (realizar Alter Tables cuando se
necesite)
10
Almacenamiento de datos: SQLite (II)
 Base de datos Open Source
 Cumplimenación de estándares de BDs
 Ligera, no requiere excesivos recursos
 Las querys (consultas) se devuelven como objetos Cursor,
apuntando a la información
 Utilizada en reproductores MP3, iPhone y iPods
 Para información detallada: http://www.sqlite.org
11
Almacenamiento de datos: SQLite Cursors
 Estructura para recorrer y procesar consultas
 Funciones principales para navegar en los resultados de una query:
 moveToFirst: mueve el cursor a la primera fila de los registros
 moveToNext: mueve el cursor a la siguiente fila de los registros
 moveToPrevious: mueve el cursor a la fila anterior de los registros
 getCount: devuelve el número de registros de la query
 getColumnIndexOrThrow: devuelve un índice para la columna dada
 getColumnName: dado un índice, devuelve el nombre de esa columna
 getColumnNames: devuelve un array con los nombres de las columnas
 moveToPosition: mueve el cursor al registro que hay en esa posición
 getPosition: devuelve la posición actual del cursor
12
Almacenamiento de datos: SQLite creación de tablas
private static final String DATABASE_NAME = “myDatabase.db”;
private static final String DATABASE_TABLE = “mainTable”;
private static final String DATABASE_CREATE =
“create table “ + DATABASE_TABLE + “ ( _id integer primary
key autoincrement,” + “column_one text not null);”;
SQLiteDatabase myDatabase;
private void createDatabase() {
myDatabase = openOrCreateDatabase(DATABASE_NAME,
Context.MODE_PRIVATE, null);
myDatabase.execSQL(DATABASE_CREATE);
}
13
Ejemplo del workspace:
 SQL-Access: en este ejemplo se muestra cómo interactuar con una base de
datos local de una aplicación Android.
 Después de ejecutar el ejemplo, se puede comprobar lo siguiente:
1. La base de datos ha sido creada en el siguiente directorio:
/data/data/com.slashmobility.curso.android/databases
2. Para comprobarlo, se puede ejecutar:
adb –s emulator-5554 shell, con el que entraremos con el Root
3. Ejecutar > sqlite3
/data/data/com.slashmobility.curso.android/databases/midatabase para abrir la
BD del ejemplo. En este modo se pueden ejecutar sentencias SQL.
4. Ejecutar >SELECT * from dictionary;
 SQL-Demo: en este ejemplo se muestra cómo utilizar las BDs con Android
añadiendo complejidad de diseño
Al crear la Activity principal, se crea una tabla con una estructura determinada, en este
caso una tabla simple con un ID y una campo de tipo Text. defecto (this.dh.insert()).
Se realiza un borrado de datos que puedan existir en la base de datos. Posteriormente
se muestra cómo insertar valores en la tabla.
Al finalizar, se recuperan todos los valores insertados en la tabla (this.dh.selectAll()) y
se muestran por pantalla.
Ejemplos y ejercicios
14
Almacenamiento de datos: SQLite querys
// Return all rows for columns one and three, no duplicates
String[] result_columns = new String[] {KEY_ID, KEY_COL1,
KEY_COL3};
Cursor allRows = myDatabase.query(true, DATABASE_TABLE,
result_columns, null, null, null, null, null, null);
// Return all columns for rows where column 3 equals a set
value
// and the rows are ordered by column 5.
String where = KEY_COL3 + “=” + requiredValue;
String order = KEY_COL5;
Cursor myResult = myDatabase.query(DATABASE_TABLE, null, where,
null, null, null, order);
15
Almacenamiento de datos: SQLite resultados
int GOLD_HOARDED_COLUMN = 2;
Cursor myGold = myDatabase.query(“GoldHoards”, null, null, null,
null,
null, null);
float totalHoard = 0f;
// Make sure there is at least one row.
if (myGold.moveToFirst()) {
// Iterate over each cursor.
do {
float hoard = myGold.getFloat(GOLD_HOARDED_COLUMN);
totalHoard += hoard;
} while(myGold.moveToNext());
}
float averageHoard = totalHoard / myGold.getCount();
16
Almacenamiento de datos: SQLite Añadir un nuevo registro
// Create a new row of values to insert.
ContentValues newValues = new ContentValues();
// Assign values for each row.
newValues.put(COLUMN_NAME, newValue);
[ ... Repeat for each column ... ]
// Insert the row into your table
myDatabase.insert(DATABASE_TABLE, null, newValues);
17
Almacenamiento de datos: SQLite Modificar un registro
// Define the updated row content.
ContentValues updatedValues = new ContentValues();
// Assign values for each row.
updatedValues.put(COLUMN_NAME, newValue);
[ ... Repeat for each column ... ]
String where = KEY_ID + “=” + rowId;
// Update the row with the specified index with the new values.
myDatabase.update(DATABASE_TABLE, updatedValues, where, null);

Mais conteúdo relacionado

Mais procurados (15)

Base de datos
Base de datosBase de datos
Base de datos
 
Clases de oledb
Clases de oledbClases de oledb
Clases de oledb
 
JAVA CON BASE DE DATOS
JAVA CON BASE DE DATOSJAVA CON BASE DE DATOS
JAVA CON BASE DE DATOS
 
Framework .NET 3.5 14 Gestión de archivos y serialización
Framework .NET 3.5 14  Gestión de archivos y serializaciónFramework .NET 3.5 14  Gestión de archivos y serialización
Framework .NET 3.5 14 Gestión de archivos y serialización
 
Unidad3 poo 4a parte
Unidad3 poo 4a parteUnidad3 poo 4a parte
Unidad3 poo 4a parte
 
OLE BD
OLE BDOLE BD
OLE BD
 
Sql en visual basic 6.0 (cajo pablo)
Sql en visual basic 6.0 (cajo pablo)Sql en visual basic 6.0 (cajo pablo)
Sql en visual basic 6.0 (cajo pablo)
 
Comandos básicos para bases de datos mysql y
Comandos básicos para bases de datos mysql yComandos básicos para bases de datos mysql y
Comandos básicos para bases de datos mysql y
 
Proyecto Gestor SQL en Java - Programacion 3
Proyecto Gestor SQL en Java - Programacion 3Proyecto Gestor SQL en Java - Programacion 3
Proyecto Gestor SQL en Java - Programacion 3
 
Karen alejandra corredo rfff
Karen alejandra corredo rfffKaren alejandra corredo rfff
Karen alejandra corredo rfff
 
SQL EN VISUAL BASIC
SQL EN VISUAL BASICSQL EN VISUAL BASIC
SQL EN VISUAL BASIC
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Estructuras ing. Vanessa Borgas
Estructuras ing. Vanessa BorgasEstructuras ing. Vanessa Borgas
Estructuras ing. Vanessa Borgas
 
Lenguaje de consulta de datos
Lenguaje de consulta de datosLenguaje de consulta de datos
Lenguaje de consulta de datos
 
Margarita
MargaritaMargarita
Margarita
 

Destaque

Desarrollo android - 3 - entorno de desarrollo
Desarrollo android  - 3 - entorno de desarrolloDesarrollo android  - 3 - entorno de desarrollo
Desarrollo android - 3 - entorno de desarrolloEmilio Aviles Avila
 
Desarrollo android - 6 - multimedia
Desarrollo android - 6 - multimediaDesarrollo android - 6 - multimedia
Desarrollo android - 6 - multimediaEmilio Aviles Avila
 
Android HttpClient - new slide!
Android HttpClient - new slide!Android HttpClient - new slide!
Android HttpClient - new slide!Chalermchon Samana
 
Curso taller android radio streaming
Curso taller android  radio streamingCurso taller android  radio streaming
Curso taller android radio streamingEmilio Aviles Avila
 
Aplicaciones móviles, experiencias de emprendedor
Aplicaciones móviles, experiencias de emprendedorAplicaciones móviles, experiencias de emprendedor
Aplicaciones móviles, experiencias de emprendedorEmilio Aviles Avila
 
Charla estrategia desarrollo aplicaciones móviles Universidad Girona
Charla estrategia desarrollo aplicaciones móviles Universidad GironaCharla estrategia desarrollo aplicaciones móviles Universidad Girona
Charla estrategia desarrollo aplicaciones móviles Universidad GironaEmilio Aviles Avila
 
Curso Taller Android Procesado Imagen
Curso Taller Android Procesado ImagenCurso Taller Android Procesado Imagen
Curso Taller Android Procesado ImagenEmilio Aviles Avila
 
Experiencias emprendedor de apps - AppCierta
Experiencias emprendedor de apps - AppCiertaExperiencias emprendedor de apps - AppCierta
Experiencias emprendedor de apps - AppCiertaEmilio Aviles Avila
 
10 consejos para montar un equipo A
10 consejos para montar un equipo A10 consejos para montar un equipo A
10 consejos para montar un equipo AFrançois Derbaix
 
Desarrollo android - 4 - arquitectura de aplicación
Desarrollo android  - 4 - arquitectura de aplicaciónDesarrollo android  - 4 - arquitectura de aplicación
Desarrollo android - 4 - arquitectura de aplicaciónEmilio Aviles Avila
 

Destaque (13)

Desarrollo android - 3 - entorno de desarrollo
Desarrollo android  - 3 - entorno de desarrolloDesarrollo android  - 3 - entorno de desarrollo
Desarrollo android - 3 - entorno de desarrollo
 
Desarrollo android - 6 - multimedia
Desarrollo android - 6 - multimediaDesarrollo android - 6 - multimedia
Desarrollo android - 6 - multimedia
 
Taller Curso android WhereAmI
Taller Curso android WhereAmITaller Curso android WhereAmI
Taller Curso android WhereAmI
 
Android HttpClient - new slide!
Android HttpClient - new slide!Android HttpClient - new slide!
Android HttpClient - new slide!
 
Curso taller android radio streaming
Curso taller android  radio streamingCurso taller android  radio streaming
Curso taller android radio streaming
 
Visor de imágenes para una aplicación android
Visor de imágenes para una aplicación androidVisor de imágenes para una aplicación android
Visor de imágenes para una aplicación android
 
Aplicaciones móviles, experiencias de emprendedor
Aplicaciones móviles, experiencias de emprendedorAplicaciones móviles, experiencias de emprendedor
Aplicaciones móviles, experiencias de emprendedor
 
Charla estrategia desarrollo aplicaciones móviles Universidad Girona
Charla estrategia desarrollo aplicaciones móviles Universidad GironaCharla estrategia desarrollo aplicaciones móviles Universidad Girona
Charla estrategia desarrollo aplicaciones móviles Universidad Girona
 
Curso Taller Android Procesado Imagen
Curso Taller Android Procesado ImagenCurso Taller Android Procesado Imagen
Curso Taller Android Procesado Imagen
 
Experiencias emprendedor de apps - AppCierta
Experiencias emprendedor de apps - AppCiertaExperiencias emprendedor de apps - AppCierta
Experiencias emprendedor de apps - AppCierta
 
Apps Ser o Estar
Apps Ser o EstarApps Ser o Estar
Apps Ser o Estar
 
10 consejos para montar un equipo A
10 consejos para montar un equipo A10 consejos para montar un equipo A
10 consejos para montar un equipo A
 
Desarrollo android - 4 - arquitectura de aplicación
Desarrollo android  - 4 - arquitectura de aplicaciónDesarrollo android  - 4 - arquitectura de aplicación
Desarrollo android - 4 - arquitectura de aplicación
 

Semelhante a Desarrollo android - 5 - almacenamiento de datos

Semelhante a Desarrollo android - 5 - almacenamiento de datos (20)

Lab archivos
Lab archivosLab archivos
Lab archivos
 
Android DB por Cesar Cespedes
Android DB por Cesar CespedesAndroid DB por Cesar Cespedes
Android DB por Cesar Cespedes
 
Archivossin
ArchivossinArchivossin
Archivossin
 
Data storage
Data storageData storage
Data storage
 
Temas programacion java_3
Temas programacion java_3Temas programacion java_3
Temas programacion java_3
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
TEMAS DE JAVA DEL 11 AL 23
TEMAS DE JAVA DEL 11 AL 23TEMAS DE JAVA DEL 11 AL 23
TEMAS DE JAVA DEL 11 AL 23
 
Estructura de un programa
Estructura de un programaEstructura de un programa
Estructura de un programa
 
Acceso a datos
Acceso a datosAcceso a datos
Acceso a datos
 
Metodos de entrada y Salida
Metodos de entrada y SalidaMetodos de entrada y Salida
Metodos de entrada y Salida
 
Archivos secuenciales indexados
Archivos secuenciales indexadosArchivos secuenciales indexados
Archivos secuenciales indexados
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Cplus
CplusCplus
Cplus
 
Archivos secuenciales-indexados C++
Archivos secuenciales-indexados C++Archivos secuenciales-indexados C++
Archivos secuenciales-indexados C++
 
Archivos secuenciales indexados UMG grupo 3
Archivos secuenciales indexados UMG grupo 3Archivos secuenciales indexados UMG grupo 3
Archivos secuenciales indexados UMG grupo 3
 
funcion de archivo secuencial
funcion de archivo secuencial funcion de archivo secuencial
funcion de archivo secuencial
 
As3 unidad 14 crear una aplicación air con flash y action script
As3 unidad 14 crear una aplicación air con flash y action scriptAs3 unidad 14 crear una aplicación air con flash y action script
As3 unidad 14 crear una aplicación air con flash y action script
 
Sas
SasSas
Sas
 

Mais de Emilio Aviles Avila

Desarrollo android - 2 - arquitectura del sistema
Desarrollo android   - 2 - arquitectura del sistemaDesarrollo android   - 2 - arquitectura del sistema
Desarrollo android - 2 - arquitectura del sistemaEmilio Aviles Avila
 
Desarrollo android -1 - introduccion
Desarrollo android  -1 - introduccionDesarrollo android  -1 - introduccion
Desarrollo android -1 - introduccionEmilio Aviles Avila
 
El mercado de las aplicaciones moviles
El mercado de las aplicaciones movilesEl mercado de las aplicaciones moviles
El mercado de las aplicaciones movilesEmilio Aviles Avila
 
Curso Uml 3.1 Modelos De Desarrollo De Software
Curso Uml   3.1 Modelos De Desarrollo De SoftwareCurso Uml   3.1 Modelos De Desarrollo De Software
Curso Uml 3.1 Modelos De Desarrollo De SoftwareEmilio Aviles Avila
 
Curso Uml 2.5 Diagramas De ImplementacióN
Curso Uml   2.5 Diagramas De ImplementacióNCurso Uml   2.5 Diagramas De ImplementacióN
Curso Uml 2.5 Diagramas De ImplementacióNEmilio Aviles Avila
 
Curso Uml 2.4 Diagramas De Comportamiento
Curso Uml   2.4 Diagramas De ComportamientoCurso Uml   2.4 Diagramas De Comportamiento
Curso Uml 2.4 Diagramas De ComportamientoEmilio Aviles Avila
 
Curso Uml 2.3 Diagramas De InteraccióN
Curso Uml   2.3 Diagramas De InteraccióNCurso Uml   2.3 Diagramas De InteraccióN
Curso Uml 2.3 Diagramas De InteraccióNEmilio Aviles Avila
 
Curso Uml 2.1 Diagramas De Cu Y Clases
Curso Uml   2.1 Diagramas De Cu Y ClasesCurso Uml   2.1 Diagramas De Cu Y Clases
Curso Uml 2.1 Diagramas De Cu Y ClasesEmilio Aviles Avila
 

Mais de Emilio Aviles Avila (20)

Desarrollo android - 2 - arquitectura del sistema
Desarrollo android   - 2 - arquitectura del sistemaDesarrollo android   - 2 - arquitectura del sistema
Desarrollo android - 2 - arquitectura del sistema
 
Desarrollo android -1 - introduccion
Desarrollo android  -1 - introduccionDesarrollo android  -1 - introduccion
Desarrollo android -1 - introduccion
 
El mercado de las aplicaciones moviles
El mercado de las aplicaciones movilesEl mercado de las aplicaciones moviles
El mercado de las aplicaciones moviles
 
Como ganar dinero con las apps
Como ganar dinero con las appsComo ganar dinero con las apps
Como ganar dinero con las apps
 
Curso introducción a android
Curso introducción a android   Curso introducción a android
Curso introducción a android
 
Curso Introducción a android
Curso Introducción a androidCurso Introducción a android
Curso Introducción a android
 
Curso desarrollo en android
Curso desarrollo en androidCurso desarrollo en android
Curso desarrollo en android
 
TeCHmi Service Portfolio
TeCHmi Service PortfolioTeCHmi Service Portfolio
TeCHmi Service Portfolio
 
Curso Uml 3.2 Proceso Unificado
Curso Uml   3.2 Proceso UnificadoCurso Uml   3.2 Proceso Unificado
Curso Uml 3.2 Proceso Unificado
 
Curso Uml 3.1 Modelos De Desarrollo De Software
Curso Uml   3.1 Modelos De Desarrollo De SoftwareCurso Uml   3.1 Modelos De Desarrollo De Software
Curso Uml 3.1 Modelos De Desarrollo De Software
 
Curso Uml 2.6 Otros Diagramas
Curso Uml   2.6 Otros DiagramasCurso Uml   2.6 Otros Diagramas
Curso Uml 2.6 Otros Diagramas
 
Curso Uml 2.5 Diagramas De ImplementacióN
Curso Uml   2.5 Diagramas De ImplementacióNCurso Uml   2.5 Diagramas De ImplementacióN
Curso Uml 2.5 Diagramas De ImplementacióN
 
Curso Uml 2.4 Diagramas De Comportamiento
Curso Uml   2.4 Diagramas De ComportamientoCurso Uml   2.4 Diagramas De Comportamiento
Curso Uml 2.4 Diagramas De Comportamiento
 
Curso Uml 2.3 Diagramas De InteraccióN
Curso Uml   2.3 Diagramas De InteraccióNCurso Uml   2.3 Diagramas De InteraccióN
Curso Uml 2.3 Diagramas De InteraccióN
 
Curso Uml 2.1 Diagramas De Cu Y Clases
Curso Uml   2.1 Diagramas De Cu Y ClasesCurso Uml   2.1 Diagramas De Cu Y Clases
Curso Uml 2.1 Diagramas De Cu Y Clases
 
Curso Uml 1 Introduccion
Curso Uml   1 IntroduccionCurso Uml   1 Introduccion
Curso Uml 1 Introduccion
 
Curso Uml 1 Introduccion
Curso Uml   1 IntroduccionCurso Uml   1 Introduccion
Curso Uml 1 Introduccion
 
Curso Java Avanzado 6 Struts
Curso Java Avanzado   6 StrutsCurso Java Avanzado   6 Struts
Curso Java Avanzado 6 Struts
 
Curso Java Avanzado 5 Ejb
Curso Java Avanzado   5 EjbCurso Java Avanzado   5 Ejb
Curso Java Avanzado 5 Ejb
 
Curso Java Avanzado 3 Js Ps
Curso Java Avanzado   3 Js PsCurso Java Avanzado   3 Js Ps
Curso Java Avanzado 3 Js Ps
 

Último

El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosLCristinaForchue
 
Carta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfCarta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfangelinebocanegra1
 
La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....Aaron Betancourt
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfOBr.global
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETGermán Küber
 
Análisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfAnálisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfcastrodanna185
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfymiranda2
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfJoseAlejandroPerezBa
 
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...OLGAMILENAMONTAEZNIO
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidaddanik1023m
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfalejandrogomezescoto
 
Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.marianarodriguezc797
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxPaolaCarolinaCarvaja
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx Emialexsolar
 
La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2montoyagabriela340
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...RaymondCode
 
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSPRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSLincangoKevin
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfodalistar77
 

Último (20)

BEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura SilvaBEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
 
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier FolchBEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
 
Carta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfCarta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdf
 
La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
 
Análisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfAnálisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdf
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
 
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidad
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
 
Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docx
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx E
 
La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
 
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSPRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdf
 

Desarrollo android - 5 - almacenamiento de datos

  • 2. 2 Índice Historia ¿Qué es Android? Arquitectura del sistema Entorno de desarrollo Arquitectura de las aplicaciones Almacenamiento de datos Multimedia Práctica final
  • 3. 3 Almacenamiento de datos  En aplicaciones típicas de escritorio, el sistema operativo ofrece el sistema de ficheros para compartir datos entre aplicaciones  En Android, los ficheros son privados por aplicación  Para compartir información, se utilizan los Content Providers
  • 4. 4 Almacenamiento de datos: Preferences  Técnica ágil para guardar datos simples de la aplicación  Los datos se almacenan en pares key/value  Usado típicamente para guardar las preferencias de la aplicación (fuentes, colores..)  Permite guardar datos primitivos (Boolean, float...)  Esta información persiste aunque la aplicación muera.  Actividades tienen los métodos onSaveInstance() o onStop() para guardar los datos antes de acabar  Se invoca el método getSharedPreferences (File) si tenemos varios ficheros o getPreferences() para un sólo fichero.
  • 5. 5 Almacenamiento de datos: Preferences (II) import android.app.Activity; import android.content.SharedPreferences; public class Calc extends Activity { public static final String PREFS_NAME = "MyPrefsFile"; . . . @Override protected void onCreate(Bundle state){ super.onCreate(state); . . . // Restore preferences SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); boolean silent = settings.getBoolean("silentMode", false); setSilent(silent); } @Override protected void onStop(){ super.onStop(); // Save user preferences. We need an Editor object to // make changes. All objects are from android.context.Context SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("silentMode", mSilentMode); // Don't forget to commit your edits!!! editor.commit(); } }
  • 6. 6 Ejemplo del workspace:  Preferences-PersistentState: en este ejemplo se muestra cómo persistir la información utilizando las Preferences La Activity principal muestra dos campos de texto editable. Cuando se modifican los valores de estos campos y se pulsa el botón de volver en dispositivo, al regresar a la Activity se puede ver cómo en el segundo campo se ha perdido la información. Esto es debido a que la Activity ha restaurado la información de ese campo en el método onResume(), llamado al restaurar la instancia. Ejemplos y ejercicios
  • 7. 7 Almacenamiento de datos: ficheros locales  Por defecto, sólo la aplicación puede acceder a esos ficheros (permisos Unix)  Acceso similar a Java estándar, se deben crear inputs y outpus streams  Sólo se soportan archivos creados en la misma carpeta que la aplicación  Las aplicaciones van a la ruta: /data/app (gratuitas) y /data/app-private (de pago), las nuevas versiones soportan almacenamiento en la SDCard String FILE_NAME = "tempfile.tmp"; // Create a new output file stream that’s private to this application. FileOutputStream fos = openFileOutput(FILE_NAME, Context.MODE_PRIVATE); // Create a new file input stream. FileInputStream fis = openFileInput(FILE_NAME);
  • 8. 8 Ejemplo del workspace:  Storage-File: en este ejemplo se muestra cómo utilizar Files para almacenar y listar la información de ficheros La Activity principal cómo interactuar con los métodos de la clase File y el sistema de ficheros de Android (ruta local, ruta de caché…)  Storage-SDCard: en este ejemplo se muestra cómo utilizar almacenamiento externo (SDCard) verificando previamente permisos para acceder y escribir. La Activity principal verifica que el almacenamiento externo ha sido montado y que se dispone de permisos de escritura en éste. Ejemplos y ejercicios
  • 9. 9 Almacenamiento de datos: SQLite  Cada base de datos es privada para la aplicación, pero pueden acceder todas las clases de ésta.  Las bases de datos se almacenan en la carpeta /data/data/nombre_package/databases  Para compartir la información utilizar ContentProviders  Permite gestionar upgrades de las bases de datos (realizar Alter Tables cuando se necesite)
  • 10. 10 Almacenamiento de datos: SQLite (II)  Base de datos Open Source  Cumplimenación de estándares de BDs  Ligera, no requiere excesivos recursos  Las querys (consultas) se devuelven como objetos Cursor, apuntando a la información  Utilizada en reproductores MP3, iPhone y iPods  Para información detallada: http://www.sqlite.org
  • 11. 11 Almacenamiento de datos: SQLite Cursors  Estructura para recorrer y procesar consultas  Funciones principales para navegar en los resultados de una query:  moveToFirst: mueve el cursor a la primera fila de los registros  moveToNext: mueve el cursor a la siguiente fila de los registros  moveToPrevious: mueve el cursor a la fila anterior de los registros  getCount: devuelve el número de registros de la query  getColumnIndexOrThrow: devuelve un índice para la columna dada  getColumnName: dado un índice, devuelve el nombre de esa columna  getColumnNames: devuelve un array con los nombres de las columnas  moveToPosition: mueve el cursor al registro que hay en esa posición  getPosition: devuelve la posición actual del cursor
  • 12. 12 Almacenamiento de datos: SQLite creación de tablas private static final String DATABASE_NAME = “myDatabase.db”; private static final String DATABASE_TABLE = “mainTable”; private static final String DATABASE_CREATE = “create table “ + DATABASE_TABLE + “ ( _id integer primary key autoincrement,” + “column_one text not null);”; SQLiteDatabase myDatabase; private void createDatabase() { myDatabase = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE, null); myDatabase.execSQL(DATABASE_CREATE); }
  • 13. 13 Ejemplo del workspace:  SQL-Access: en este ejemplo se muestra cómo interactuar con una base de datos local de una aplicación Android.  Después de ejecutar el ejemplo, se puede comprobar lo siguiente: 1. La base de datos ha sido creada en el siguiente directorio: /data/data/com.slashmobility.curso.android/databases 2. Para comprobarlo, se puede ejecutar: adb –s emulator-5554 shell, con el que entraremos con el Root 3. Ejecutar > sqlite3 /data/data/com.slashmobility.curso.android/databases/midatabase para abrir la BD del ejemplo. En este modo se pueden ejecutar sentencias SQL. 4. Ejecutar >SELECT * from dictionary;  SQL-Demo: en este ejemplo se muestra cómo utilizar las BDs con Android añadiendo complejidad de diseño Al crear la Activity principal, se crea una tabla con una estructura determinada, en este caso una tabla simple con un ID y una campo de tipo Text. defecto (this.dh.insert()). Se realiza un borrado de datos que puedan existir en la base de datos. Posteriormente se muestra cómo insertar valores en la tabla. Al finalizar, se recuperan todos los valores insertados en la tabla (this.dh.selectAll()) y se muestran por pantalla. Ejemplos y ejercicios
  • 14. 14 Almacenamiento de datos: SQLite querys // Return all rows for columns one and three, no duplicates String[] result_columns = new String[] {KEY_ID, KEY_COL1, KEY_COL3}; Cursor allRows = myDatabase.query(true, DATABASE_TABLE, result_columns, null, null, null, null, null, null); // Return all columns for rows where column 3 equals a set value // and the rows are ordered by column 5. String where = KEY_COL3 + “=” + requiredValue; String order = KEY_COL5; Cursor myResult = myDatabase.query(DATABASE_TABLE, null, where, null, null, null, order);
  • 15. 15 Almacenamiento de datos: SQLite resultados int GOLD_HOARDED_COLUMN = 2; Cursor myGold = myDatabase.query(“GoldHoards”, null, null, null, null, null, null); float totalHoard = 0f; // Make sure there is at least one row. if (myGold.moveToFirst()) { // Iterate over each cursor. do { float hoard = myGold.getFloat(GOLD_HOARDED_COLUMN); totalHoard += hoard; } while(myGold.moveToNext()); } float averageHoard = totalHoard / myGold.getCount();
  • 16. 16 Almacenamiento de datos: SQLite Añadir un nuevo registro // Create a new row of values to insert. ContentValues newValues = new ContentValues(); // Assign values for each row. newValues.put(COLUMN_NAME, newValue); [ ... Repeat for each column ... ] // Insert the row into your table myDatabase.insert(DATABASE_TABLE, null, newValues);
  • 17. 17 Almacenamiento de datos: SQLite Modificar un registro // Define the updated row content. ContentValues updatedValues = new ContentValues(); // Assign values for each row. updatedValues.put(COLUMN_NAME, newValue); [ ... Repeat for each column ... ] String where = KEY_ID + “=” + rowId; // Update the row with the specified index with the new values. myDatabase.update(DATABASE_TABLE, updatedValues, where, null);

Notas do Editor

  1. Tema 4 del curso, que nos llevará aprox 2 días. T