Desarrollo de Aplicaciones para Android
|
|
|
- Ricardo Escobar Sánchez
- hace 7 años
- Vistas:
Transcripción
1 Desarrollo de Aplicaciones para Android Sesión 6: Ficheros y acceso a datos Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-1
2 Puntos a tratar Ficheros tradicionales Preferencias SQLite Proveedores de contenidos Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-2
3 Ficheros tradicionales FileOutputStream fos = openfileoutput("fichero.txt", Context.MODE_PRIVATE); FileInputStream fis = openfileinput("fichero.txt"); Context.MODE_PRIVATE hace que el fichero sea privado a la aplicación El fichero se creará si no existe Context.MODE_APPEND para añadir al final del archivo Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-3
4 Ficheros tradicionales: escritura FileOutputStream fos; try { fos = openfileoutput( FILENAME, Context.MODE_APPEND ); DataOutputStream dos = new DataOutputStream(fos); dos.writebytes( str + "\n" ); fos.close(); catch (FileNotFoundException e) { e.printstacktrace(); catch (IOException e) { e.printstacktrace(); Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-4
5 Ficheros tradicionales: lectura FileInputStream fin; try { fin = openfileinput( strinputfilename ); DataInputStream dis = new DataInputStream(fin); String str = dis.readline(); while( str!= null ) { str = dis.readline(); fin.close(); catch (FileNotFoundException e) { e.printstacktrace(); catch (IOException e) { e.printstacktrace(); Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-5
6 Tarjeta de memoria SD Utilizaremos: Environment.getExternalStorageDirectory() FileWriter Para probar en el emulador necesitamos Tener creada una SD mksdcard 512M sdcard.iso Para copiar fuera del emulador el archivo grabado en la tarjeta: adb pull /sdcard/fich.txt fich.txt Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-6
7 Tarjeta de memoria SD try { File raiz = Environment.getExternalStorageDirectory(); if (raiz.canwrite()){ File file = new File(raiz, "fichero.txt"); BufferedWriter out = new BufferedWriter(new FileWriter(file)); out.write("mi texto escrito desde Android"); out.close(); catch (IOException e) { Log.e("FILE I/O", "Error en la escritura de fichero: " + e.getmessage()); Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-7
8 Preferencias SharedPreferences: mecanismo que Android ofrece para almacenar opciones y preferencias Mucho más mantenible y sencillo que si se usan ficheros tradicionales Integrable de forma muy directa con interfaz gráfica de usuario para ajustar los valores de las preferencias Aparte de eso las Activity guardan el estado de la interfaz de usuario cuando pasan a segundo plano. El manejador onsaveinstancestate( ) está diseñado para guardar el estado de la actividad cuando ésta debe ser terminada. Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-8
9 Designing for Seamlessness En la guía oficial, Aplicaciones sin costuras Don't Drop Data Don't Expose Raw Data Don't Interrupt the User Got a Lot to Do? Do it in a Thread Don't Overload a Single Activity Screen Extend System Themes Design Your UI to Work with Multiple Screen Resolutions Assume the Network is Slow Don't Assume Touchscreen or Keyboard Do Conserve the Device Battery Otra actividad puede aparecer en cualquier momento Si una actividad acepta entrada de texto, deberá sobrecargar el onsaveinstancestate() para guardarlo de manera apropiada Ejemplo: cliente durante la redacción de un . Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-9
10 Guardar preferencias comunes SharedPreferences pref; pref = PreferenceManager.getDefaultSharedPreferences( getapplicationcontext()); SharedPreferences.Editor editor = pref.edit(); editor.putboolean("escierto", false); editor.putstring("nombre", "Nombre del usuario"); editor.commit(); // //Lectura de las preferencias: boolean escierto = pref.getboolean("escierto",false); String nombre = pref.getstring("nombre", "sin nombre"); En la lectura de las preferencias se indica un valor por defecto porque, si la preferencia indicada en la clave no existe, será creada y se devolverá el valor por defecto Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-10
11 Cambio de preferencias Listener para actualizar lo que sea necesario cuando ocurra algún cambio desde alguna parte de la aplicación: prefvalidacion.registeronsharedpreferencechangelistener( new OnSharedPreferenceChangeListener() public void onsharedpreferencechanged( SharedPreferences sharedpreferences, String key) { //Ha cambiado algo, emprender las //acciones necesarias. ); Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-11
12 GUI para preferencias res/xml/preferencias.xml Las key deben coincidir con las claves de las preferencias <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android=" <PreferenceCategory android:title="validar DNI en:"> <CheckBoxPreference android:title="en el campo" android:summary="validar la introducción de números" android:key="validacampo"></checkboxpreference> <CheckBoxPreference android:title="al pulsar" android:summary="comprobar que la letra sea la correcta" android:key="validaboton"></checkboxpreference> </PreferenceCategory> <PreferenceCategory android:title="otras preferencias:"> <CheckBoxPreference android:enabled="false" android:title="otra, deshabilitada" android:key="otra"></checkboxpreference> </PreferenceCategory> </PreferenceScreen> Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-12
13 GUI para preferencias Para mostrar el XML en una actividad: public class Preferencias extends PreferenceActivity protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); addpreferencesfromresource(r.xml.preferencias); StartActivity( new Intent(this, Preferencias.class) ); Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-13
14 SQLite Gestor de base de datos relacional Open Source Útil para aplicaciones pequeñas No requiere la instalación aparte de un gestor de base de datos. Android da soporte a SQLite Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-14
15 SQLite. Creación Crear la base de datos private static final String CREATE_DB = "CREATE TABLE " + TABLE_NAME + "("+COLUMNAS[0]+" INTEGER PRIMARY KEY, " +COLUMNAS[1]+" TEXT, " +COLUMNAS[2]+" NUMBER)"; SQLiteDatabase db; db.execsql("drop TABLE IF EXISTS " + TABLE_NAME); db.execsql(create_db); Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-15
16 SQLiteOpenHelper Patrón de diseño para abrir y/o actualizar la versión de la base de datos private static class MiOpenHelper extends SQLiteOpenHelper { MiOpenHelper(Context context) { super(context, DATABASE_NAME, null, public void oncreate(sqlitedatabase db) { public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { Log.w("SQL","onUpgrade: eliminando tabla si existe, y creándola de nuevo"); db.execsql("drop TABLE IF EXISTS " + TABLE_NAME); oncreate(db); MiOpenHelper openhelper = new MiOpenHelper(this.context); this.db = openhelper.getwritabledatabase(); Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-16
17 SQLite. Insertar y eliminar Insertar datos con una sentencia compilada Las sentencias compiladas evitan las inyecciones (accidentales o malintencionadas) de código SQL. private static final String INSERT = "insert into " + TABLE_NAME + "("+COLUMNAS[1]+","+COLUMNAS[2]+") values (?,?)"; // SQLiteStatement insertstatement; insertstatement = db.compilestatement(insert); // insertstatement.bindstring(1, Alicante ); insertstatement.bindlong(2, 12345); insertstatement.executeinsert(); // db.delete(table_name, null, null); Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-17
18 SQLite. Query Los resultados de las query se recorren con un cursor. List<String> list = new ArrayList<String>(); Cursor cursor = db.query(table_name, COLUMNAS, null, null, null, null, null); if (cursor.movetofirst()) { do { list.add(cursor.getstring(1)); while (cursor.movetonext()); if (cursor!= null &&!cursor.isclosed()) { cursor.close(); Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-18
19 SQLlite Data Helper Un Data Helper es un patrón de diseño que separa el código de acceso a la fuente de datos en una clase con métodos para insertar, modificar, eliminar datos, etc. Lo programamos como una clase propia. public class DataHelper { private static final String DATABASE_NAME = "mibasededatos.db"; private static final int DATABASE_VERSION = 1; private static final String TABLE_NAME = "ciudades"; private static final String[] COLUMNAS = {"_id","nombre","habitantes"; private static final String INSERT = "insert into " + TABLE_NAME + "("+COLUMNAS[1]+","+COLUMNAS[2]+") values (?,?)"; private static final String CREATE_DB = "CREATE TABLE " + TABLE_NAME + "("+COLUMNAS[0]+" INTEGER PRIMARY KEY, " +COLUMNAS[1]+" TEXT, " +COLUMNAS[2]+" NUMBER)"; private Context context; private SQLiteDatabase db; private SQLiteStatement insertstatement;... Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-19
20 SQLite Data Helper... public DataHelper(Context context) { //Constructor this.context = context; MiOpenHelper openhelper = new MiOpenHelper(this.context); this.db = openhelper.getwritabledatabase(); this.insertstatement = this.db.compilestatement(insert); private static class MiOpenHelper extends SQLiteOpenHelper { MiOpenHelper(Context context) { super(context, DATABASE_NAME, null, public void oncreate(sqlitedatabase db) { public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { Log.w("SQL","onUpgrade: eliminando tabla si existe, y creándola de nuevo"); db.execsql("drop TABLE IF EXISTS " + TABLE_NAME); oncreate(db);... Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-20
21 SQLite Data Helper... public long insert(string name, long number) { this.insertstatement.bindstring(1, name); this.insertstatement.bindlong(1, number); return this.insertstatement.executeinsert(); public int deleteall() { return db.delete(table_name, null, null); public List<String> selectallnombres() { List<String> list = new ArrayList<String>(); Cursor cursor = db.query(table_name, COLUMNAS, null, null, null, null, null); if (cursor.movetofirst()) { do { list.add(cursor.getstring(1)); while (cursor.movetonext()); if (cursor!= null &&!cursor.isclosed()) { cursor.close(); return list; Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-21
22 Proveedores de contenidos Todos heredan de la clase ContentProvider Proporcionan una interfaz para publicar y consumir datos Identifican la fuente de datos con una URI que empieza por content:// Hay proveedores nativos pero también podemos crear proveedores propios Es una forma estándar para compartir fuentes de datos entre aplicaciones diferentes Se deben declarar en el AndroidManifest.xml Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-22
23 Proveedores nativos Algunos proveedores de contenido nativos son los que se utilizan para acceder a los contactos, colección de música, etc: Browser, CallLog, ContactsContract, MediaStore, Settings, UserDictionary. Necesitan tener permisos en el AndroidManifest.xml, por ejemplo, para los contactos:... <uses-sdk android:minsdkversion="8" /> <uses-permission android:name="android.permission.read_contacts"/> </manifest> Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-23
24 Query a un proveedor Las query nos devuelven un cursor que debemos recorrer: ContentResolver.query( Uri uri, String[] projection, String selection, String[] selectionargs, String sortorder ); Acceder a la lista completa de contactos: ContentResolver cr = getcontentresolver(); Cursor cursor = cr.query(contactscontract.contacts.content_uri, null, null, null, null); Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-24
25 Notificación de cambios Un cursor puede ser notificado de los cambios que ocurran en un ContentProvider: cursor.setnotificationuri(cr, ContactsContract.Contacts.CONTENT_URI); Muy útil para que un componente gráfico actualice el contenido que muestra, de manera automática Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-25
26 Adaptador Ejemplo de adaptador de un Cursor a un componente gráfico ListView ListView lv = new (ListView)findViewById(R.id.ListView01); SimpleCursorAdapter adapter = new SimpleCursorAdapter( getapplicationcontext(), R.layout.textviewlayout, cursor, new String[]{ ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, new int[]{ R.id.TextView1, R.id.TextView2); lv.setadapter(adapter); Hay un layout que define el aspecto de la fila: Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-26
27 Adaptador <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:textstyle="bold" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> <TextView android:textstyle="bold" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> </LinearLayout> Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-27
28 Proveedores propios Heredaremos de ContentProvider Sobrecargaremos oncreate() delete(...) insert(...) query(...) update(...) gettype(uri) : el tipo MIME del contenido Declararemos una URI: content://es.ua.jtech.daa.proveedores/ciudades Lo declararemos en el AndroidManifest.xml Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-28
29 Proveedores propios Declaración en el AndroidManifest.xml: <provider android:name="ciudadesprovider" android:authorities="es.ua.jtech.daa.proveedores" /> Coincidiendo con el nombre de la clase: package es.ua.jtech.daa.proveedores; import android.content.contentprovider; public class CiudadesProvider extends ContentProvider {... Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-29
30 URI del proveedor propio La URI se declara como constante pública: public static final Uri CONTENT_URI = Uri.parse( "content://es.ua.jtech.daa.proveedores/ciudades"); Diferenciar entre acceder a una fila o a múltiples por medio de un 1 ó 2 : Todas las filas: content://es.ua.jtech.daa.proveedores/ciudades/1 Una fila (la 23): content://es.ua.jtech.daa.proveedores/ciudades/2/23 Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-30
31 UriMatcher Para diferenciar fácilmente entre el acceso a una o a múltiples filas nos declaramos una constante estática privada UriMatcher dentro del proveedor: private static final UriMatcher urimatcher; static{ urimatcher = new UriMatcher(UriMatcher.NO_MATCH); urimatcher.adduri("es.ua.jtech.daa.proveedores", "ciudades", ALLROWS); urimatcher.adduri("es.ua.jtech.daa.proveedores", "ciudades/#", SINGLE_ROW); Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-31
32 Tipo MIME Devolveremos un tipo MIME con Prefijo vnd. Base del dominio, por ejemplo ua.cursor.dir/ si son todas las filas o.item/ si es uno sólo Texto identificativo que indica el nombre de la clase seguido de content : si la clase es CiudadesProvider, sería ciudadesprovidercontent Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-32
33 Tipo MIME Devolvemos un tipo MIME u otro si es una fila o todas, usando para ello el public String gettype(uri uri) { switch(urimatcher.match(uri)){ case ALLROWS: return "vnd.ua.cursor.dir/ciudadesprovidercontent"; case SINGLE_ROW: return "vnd.ua.cursor.item/ciudadesprovidercontent"; default: throw new IllegalArgumentException("URI no soportada: "+uri); Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-33
34 Notificar cambios Para que la notificación de cambios funcione nuestro proveedor propio tendrá que notificarlos explícitamente tras haber terminado de realizarlos. La notificación se realiza al ContentResolver La notificación se realiza acerca de determinada URI: context.getcontentresolver().notifychange(uri, null); Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-34
35 Proveedor propio package es.ua.jtech.daa.proveedores; public class CiudadesProvider extends ContentProvider { //Campos típicos de un ContentProvider: public static final Uri CONTENT_URI = Uri.parse( "content://es.ua.jtech.daa.proveedores/ciudades"); private static final int ALLROWS = 1; private static final int SINGLE_ROW = 2; private static final UriMatcher urimatcher; static{ urimatcher = new UriMatcher(UriMatcher.NO_MATCH); urimatcher.adduri("es.ua.jtech.daa.proveedores", "ciudades", ALLROWS); urimatcher.adduri("es.ua.jtech.daa.proveedores", "ciudades/#", SINGLE_ROW); public static final String DATABASE_NAME = "mibasededatos.db"; public static final int DATABASE_VERSION = 2; public static final String TABLE_NAME = "ciudades"; private static final String[] COLUMNAS = {"_id","nombre","habitantes"; private static final String CREATE_DB = "CREATE TABLE " + TABLE_NAME + "("+COLUMNAS[0]+" INTEGER PRIMARY KEY, " +COLUMNAS[1]+" TEXT, " +COLUMNAS[2]+" NUMBER)"; private Context context; private SQLiteDatabase db;... Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-35
36 Proveedor public boolean oncreate() { this.context = getcontext(); MiOpenHelper openhelper = new MiOpenHelper(this.context); this.db = openhelper.getwritabledatabase(); return true; private static class MiOpenHelper extends SQLiteOpenHelper { MiOpenHelper(Context context) { super(context, DATABASE_NAME, null, public void oncreate(sqlitedatabase db) { public void onupgrade(sqlitedatabase db, int oldversion, int newversion){ Log.w("SQL", "onupgrade: eliminando tabla si ésta existe,"+ " y creándola de nuevo"); db.execsql("drop TABLE IF EXISTS " + TABLE_NAME); oncreate(db);... Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-36
37 Proveedor public String gettype(uri uri) { switch(urimatcher.match(uri)){ case ALLROWS: return "vnd.ua.cursor.dir/ciudadesprovidercontent"; case SINGLE_ROW: return "vnd.ua.cursor.item/ciudadesprovidercontent"; default: throw new IllegalArgumentException("URI no soportada: public Cursor query(uri uri, String[] projection, String selection, String[] selectionargs, String sortorder) { return db.query(table_name, COLUMNAS, selection, selectionargs, null, null, null);... Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-37
38 Proveedor public Uri insert(uri uri, ContentValues values) { long id = db.insert(table_name, COLUMNAS[1], values); if(id > 0 ){ Uri uriinsertado = ContentUris.withAppendedId(CONTENT_URI, id); context.getcontentresolver().notifychange(uriinsertado, null); return uriinsertado; throw new android.database.sqlexception( "No se ha podido insertar en "+uri);... Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-38
39 Proveedor public int delete(uri uri, String selection, String[] selectionargs) { int changes = 0; switch(urimatcher.match(uri)){ case ALLROWS: changes = db.delete(table_name, selection, selectionargs); break; case SINGLE_ROW: String id = uri.getpathsegments().get(1); Log.i("SQL", "delete the id "+id); changes = db.delete(table_name, "_id = " + id + (!TextUtils.isEmpty(selection)? " AND (" + selection + ')' : ""), selectionargs); break; default: throw new IllegalArgumentException("URI no soportada: "+uri); context.getcontentresolver().notifychange(uri, null); return changes;... Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-39
40 Proveedor public int update(uri uri, ContentValues values, String selection, String[] selectionargs) { int changes = 0; switch(urimatcher.match(uri)){ case ALLROWS: changes =db.update(table_name, values, selection, selectionargs); break; case SINGLE_ROW: String id = uri.getpathsegments().get(1); Log.i("SQL", "delete the id "+id); changes = db.update(table_name, values, "_id = " + id + (!TextUtils.isEmpty(selection)? " AND (" + selection + ')' : ""), selectionargs); break; default: throw new IllegalArgumentException("URI no soportada: "+uri); context.getcontentresolver().notifychange(uri, null); return changes; Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-40
41 Preguntas...? Desarrollo de Aplicaciones para Android 2012 Depto. Ciencia de la Computación e IA Ficheros y datos-41
Persistencia. Sesión 1: Ficheros y SQLite en Android. Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Persistencia Sesión 1: Ficheros y SQLite en Android 2012-2013 Depto. Ciencia de la Computación e IA Puntos a tratar Ficheros tradicionales en Android Apertura de ficheros Ficheros como recursos Operar
Ficheros y acceso a datos - Ejercicios
Ficheros y acceso a datos - Ejercicios Índice 1 Escribir en un archivo de texto...2 2 Crear y utilizar un DataHelper para SQLite...2 3 Proveedor de contenidos propio... 3 4 Por qué conviene crear proveedores
TP Nº4 Android - SQLite Fecha Miércoles 2013/08/14 Profesor: Pablo Ulman (Polshu).
BASES DE DATOS EN ANDROID Bases de datos SQLite SQLite es una base de datos Open Source que se encuentra embebida en Android Las Bases de datos que se crean son accesibles por nombre desde cualquier clase
Bases de datos en Android LSUB, GYSC, URJC
Bases de datos en Android LSUB, GYSC, URJC Base de Datos Relacional Permite guardar datos relacionados Preservando ACID http://www.amazon.com/dp/0321197844/ SQL Lenguaje estándar (casi todas las implementaciones
Persistencia en Android: ficheros y SQLite
Persistencia en Android: ficheros y SQLite Índice 1 Introducción...2 2 Manejo de ficheros tradicionales en Android...2 2.1 Apertura de ficheros...2 2.2 Ficheros como recursos...3 2.3 Operar con ficheros...3
Curso 12/13. Desarrollo de Aplicaciones Android. Persistencia
Curso 12/13 Desarrollo de Aplicaciones Persistencia Mecanismos de persistencia Preferencias Sistema de ficheros (privado) Bases de datos SQLite Almacenamiento externo (público) Conexiones de red 2 Preferencias
ALMACENAMIENTOS DE DATOS EN ANDROID CON SQLITE
SQLite M.Sc. Reynaldo Zeballos ALMACENAMIENTOS DE DATOS EN ANDROID CON SQLITE En este ejercicio vamos a crear una tabla TELEFONOS para la base de datos GUIATEL. Para lo cual utilizaremos SQLite que viene
Clases para trabajar con SQLite en Android
SQLITE SQLite SQLite (http://www.sqlite.org/) es : Una librería de software que implementa un gestor de bases de datos relacionales. Adaptado para dispositivos de bajo consumo o móviles Está escrito en
Persistencia. Mecanismos de persistencia. Preferencias. Curso 12/13
Curso 12/13 Aplicaciones Persistencia Mecanismos de persistencia Sistema de ficheros (privado) Bases de datos SQLite Almacenamiento externo (público) Conexiones de red 2 Las preferencias son una forma
UTIM Universidad Tecnológica de Izúcar de Matamoros
UTIM Universidad Tecnológica de Izúcar de Matamoros El gestor de DB por defecto en Android es Lite. SQLite es una base de datos transaccional ligera que ocupa una cantidad muy pequeña de espacio en disco
SESIÓN 5 MANEJO DE BASES DE DATOS SQLITE
SESIÓN 5 MANEJO DE BASES DE DATOS SQLITE Contenidos Resumen...1 Práctica guiada 7: ListaCompra...1 Implementación de la base de datos...2 Actividad principal: ListaCompraActivity...6 Actividad secundaria:
TP Nº4 Android - SQLite Fecha Miércoles 2014/08/29 Profesor: Pablo Ulman (Polshu)
BASES DE DATOS EN ANDROID Soluciones de Almacenamiento de Datos: Shared Preferences: o Datos primitivos privados almacenados con clave/valor Internal Storage: o Almacenamiento interno en la memoria del
DESARROLLO DE APLICACIONES EN ANDROID
DESARROLLO DE APLICACIONES EN ANDROID Abraham Gutiérrez Rodríguez Abraham Gutiérrez Rodríguez UPM 2014 1 Android proporciona varias opciones para grabar los datos persistentes de las aplicaciones. La solución
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles. Plataforma Android. Sesión 1: introducción a Android
Plataforma Android Sesión 1: introducción a Android 2011 2012 Depto. Ciencia de la Computación e IA Puntos a tratar Aplicaciones Android El archivo Manifest Ciclo de ejecución de aplicaciones Recursos
Android TAG y el principio DRY
Android es una plataforma de desarrollo que empieza a tener el sobrenombre de INFINITA en cuanto a las cosas que se pueden hacer, conjunto de APIs soportadas etc. Sin embargo al ser tan grande muchas veces
Aplicación Android de Asistencia al Caminante
Aplicación Android de Asistencia al Caminante Enrique R. Delgado Garrido Almacenamiento de datos en Android. Documento: Índice de contenido.1 A2.- Almacenamiento de datos en Android.2 A.2.1 - Preferences2
Unidad IV. Aplicaciones sobre Base de Datos
Clase:013 1 Unidad IV Aplicaciones sobre Base de Datos 2 Agenda PROGRAMA DE MANIPULACION DE BASE ANDROID SQLITE SQLITE OpenHelper SQLITE Database Cursor Ejemplos Agregar controles según campo Usar query
En nuestra actividad principal, creamos el objeto vista previa. Este objeto se creará el objeto cámara y volver a la actividad CameraDemo.
Uso de la Cámara API Android SDK es compatible con la conectividad a la cámara integrada. Usar la cámara para tomar fotos es relativamente fácil. Es algo más difícil de configurar la previa de la cámara
Programación Android. Rafael Morón Abad [email protected]
Programación Android Rafael Morón Abad [email protected] 3.5. Persistencia Persistencia Para poder almacenar información persistente, Android nos proporciona 3 mecanismos: 1. Preferencias 2. Ficheros
Almacenamiento de datos. JOSE LUIS BERENGUEL GÓMEZ [email protected] Febrero 2012
Almacenamiento de datos JOSE LUIS BERENGUEL GÓMEZ [email protected] Febrero 2012 Contenidos Almacenamiento de preferencias. Almacenamiento en la memoria interna. Almacenamiento en la memoria externa.
Crear listas personalizadas en Android
Crear listas personalizadas en Android Introducción Bienvenidos a la sección de programación Android, hoy voy a explicar cómo crear listas personalizadas en Android. Las listas en Android son elementos
Programación Android. Rafael Morón Abad [email protected]
Programación Android Rafael Morón Abad [email protected] 3.5. Persistencia Persistencia Para poder almacenar información persistente, Android nos proporciona 3 mecanismos: 1. Preferencias 2. Ficheros
Android y Recursos. Android R.java (fichero)
Cuando uno empieza a desarrollar en Android una de las mayores dudas con las que se encuentra es como funciona el fichero R.java que es generado automaticamente por el compilador. Android y Recursos Para
Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Android. Content Providers
Android Content Providers Content-Providers Persistencia: Manejar datos y exponerlos a otras aplicaciones. Interfaz con un conjunto de métodos estándar. Único modo de compartir datos entre aplicaciones.
Ejercicios - Persistencia en Android: ficheros y SQLite
Ejercicios - Persistencia en Android: ficheros y SQLite Índice 1 Uso de ficheros (0.5 puntos)...2 2 Persistencia con ficheros (0.5 puntos)...3 3 Base de datos: SQLiteOpenHelper (0.5 puntos)... 3 4 Base
Introducción al manejo de Bases de Datos con SQLite. Version Android
Universidad de El Salvador Facultad de Ingeniería y Arquitectura Escuela de Ingeniería en Sistemas Programación en Dispositivos Móviles Objetivo: Guía de Laboratorio N 06 A Introducción al manejo de Bases
PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }
PROGRAMACIÓN EN JAVA { una línea para definir, crear o ejecutar ; } JFC Y API SPECIFICATIONS OBJECT INTERFACE ABSTRACT IMPLEMENTS EXTENDS NEW EXTENDS (Hasta que una clase derivada deje de ser ABSTRACT)
Android y Java para Dispositivos Móviles
Android y Java para Dispositivos Móviles Sesión 10: Interfaz de usuario Android y Java para Dispositivos Móviles 2010 Depto. Ciencia de la Computación e IA Interfaz de usuario-1 Puntos a tratar Views Layouts
1.- Creamos un proyecto al que llamaremos MusicaMovil.
Base de datos en Android. (Modelo de la BD) Este ejercicio probablemente parecerá absurdo, pero no pretendo hacer un reproductor de música, sino más bien es un previo para un diccionario de español a maya
14 - Almacenamiento de datos en un archivo de texto en la memoria interna Problema 1:
14 - Almacenamiento de datos en un archivo de texto en la memoria interna Otra posibilidad de almacenar datos en nuestro dispositivo Android es el empleo de un archivo de texto que se guardará en el almacenamiento
Crear un Splash-Screen
Crear un Splash-Screen El splashscreen es una pantalla que carga justo cuando se abre la aplicación y que generalmente tiene algún aviso que indica al usuario que algo está sucediendo mientras se carga
PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:
Examen de Java Nombre: DNI: Titulación: 1. Sea una aplicación Java donde todas las clases están compiladas y empaquetas en un solo fichero JAR (programa.jar). Qué sería necesario para conseguir ejecutar
Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.
Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1
Ejercicios de Programación Tema 7. Programación Orientada a Objetos
Ejercicios de Programación Tema 7. Programación Orientada a Objetos 22 de diciembre de 2013 1. Haz una clase llamada Agenda para manejar una agenda de teléfonos. Los objetos instanciados a partir de esa
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROID. Duración en horas: 60 OBJETIVOS DEL CURSO
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROID Duración en horas: 60 OBJETIVOS DEL CURSO A lo largo de 22 temas se desarrollan ejemplos teórico-prácticos de casi todos los conceptos necesarios para comprender
Aurelio López Ovando Botón de pánico (App para Android)
Tabla de la BD local 1 configuracion.xml VISTA
Examen Teórico Convocatoria de Junio de 2012
Examen Teórico Convocatoria de Junio de 2012 Nombre: DNI: Titulación: 1. Sobre el control de errores en Java: a) El siguiente método contiene un error de compilación debido al uso de excepciones. Explica
Unidad 3. PrimerProyecto. Nuestra primera aplicacio n Android
Unidad 3. PrimerProyecto. Nuestra primera aplicacio n Android Jose A. Montenegro Dpto. Lenguajes y Ciencias de la Computacio n ETSI Informa tica. Universidad de Ma laga [email protected] 14 de abril de
Diseño de tipos Igualdad, representación, código, copia y relación de orden
Práctica 4 Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.1 Índice Gestión de excepciones
Examen de Programación 1. Viernes 31/enero/2014. Problema 1 o (2.5 puntos) Disponer un documento de identificación con fotografía sobre la mesa.
Examen de Programación 1. Viernes 31/enero/2014 Disponer un documento de identificación con fotografía sobre la mesa. Comenzar a resolver cada problema del examen en una hoja de papel diferente. Escribir
Ejercicio 4. Manejo de Layouts en Android. Android Con Java. Ejercicio 4. Manejo de Layouts en Android. Curso de Android con Java
Android Con Java Ejercicio 4 Manejo de Layouts en Android Objetivo del Ejercicio El objetivo del ejercicio es entender el manejo de Layout y los Adaptadores en Android. Al finalizar deberemos observar
Manual Básico Android Studio
Manual Básico Android Studio =- - --- - ----- -- - - e...;:.:z;.: = =;:::=..... _ - 1 - ÍNDICE 1 -Instalación de las herramientas necesarias para programar para Android Studio 2 -Pasos para crear el primer
Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas
2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos
Desarrollo de Aplicaciones para Android
Desarrollo de Aplicaciones para Android Sesión 2: Interfaz de usuario Desarrollo de Aplicaciones para Android Depto. Ciencia de la Computación e IA Interfaz de usuario-1 Puntos a tratar Views Layouts Eventos
Programación Android. Alejandro Alcalde. elbauldelprogramador.com
Programación Android Alejandro Alcalde elbauldelprogramador.com Copyright c 2013 Alejandro Alcalde P L A TEX. Programación Android por Alejandro Alcalde se encuentra bajo una Licencia Creative Commons
Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...
ÍNDICE. Introducción... Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1
ÍNDICE Introducción... XI Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1 Características y novedades de Access 2010... 1 Comienzo rápido del trabajo y seguimiento de la información...
Construcciones del Lenguaje Java
Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.
Estructuras de control selectivas
Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos
Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.
APUNTES DE JAVA Agenda Bienvenida Conociendo Java La Maquina Virtual Descargar e instalar el compilador El entorno de trabajo El paradigma de la programación orientada a objetos Qué es Java? Un lenguaje
Creando CRUD en PHP: operaciones básicas para la gestión de bases de datos
Creando CRUD en PHP: operaciones básicas para la gestión de bases de datos Cualquier portal web utiliza algún sistema de base de datos para almacenar la información que luego mostrará en sus páginas. Para
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROID
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROID Descripción del curso: A lo largo de 22 temas se desarrollan ejemplos teórico-prácticos de casi todos los conceptos necesarios para comprender la estructura Android
3.3 Conceptos Básicos del Lenguaje Java
3.3 Conceptos Básicos del Lenguaje Java Conjunto de Caracteres Java utiliza Unicode, un conjunto de caracteres de 16 bits Java permite leer ASCII de 7-bit o Latin-1, conviertiéndolo a Unicode Son pocos
EJEMPLO 02 JPA Departamentos y Empleados Desarrollo de aplicación de empleados por departamento
EJEMPLO 02 JPA Departamentos y Empleados Desarrollo de aplicación de empleados por departamento Contenido 1. Base de datos SQL Server (BD_Empleados_USS)... 2 2. Proyectos y paquetes necesarios... 3 3.
Ejercicio 20. SQLite en Android. Android Con Java. Ejercicio 20. Uso de SQLite en Android. Curso de Android con Java
Android Con Java Ejercicio 20 Uso de SQLite en Android Objetivo del Ejercicio El objetivo del ejercicio poner en práctica el concepto de SQLite en Android. Al finalizar el ejercicio deberemos poder acceder
Tratamiento básico de archivos en Java
Tratamiento básico de archivos en Java Lectura básica private static void lectura (String path) { File f = null; FileReader fr = null; BufferedReader br = null; Lectura básica private static void lectura
ArrayList en Java. Los principales métodos para trabajar con los ArrayList son los siguientes:
ArrayList en Java La clase ArrayList en Java, es una clase que permite almacenar datos en memoria de forma similar a los Arrays, con la ventaja de que el número de elementos que almacena, lo hace de forma
Ejemplos de uso de ficheros de acceso secuencial
Ficheros de texto Ejemplos de uso de ficheros de acceso secuencial Fernando 958 24 05 99 [email protected] CCIA - Despacho 17 3 de diciembre de 1977 1 6.6 Juan Carlos 958 24 05 97 [email protected]
Almacenamiento en Android
Almacenamiento en Android LSUB, GYSC, URJC Todo lo que hay que saber http://developer.android.com/guide/topics/ data/data-storage.html Dentro de una Aplicación Ya hemos visto, que se puede pasar con el
CODIGO PROYECTO: AppPixelproServicioWeb Proyecto Android - Servicio Web
CODIGO PROYECTO: AppPixelproServicioWeb Proyecto Android - Servicio Web I. Alcances del Proyecto a. Ide Eclipse Indigo 3.7 b. Api 10-17, Versión Android 2.3.3 A 4.2.2 c. Jdk 1.6 II. Conceptos Relacionados
PL/SQL avanzado: Secuencias, triggers, cursores y subprogramas
avanzado 22/11/2016 avanzado: Secuencias, triggers, cursores y subprogramas Grupo de Ingeniería del Software y Bases de Datos Departamento de Lenguajes y Sistemas Informáticos Universidad de Sevilla Noviembre
Ejercicios - Persistencia en Android: proveedores de contenidos y SharedPreferences
Ejercicios - Persistencia en Android: proveedores de contenidos y SharedPreferences Índice 1 Compartir datos entre actividades con Shared Preferences (0.75 puntos)... 2 2 Actividad de preferencias (0.75
Soluciones al Examen de Fundamentos de Computadores y Lenguajes
Soluciones al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Parcial. Junio 2005 1) Escribir una clase con un atributo privado que sea un array de
