SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
Desarrollo de aplicaciones
móviles en Android

1
Índice
Historia
¿Qué es Android?
Arquitectura del sistema
Entorno de desarrollo
Arquitectura de las
aplicaciones

Almacenamiento de
datos
Multimedia
Práctica final
Presentación
2
Objetivos

Almacenamiento
de datos
Conocer los mecanismo que
ofrece la plataforma Android
para gestionar la
persistencia de datos.
Evaluar cuando es más
adecuado usar un
mecanismo de persistencia
u otro.
Analizar el concepto de
Preferencias.
Utilizar el sistema de
ficheros como herramienta
de persistencia.
Comprender las ventajas
que ofrece SQlite vs una
BBDD relacional no ligera.
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
Ejemplos y ejercicios
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.
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
Ejemplos y ejercicios
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.

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/databas
es
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

key

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
autoincrement,” + “column_one text not null);”;

SQLiteDatabase myDatabase;
private void createDatabase() {
myDatabase = openOrCreateDatabase(DATABASE_NAME,
Context.MODE_PRIVATE, null);
myDatabase.execSQL(DATABASE_CREATE);
}

13
Ejemplos y ejercicios
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/midatabas
e 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.

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);

18
Conclusiones

Almacenamiento de
datos
Conocer los mecanismo que
ofrece la plataforma Android para
gestionar la persistencia de datos.
Evaluar cuando es más adecuado
usar un mecanismo de
persistencia u otro.
Analizar el concepto de
Preferencias.
Utilizar el sistema de ficheros
como herramienta de persistencia.
Comprender las ventajas que
ofrece SQlite vs una BBDD
relacional no ligera.
19

Contenu connexe

Tendances (20)

Objeto sql.data table
Objeto sql.data tableObjeto sql.data table
Objeto sql.data table
 
58517228 postgre sql-desarrolladoresbasico
58517228 postgre sql-desarrolladoresbasico58517228 postgre sql-desarrolladoresbasico
58517228 postgre sql-desarrolladoresbasico
 
Unidad3 poo 4a parte
Unidad3 poo 4a parteUnidad3 poo 4a parte
Unidad3 poo 4a parte
 
Conceptos basicos mysql
Conceptos basicos mysqlConceptos basicos mysql
Conceptos basicos mysql
 
ESPACIO DE NOMBRES SYSTEM.DATA.OLEDB
 ESPACIO DE NOMBRES SYSTEM.DATA.OLEDB ESPACIO DE NOMBRES SYSTEM.DATA.OLEDB
ESPACIO DE NOMBRES SYSTEM.DATA.OLEDB
 
Codigo para crear la base de datos
Codigo para crear la base de datosCodigo para crear la base de datos
Codigo para crear la base de datos
 
Clases de oledb
Clases de oledbClases de oledb
Clases de oledb
 
Presentación1
Presentación1Presentación1
Presentación1
 
Control JTable con base de datos.pdf
Control JTable con base de datos.pdfControl JTable con base de datos.pdf
Control JTable con base de datos.pdf
 
Espacio de nombres system.Data.Oledb
Espacio de nombres system.Data.OledbEspacio de nombres system.Data.Oledb
Espacio de nombres system.Data.Oledb
 
Objeto SqlDataReader
Objeto SqlDataReaderObjeto SqlDataReader
Objeto SqlDataReader
 
Slideshare
SlideshareSlideshare
Slideshare
 
Active x data object ado.net
Active x data object ado.netActive x data object ado.net
Active x data object ado.net
 
DDL oracle - base de datos
DDL oracle - base de datosDDL oracle - base de datos
DDL oracle - base de datos
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Sql dataadapter
Sql dataadapterSql dataadapter
Sql dataadapter
 
JAVA CON BASE DE DATOS
JAVA CON BASE DE DATOSJAVA CON BASE DE DATOS
JAVA CON BASE DE DATOS
 
Caso práctico etl pentaho my sql
Caso práctico etl pentaho my sqlCaso práctico etl pentaho my sql
Caso práctico etl pentaho my sql
 
OLE BD
OLE BDOLE BD
OLE BD
 
Lenguaje de consulta de datos
Lenguaje de consulta de datosLenguaje de consulta de datos
Lenguaje de consulta de datos
 

En vedette

Te pique lo que te pique, analiza un SQLite
Te pique lo que te pique, analiza un SQLiteTe pique lo que te pique, analiza un SQLite
Te pique lo que te pique, analiza un SQLiteAlejandro Ramos
 
Presentacion segi seminario_yisell
Presentacion segi seminario_yisellPresentacion segi seminario_yisell
Presentacion segi seminario_yisellYiz Puentes Cubides
 
Prácticas de Seguridad Android
Prácticas de Seguridad AndroidPrácticas de Seguridad Android
Prácticas de Seguridad AndroidGdroid Mexico
 
Arquitectura Android
Arquitectura AndroidArquitectura Android
Arquitectura Androidadvillacorta
 
Análisis forense de dispositivos android 01
Análisis forense de dispositivos android 01Análisis forense de dispositivos android 01
Análisis forense de dispositivos android 01Eventos Creativos
 
Android puede ser peor que George Parker
Android puede ser peor que George ParkerAndroid puede ser peor que George Parker
Android puede ser peor que George ParkerSoftware Guru
 
Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...
Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...
Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...RootedCON
 
Empresa de seguridad rootnit android malware
Empresa de seguridad rootnit android malwareEmpresa de seguridad rootnit android malware
Empresa de seguridad rootnit android malwareDavid Thomas
 
Google Aumenta La Seguridad De La Tienda De Aplicaciones Android
Google Aumenta La Seguridad De La Tienda De Aplicaciones Android
Google Aumenta La Seguridad De La Tienda De Aplicaciones Android
Google Aumenta La Seguridad De La Tienda De Aplicaciones Android woebegonesinger93
 
Seguridad para dispositivos Android
Seguridad para dispositivos AndroidSeguridad para dispositivos Android
Seguridad para dispositivos AndroidCon Vos en la Web
 
Destripando y protegiendo aplicaciones android
Destripando y protegiendo aplicaciones androidDestripando y protegiendo aplicaciones android
Destripando y protegiendo aplicaciones androidSergio Arcos
 
13 Administración Android - Seguridad
13 Administración Android  -  Seguridad13 Administración Android  -  Seguridad
13 Administración Android - Seguridadguidotic
 

En vedette (20)

Te pique lo que te pique, analiza un SQLite
Te pique lo que te pique, analiza un SQLiteTe pique lo que te pique, analiza un SQLite
Te pique lo que te pique, analiza un SQLite
 
Presentacion segi seminario_yisell
Presentacion segi seminario_yisellPresentacion segi seminario_yisell
Presentacion segi seminario_yisell
 
Prácticas de Seguridad Android
Prácticas de Seguridad AndroidPrácticas de Seguridad Android
Prácticas de Seguridad Android
 
Arquitectura Android
Arquitectura AndroidArquitectura Android
Arquitectura Android
 
Análisis forense de dispositivos android 01
Análisis forense de dispositivos android 01Análisis forense de dispositivos android 01
Análisis forense de dispositivos android 01
 
Android puede ser peor que George Parker
Android puede ser peor que George ParkerAndroid puede ser peor que George Parker
Android puede ser peor que George Parker
 
SQLite UPCI 2013
SQLite UPCI 2013SQLite UPCI 2013
SQLite UPCI 2013
 
Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...
Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...
Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...
 
Empresa de seguridad rootnit android malware
Empresa de seguridad rootnit android malwareEmpresa de seguridad rootnit android malware
Empresa de seguridad rootnit android malware
 
Google Aumenta La Seguridad De La Tienda De Aplicaciones Android
Google Aumenta La Seguridad De La Tienda De Aplicaciones Android
Google Aumenta La Seguridad De La Tienda De Aplicaciones Android
Google Aumenta La Seguridad De La Tienda De Aplicaciones Android
 
Android manifest
Android manifestAndroid manifest
Android manifest
 
Testing Android Security
Testing Android SecurityTesting Android Security
Testing Android Security
 
Seguridad para dispositivos Android
Seguridad para dispositivos AndroidSeguridad para dispositivos Android
Seguridad para dispositivos Android
 
Golosarioooo
GolosariooooGolosarioooo
Golosarioooo
 
Testing Android Security
Testing Android SecurityTesting Android Security
Testing Android Security
 
Cheat-Sheet Git Commands
Cheat-Sheet Git CommandsCheat-Sheet Git Commands
Cheat-Sheet Git Commands
 
Android
AndroidAndroid
Android
 
Destripando y protegiendo aplicaciones android
Destripando y protegiendo aplicaciones androidDestripando y protegiendo aplicaciones android
Destripando y protegiendo aplicaciones android
 
13 Administración Android - Seguridad
13 Administración Android  -  Seguridad13 Administración Android  -  Seguridad
13 Administración Android - Seguridad
 
Android Pres3
Android Pres3Android Pres3
Android Pres3
 

Similaire à Fo 5.desarrollo android-almacenamientodedatos

Similaire à Fo 5.desarrollo android-almacenamientodedatos (20)

Android DB por Cesar Cespedes
Android DB por Cesar CespedesAndroid DB por Cesar Cespedes
Android DB por Cesar Cespedes
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
 
Data storage
Data storageData storage
Data storage
 
Resulset
ResulsetResulset
Resulset
 
Persistencia de un modelo de objetos
Persistencia de un modelo de objetosPersistencia de un modelo de objetos
Persistencia de un modelo de objetos
 
Proveedor act1 uni2_daw_6a
Proveedor act1 uni2_daw_6aProveedor act1 uni2_daw_6a
Proveedor act1 uni2_daw_6a
 
Clase sqldatareader
Clase sqldatareaderClase sqldatareader
Clase sqldatareader
 
Lab archivos
Lab archivosLab archivos
Lab archivos
 
Archivossin
ArchivossinArchivossin
Archivossin
 
Trabajo de informatica 2
Trabajo de informatica 2Trabajo de informatica 2
Trabajo de informatica 2
 
Curso php dia4
Curso php dia4Curso php dia4
Curso php dia4
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gio
 
Temas programacion java_3
Temas programacion java_3Temas programacion java_3
Temas programacion java_3
 
02 formulario iniciar sesion programar
02 formulario iniciar sesion   programar02 formulario iniciar sesion   programar
02 formulario iniciar sesion programar
 
Capas
CapasCapas
Capas
 
Tallerprogramacion
TallerprogramacionTallerprogramacion
Tallerprogramacion
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Cplus
CplusCplus
Cplus
 

Dernier

Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Marketing BRANDING
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxkimontey
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 

Dernier (20)

Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 

Fo 5.desarrollo android-almacenamientodedatos

  • 2. Índice Historia ¿Qué es Android? Arquitectura del sistema Entorno de desarrollo Arquitectura de las aplicaciones Almacenamiento de datos Multimedia Práctica final Presentación 2
  • 3. Objetivos Almacenamiento de datos Conocer los mecanismo que ofrece la plataforma Android para gestionar la persistencia de datos. Evaluar cuando es más adecuado usar un mecanismo de persistencia u otro. Analizar el concepto de Preferencias. Utilizar el sistema de ficheros como herramienta de persistencia. Comprender las ventajas que ofrece SQlite vs una BBDD relacional no ligera. 3
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. Ejemplos y ejercicios 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. 7
  • 8. 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
  • 9. Ejemplos y ejercicios 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. 9
  • 10. 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/databas es Para compartir la información utilizar ContentProviders Permite gestionar upgrades de las bases de datos (realizar Alter Tables cuando se necesite) 10
  • 11. 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
  • 12. 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
  • 13. Almacenamiento de datos: SQLite creación de tablas key 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 autoincrement,” + “column_one text not null);”; SQLiteDatabase myDatabase; private void createDatabase() { myDatabase = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE, null); myDatabase.execSQL(DATABASE_CREATE); } 13
  • 14. Ejemplos y ejercicios 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/midatabas e 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. 14
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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); 18
  • 19. Conclusiones Almacenamiento de datos Conocer los mecanismo que ofrece la plataforma Android para gestionar la persistencia de datos. Evaluar cuando es más adecuado usar un mecanismo de persistencia u otro. Analizar el concepto de Preferencias. Utilizar el sistema de ficheros como herramienta de persistencia. Comprender las ventajas que ofrece SQlite vs una BBDD relacional no ligera. 19