3.6android

30
Programación Android Rafael Morón Abad [email protected]

Upload: klos-betto

Post on 12-Sep-2015

214 views

Category:

Documents


2 download

DESCRIPTION

andrid es un s.o

TRANSCRIPT

  • Programacin Android

    Rafael Morn Abad [email protected]

  • 3.5. Persistencia

  • Persistencia Para poder almacenar informacin persistente, Android nos proporciona 3 mecanismos: 1. Preferencias 2. Ficheros 3. BBDD SQLite DATOS

  • Preferencias Son almacenes Clave-Valor. Podemos crear varios almacenes de preferencias. Pero normalmente bastar con usar un almacn por defecto para cada aplicacin. Cada almacn de preferencias slo se instanciar una vez, es comparNdo

  • Preferencias (II) android.content.SharedPreferences"

    "Interfaz para leer las preferencias android.content.SharedPreferences.Editor"

    "Interfaz para editar las preferencias PreferenceManager.edit();!

    !Nos devuelve el editor de preferencias

  • Preferencias (II) PreferenceManager.getDefaultSharedPreferences

    !(getBaseContext());! Nos devuelve el set de preferencias por defecto

    Context. getSharedPreferences(String name, int mode)"

    "Nos devuelve el set de preferencias por defecto" name Nombre del set de preferencias mode Permisos de acceso al set de preferencias

    MODE_PRIVATE Slo accesible con mismo UserID MODE_WORLD_READABLE Slo lectura para otros UserID MODE_WORLD_WRITEABLE Lectura-Escritura para todos MODE_MULTI_PROCESS Varios procesos a la vez (ag)

  • Preferencias (III) Editor.putBoolean(String key, boolean value)"

    "Almacena un valor booleano. Editor.putFloat(String key, float value)"

    "Almacena un valor decimal en punto otante. Editor.putInt(String key, int value)"

    "Almacena un valor entero. Editor.putLong(String key, long value)"

    "Almacena un valor entero grande.

  • Preferencias (IV) Editor.putString(String key, String value)"

    "Almacena una cadena de caracteres. Editor.putStringSet(String key, Set values)

    "Almacena un conjunto de cadenas. Editor.remove(String key)"

    "Elimina el par clave-valor con clave key.

  • Preferencias (V) Editor.apply()"

    "Escribir los cambios al SharedPreferences. Esta llamada almacena los cambios de forma asncrona. Editor.commit()"

    "Escribir los cambios al SharedPreferences. Esta llamada almacena los cambios de forma sncrona.

  • Ejemplo PrcNco: Preferencias

  • Preferencias

    Realizar una aplicacin para Android 2.2 que esc r iba datos en un SharedPreferences y los muestre en un TextView

  • Ficheros El almacenamiento en cheros puede uNlizar dos Npos de almacenamiento: Memoria interna

    Por defecto, los cheros son privados para la aplicacin. Se eliminan al desinstalar la aplicacin.

    Memoria externa (tarjeta de memoria) Los cheros son pblicos y pueden alterarse externamente, p.e. en un ordenador.

  • Ficheros (II) Almacenamiento Interno

    Almacenamiento Externo (Tarjeta SD)

    Aplicacin

    AcNvos y Recursos

    Las aplicaciones normalmente se instalan en la memoria interna del telfono. Adems de acceder a los acNvos y recursos de la aplicacin, podemos escribir cheros en el almacenamiento interno o externo. La memoria interna es escasa, no se debe abusar.

  • Ficheros (III) Almacenamiento Interno

    Almacenamiento Externo (Tarjeta SD)

    Aplicacin

    AcNvos y Recursos

    Las aplicaciones tambin pueden estar instaladas en la tarjeta SD del telfono. Esto es posible slo a parNr de Android 2.2. Los accesos a memoria externa siempre han sido ms lentos, pero lNmamente apenas son apreciables.

  • Almacenamiento Interno (I) Escribir a un chero: final String NOMBREFICHERO= "nota";"final String contenido = "Llamar a Raquel";""FileOutputStream fos = openFileOutput( NOMBREFICHERO, Context.MODE_PRIVATE);"fos.write(string.getBytes());"fos.close();"

    MODE_PRIVATE Nuevo chero, slo accesible a la aplicacin MODE_WORLD_READABLE Nuevo chero, legible por otras MODE_WORLD_WRITABLE Nuevo chero, escribible por otras MODE_APPEND Aadir al chero

  • Almacenamiento Interno (II) Leer de un chero: final String NOMBREFICHERO= "nota";"StringBuffer contenido = new StringBuffer("");""FileInputStream fis = openFileInput( NOMBREFICHERO);"while( (ch = fin.read()) != -1)" contenido.append((char)ch);"fis.close();"""

  • Ejemplo PrcNco: Lista de la compra

  • Lista de la compra

    Realizar una aplicacin para Android 2.2 que e s c r i ba t ex to en un EditText. Este texto se almacenar a l p u l s a r e l b o t n Guarda o al salir de la aplicacin pulsando el botn Atrs.

  • Ejemplo PrcNco: Lista de la compra con Interfaz de Usuario

  • Lista de la Compra con Interfaz de Usuario

    Realizar una aplicacin para Android 2.2 con una vista Npo Lista. La vista tendr un campo de texto y un botn Aadir para guardar la entrada en la lista de la compra. A l hacer c l i ck en un elemento de la lista, un d i l o go no s o f r e ce r eliminarlo

  • Almacenamiento Externo (I) En el caso de almacenamiento externo, no podemos suponer que ste existe. Puede no haber tarjeta de memoria insertada. Environment.getExternalStorageState(): Environment.MEDIA_MOUNTED Disponible para leer y escribir Environment.MEDIA_MOUNTED_READ_ONLY Disponible en slo lectura Otro valor No disponible

  • Almacenamiento Externo (II) En almacenamiento externo, manejaremos directorios.

    Ficheros privados para la aplicacin Context.getExternalFilesDir (String type) Devuelve un File que representa el directorio.

    Type es una de estas constantes (Environment.), o null para el directorio raz:

    DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES, DIRECTORY_ALARMS,

    DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, DIRECTORY_MOVIES. null

  • Almacenamiento Externo (III) Ficheros comparNdos con otras aplicaciones Context.getExternalStoragePublicDirectory (String type) Devuelve un File que representa el directorio.

    Type es una de estas constantes (Environment.): En este caso type no puede ser null.

    DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES, DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS,

    DIRECTORY_PICTURES, DIRECTORY_MOVIES, DIRECTORY_DOWNLOADS, DIRECTORY_DCIM

  • Almacenamiento Externo (IV) Acceso a cheros privados:

    File file = ""new File(getExternalFilesDir(null), "DemoFile.jpg");"

    FileOutputStream fos = new FileOutputStream(file);"()"fos.close();"

    Acceso a cheros pblicos:

    File file = ""new File(getExternalStoragePublicDirectory"

    (DIRECTORY_PICTURES), "DemoFile.jpg");"FileOutputStream fos = new FileOutputStream(file);"()"fos.close();"

  • Almacenamiento Externo (V) La entrada-salida en el espacio de la aplicacin, sea interno o externo, no requiere permisos. La lectura de las carpetas comparNdas de Android (fotos, vdeos, etc) no requiere permisos. La escritura en las carpetas comparNdas s que requiere el permiso:

    WRITE_EXTERNAL_STORAGE

  • Permisos Hay una serie de acciones en Android que requieren permisos. Al instalar la aplicacin, se muestran los permisos que la aplicacin requiere, para que el usuario acepte o no. Lista completa: hkp://developer.android.com/reference/android/Manifest.permission.html Resumen de permisos en castellano: hkp://www.androidzona.net/analisis-de-los-permisos-en-android/

  • Permisos (II) ACCESS_COARSE_LOCATION Localizacin aproximada (p.e. por celdas) ACCESS_FINE_LOCATION Localizacin precisa (p.e. GPS) ACCESS_WIFI_STATE Informacin sobre redes WiFi BLUETOOTH Acceder a disposiNvos Bluetooth emparejados BLUETOOTH_ADMIN Descubrir y emparejarse por Bluetooth CALL_PHONE Iniciar llamadas sin conrmacin INTERNET Permite abrir sockets y usar la red READ_CALENDAR Leer datos del calendario READ_CONTACTS Obtener los contactos del telfono READ_SMS Leer SMS recibidos RECEIVE_SMS (MMS) Monitorizar los SMS (MMS) segn se reciben SEND_SMS Enviar SMS WRITE_EXTERNAL_STORAGE Escribir en cheros externos USE_SIP UNlizar el servicio SIP VIBRATE Uso de la vibracin WRITE_SMS Escribir en el almacn de SMS (p.e. borrar SMS)

  • Permisos (III)

  • Permisos (IV)

  • Permisos (V) AndroidManifest.xml