El documento proporciona una introducción a los diferentes métodos de almacenamiento de datos en Android, incluyendo Preferences, archivos locales, bases de datos SQLite y Content Providers. Explica cómo acceder y manipular datos con cada uno de estos métodos y proporciona ejemplos de código.
Os dispositivos portáteis de armazenamento, os serviços na cloud e os tablets e smartphones podem ser a origem de graves problemas para as empresas que querem garantir a segurança dos seus dados, dentro e fora das instalações.
O Endpoint Protector é uma solução completa de DLP (Prevenção de Perda de Dados) e MDM (Gestão de dispositivos móveis) que previne que os colaboradores transportem informações confidenciais através de serviços de Internet ou dispositivos de armazenamento para fora da empresa.
Dear All
Thanks for investing in our products, we are looking forward to a successful completion of the investment for all the investors who have trusted us.
Best regards
Tras tres años programando en la plataforma Android esta es la película de mi vida como Android Developer, un conjunto de buenas practicas y conceptos necesarios que aún a día de hoy sigo viendo que no se cumplen en la mayoría de proyectos con los que me cruzo. Son la conclusiones sacadas de mi experiencia y de multitud de debates con compañeros. Se abordan temas como: fragmentación, uso de la clase Context, naming, maquetación en Android, memory leaks y S.O.L.I.D.
Información y matrícula: http://www.adeit.uv.es/postgrado-2010/fichabase.php?tipo=p21&codigo=10113160
I Postgrado "Gestión Empresarial de la Música", Universitat de València- ADEIT Fundació Universitat Empresa.
Un proyecto formativo único, orientado a titulados universitarios y profesionales de la industria musical interesados en adquirir o mejorar sus conocimientos para desarrollar su carrera profesional en el entorno de la Industria de la Música (discográficas, editoriales, management, producción de giras/conciertos/festivales...)
Con un equipo docente especializado, formado por profesorado de la Universitat de València y más de 30 profesionales de la Industria de la Música con una amplia experiencia en el sector.
Donde los alumnos aplicarán los conocimientos adquiridos en un entorno real, learning by doing a través de la experiencia Living Laboratory, con la cesión de artistas y profesionales por parte de las empresas colaboradoras, Warner Music Spain y Subterfuge Records.
Además, artistas nacionales e internacionales participarán en los diferentes case studies que completan el programa del curso.
Artistas confirmados: Olvido Gara "Alaska", José María Sanz "Loquillo", Juan Manuel Latorre "Vetusta Morla", Josh Rouse (EE.UU), Pau Donés "Jarabedepalo“ y Perico Sambeat.
Video de presentación: http://www.youtube.com/watch?v=8R6DuACYhVY
+INFO
Redes sociales:
Página Facebook: "Postgrado en Gestión Empresarial de la Música"
Perfil Facebook: "Post Música Universitat València"
Twitter: @postmusicauv
It is about philosophy: culture of a good programmerFernando Cejas
Philosophy is the study of general and fundamental problems, such as those connected with reality, existence, knowledge, values, reason, mind, and language.
Even though technical skills are a very positive thing, other qualifications are really more important: 'features' like respect, honesty or humility are required to become a better person and, thus, a better professional.
This is not an easy path to follow, and in order to accomplish it, let me share experiences on how to be a better programmer. Let's have a walk!
Nowadays, we as android developers suffer serious problems regarding android fragmentation if we wanna use Material Design.
In this talk we will learn how to make backward compatibility easier when applying material design on older devices.
Welcome to the old school world of Material Design.
How to Become the MacGyver of Android Custom ViewsFernando Cejas
MacGyver is part Indiana Jones, part Sherlock Holmes.
He can turn a bicycle frame into a blowtorch, disarm a bomb with a hockey ticket, create a time machine with some duct tape and a paper clip or CREATE A CUSTOM VIEW IN ANDROID.
In this talk we will walk through the Android UI framework and learn how to push it to the next level by learning how views work and how to build custom ones that will let us create innovative a UIs.
Even though we are developers dealing with source code, it is good to know how to deal with UI/UX when building our user interfaces by applying tips and best practices.
So, in this session, we are gonna talk about android usability patterns, based on real cases and experiences with mobile development.
How ANDROID TESTING changed how we think about Death - Second EditionFernando Cejas
"Irreproducible bugs become highly reproducible right after delivery to the customer". This is something that happens "almost" everyday.
It is well known that testing offers significant advantages as a development practice and helps ensure higher quality code with fewer defects.
Unfortunately, testing Android apps can be challenging, so in this session we are gonna talk about available tools and practices that could help us accomplish our goals.
How ANDROID TESTING changed how we think about DeathFernando Cejas
"Irreproducible bugs become highly reproducible right after delivery to the customer". This is something that happens "almost" everyday.
It is well known that testing offers significant advantages as a development practice and helps ensure higher quality code with fewer defects.
Unfortunately, testing Android apps can be challenging, so in this session we are gonna talk about available tools and practices that could help us accomplish our goals.
Dinosaurs and Androids: The Listview EvolutionFernando Cejas
Dinosaurs, like all living things, evolved, slowly and gradually, from previously existing creatures. The same happened with Listviews, they also evolved from pre-existing ancestors. Dinosaurs didn’t spring suddenly into existence two hundred million years ago, huge, toothy, and hungry for grub. Listviews on Android appeared since the beginning and they have been changing over the time. As you know, ListView is a fundamental component in Android, one of the most widely used widgets and also the most complex one.
In this talk, Jorge Barroso and Fernando Cejas will explain the evolution of this widget from previous versions of Android (based on its source code), mistakes that have been made in its implementation, giving examples and showing tips on how should be used when developing cool Android applications. Also, stuff like features, optimization, quirks and limitations will take place in this talk.
Talk about different experiences related with mobile web and the android webview. Native vs Hybrid. Drawbacks and benefits of native and hybrid applications
En este documento analizamos ciertos conceptos relacionados con la ficha 1 y 2. Y concluimos, dando el porque es importante desarrollar nuestras habilidades de pensamiento.
Sara Sofia Bedoya Montezuma.
9-1.
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Telefónica
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0xWord escrito por Ibón Reinoso ( https://mypublicinbox.com/IBhone ) con Prólogo de Chema Alonso ( https://mypublicinbox.com/ChemaAlonso ). Puedes comprarlo aquí: https://0xword.com/es/libros/233-big-data-tecnologias-para-arquitecturas-data-centric.html
3Redu: Responsabilidad, Resiliencia y Respetocdraco
¡Hola! Somos 3Redu, conformados por Juan Camilo y Cristian. Entendemos las dificultades que enfrentan muchos estudiantes al tratar de comprender conceptos matemáticos. Nuestro objetivo es brindar una solución inclusiva y accesible para todos.
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(); } } Acceso a datos en Android
6.
7.
8.
9.
10.
11.
12.
13. 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); Acceso a datos en Android
14. 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(); Acceso a datos en Android
15. 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); Acceso a datos en Android
16. 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 ); Acceso a datos en Android
25. Acceso a datos en Android Si no hay, vamos con el sorteo de la camiseta Preguntas???
26. Acceso a datos en Android Fernando Cejas [email_address] [email_address] @fernando_cejas http://www.android10.org/ MUCHAS GRACIAS!!!
Notas del editor
Presentación
Y si actualizamos una aplicación en el market, estos datos quedan también
Concepto de sandbox Y comentar el ejemplo de que con permisos de root, nos pueden robar nuestras aplicaciones, como se pueden devolver durante 2 días después de la compra.
El directorio de caché lo utiliza android para justamente guardar datos de caché, de la ejecución de la aplicación, etc. En el ejemplo de
Mostrar donde se crea la base de datos con el File Explorer. Mostrar los ejemplos con un select y un delete y luego ejecutar de nuevo el ejemplo para ver que se crearon los registros. Mostrar en el ejemplo también los cambios de versiones en las bases de datos: por ejemplo también si se pasa desde una versión 2 a una 4. Explicar el tema de cursores e intentar dibujarlos
Único mecanismo para compartir datos entre app ya que no hay áreas comunes. Los datos pueden estar en Files, SQLite,…, pero son propios de cada app. Si quieres compartir datos o creas contentProvider o públicas en otro. Las apps que quieren datos hablan con el ContentResolver. Los datos se tienen que presentar en forma de tablas.
Android nos provee de content providers que podemos utilizar, aunque también podemos crear los nuestros. Hay un listado grandísimo de los content providers que nos provee android: http:// developer.android.com/reference/android/provider/package-summary.html
Hay una sola instancia de ContentProvider pero el sistema interactúa con este a través de muchas instancias de ContentResolver
Cada fila contiene su único _ID Digamos que para leer un campo debemos saber el tipo de dato que ese campo contiene. Para consultar un content provider debemos una uri.
Content: schema que identifica los datos controlados por un ContentProvider Cada content resolver toma la URI como primer argumento para identificar con que provider hablar, y como segundo, la “tabla” que vamos a consultar.
You need three pieces of information to query a content provider: The URI that identifies the provider The names of the data fields you want to receive The data types for those fields If you're querying a particular record, you also need the ID for that record.
A managed Cursor handles all of the niceties, such as unloading itself when the activity pauses, and requerying itself when the activity restarts. You can ask an Activity to begin managing an unmanaged Cursor object for you by calling Activity.startManagingCursor () . Buena práctica: siempre obtener los campos que son necesarios, digamos los que vamos a usar. Esto es para performance.
Siempre que trabajemos con content providers es importante ver los permisos que requieren los mismos. Una lista de permisos se puede ver en: http://developer.android.com/reference/android/Manifest.permission.html