Android

Aplicaciones Android.

iPhone

Aplicaciones iPhone/iPad.

HTML5

Aplicaciones moviles web en HTML5.
 
Mostrando entradas con la etiqueta android. Mostrar todas las entradas
Mostrando entradas con la etiqueta android. Mostrar todas las entradas

Extraer la base de datos SQLite de una aplicación desde nuestro equipo Android

miércoles, 4 de septiembre de 2013

Esta es una pregunta que se hacen muchas personas cuando colocan su aplicación en producción y empiezan a tener problemas que no tienen una clara explicación y por lo tanto sería bueno saber que datos tenia el usuario que le fallo la aplicación. 
Por lo tanto hay una solución pero con ciertas condiciones, una de ellas es que el equipo debe estar ruteado, pues tenemos que acceder como super usuario.

Primero debemos ingresar a la aplicacion Terminal, nos muestra la pantalla azul y digitamos 'su', nos mostrara un popup solicitando permisos y cuando ya veamos el cursor como #, indica que ya estamos como super usuarios.


Ahora lo siguiente es navegar hasta llegar donde se encuentra la base de datos de la aplicación, para esto utilizaremos los comando 'ls' para listar el directorio de archivos y 'cd' para abrir o salir de las carpetas. Normalmente esto se encuentra en el root/data/data 



Una vez ubicados en el data podremos listar y ver las carpetas con el nombre del paquete de la aplicación que deseamos recuperar la base de datos. Para este ejemplo vemos que ingresamos en 'com.commonsware.android.constants' y luego ingresamos a la carpeta 'databases'. Una vez dentro de 'databases' pueden ver que esta el archivo 'db' que realmente en un .sqlite, normalmente lo encontraran con .sqlite.
Luego debemos copiar el archivo 'db' a un directorio de facil acceso, por lo tanto lo moveremos a la sdcard, utilizando el comando 'cp' así, cp /sdcard/ 


Si vemos el File Manager de nuestro equipo Android, vemos que ya tenemos el archivo 'db' en la raiz de la sdcard.


Lo siguiente es pasar este archivo a nuestro computador y abrirlo con un visor de Sqlite como el SQLiteManager de Firefox. 




PANIC: Could not open - Error al lanzar emulador Android

miércoles, 27 de febrero de 2013

Si eres de los que no te gusta la configuracion que te pone Windows por defecto y mueves la carpeta de Mis Documentos a otro lado para en caso de virus o algo pueda estar protegida. Bueno ese es mi caso, pero te puede traer un pequeño problema a la hora de lanzar tu emulador Android, quien sacara este mensaje al tratar lanzarlo:
PANIC: Could not open:

Lo que sucede es que Android seguira apuntando a la carpeta por defecto de Windows, osea el toma la variable del sistema %USERPROFILE%, la puedes verificar sobre la consola digitanto echo %USERPROFILE%, podras ver que apunta a C:\Documents and Setting\Uusario, si te dirigues a la carpeta C:\Documents and Settings\Usuario\.android encontraras dos archivos que son adbkey y adbkey.

Y si revisamos la carpeta a donde movi Mis Documentos (D:\Mis Documentos\.android) aca encontraras el resto de archivos que se requieren para que el emulador se lance correctamente.

Cada vez que creas un nuevo emulador notaras que se crean 2 archivos en la carpeta avd.
Por lo tanto una solucion temporal fue, copiar los archivos de D:\Mis Documentos\.android hacia C:\Documents and Settings\Usuario\.android.
El problema es que si creas un nuevo emulador deberas copiar de nuevo los archivos.
Lo ideal es poder indicarle a Android que la carpeta de Mis Documentos fue movida.

Actualización: Y la solución es, agrega una variable de usuario en tu windows llamada ANDROID_SDK_HOME y la ubicación de donde moviste la carpeta Mis Documentos, de esta manera Android sera capaz de reconocer donde colocar la carpeta .android.
Por ultimo reinicia el computador. 

Firmar aplicación Android para pruebas

miércoles, 13 de febrero de 2013

Este tipo de firma nos permitira generar el APK e instalarlo en distintos equipos para probar su funcionamiento correctamente, este certificado es diferente al que se requiere para subir al Google Play.

Una vez hayas probado tu aplicación ya sea en el emulador o en el dispositivo de pruebas, ahora lo ideal es probarlo en otros dispositivos Android. 
Hay dos maneras de exportar el APK Sin Firmar y Firmada.

Sin Firmar nos genera el APK inmediatamente, pero no te permitirá instalarla en un dispositivo diferente al que utilizas para pruebas.
Firmada nos permitirá instalarla en cualquier dispositivo que tenga activo la instalación de aplicaciones de Orígenes desconocidos. (Para activarlo en el dispositivo Ajustes>Aplicaciones> Orígenes desconocidos).

Ahora para exportar la aplicación firmarda, das clic derecho sobre el proyecto Android Tools>Export Signed Application Package 
Luego seleccionas el proyecto que vas a exportar, Siguiente
En la ventana Keystore Selection colocas la ubicación y nombre del certificado keystorename.keystore y colocas un password, Siguiente
Luego en la ventana Key Creation colocas un Alias para tu certificado, recomiendan colocarle 25 años de valides a los certificados, aunque también puedes limitarlo, y de resto colocas la información de la compañía y país.
En la ventana Destination and key/certificate checks, colocas la ubicación donde almacenaras el APK y le das un nombre a tu nuevo APK, recuerda que se esta es creando por lo tanto no es que debas buscar un APK para colocar en la ruta. Finish 
Finalmente te diriges al la ruta que habías especificado y encontraras el APK de tu aplicación ya firmada, ahora puedes instalarla en diferentes dispositivos Android.

Referencias
http://www.srccodes.com/p/article/23/build-android-application-package-file-apk-using-eclipse-ide-and-android-development-tools-adt-plugin 

Recuperar Información de una lista cargada desde un JOIN

sábado, 4 de agosto de 2012

Este tip te puede mejorar el rendimiento de la aplicación pues lo que se busca es no volver a la persistencia por información, mi caso era que tenia una lista que se lleno con una consulta a la base de datos local y esta conformada con JOINs, por lo tanto al seleccionar la fila que deseaba no encontraba la información por medio del id de la fila pues esta asociado a otra tabla. El caso normal es 

@Override
protected void onListItemClick(ListView l,View v,int position,long id){
  String name = (String)getListAdapter().getItem(position).toString();

para mi caso requiero el id que relaciona un JOIN, y si ya se cargaron lo datos la primera vez que forme la lista, no deberia de volver a la base de datos local, por lo tanto puedes hacer esto

@Override
protected void onListItemClick(ListView l,View v,int position,long id){
  int n = 2; //posicion de id en el select
SQLiteCursor cursorJoin=(SQLiteCursor)getListAdapter().getItem(position);
  long idPerson = cursorJoin.getString(n);

donde la n es la posicion del valor que requiero en del siguiente Select
SELECT cliente._id, cliente.name, persona.idPersona,..................
FROM cliente
INNER JOIN persona ON cliente.code=persona.code

Paso de Objetos por Intents

domingo, 22 de julio de 2012

Realizar el paso de objetos, es tal como se pasan otros tipos de datos por medio de los Intent.
El siguiente codigo se coloca en el Activity1 que realiza el llamado al Activity2, pasandole una instancia del objeto MyObject.


Intent i = new Intent(this, Activity2.class);
i.putExtra(ID, object);
startActivity(i);

Ya sobre el Activity2 se recupera por medio del getSerializable()

MyObject recibir = (MyObject)extras.getSerializable(MyObject.ID);




UnsupportedOperationException cuando no se implementa un metodo

domingo, 29 de abril de 2012

Generalmente cuando se hereda se debe implementar los metodos, si por algun motivo no se va a implementar alguno recuerden la buena practica de poner un Exception como este.

throw new UnsupportedOperationException();

Problema para instalar el ADT plugin en Eclipse

miércoles, 18 de abril de 2012

Sucede que al tratar de instalar el ADT sobre Eclipse Indigo, me salia el siguiente error, el cual no me permitia continuar con la instalación.
Missing requirement: Android Development Tools
Para esto entonces se debe de instalar el plugin de WSE que se encuentra en el repositorio del eclipse, en la imagen se puede ver el repositorio al que se debe conectar y seleccionar el WSE Server Adapter, una vez instalado, reinicia el Eclipse, y ahora si puedes volver a intertar instalar el ADT.

XMLAdapters Ejemplo de Android con fallo

sábado, 25 de febrero de 2012

El XMLAdapters es un ejemplo muy bueno de la mejora que se hizo en Android para realizar el parser de los archivos XML, este cambio esta desde Android 3.0 (Honeycomb). El problema es que al tratar de probarlo te encuentras con un error, lo cual lo hace pensar que uno tiene algo desconfigurado o cualquier otra cosa menos que el ejemplo viene con un error, pero así es.

La solución es modificar el manifest y cambiar la linea del provider.

<provider android:name="com.example.android.xmladapters.XmlDocumentProvider"
                  android:authorities="xmldocument" />

Manipular base de datos SQLite de app Android

viernes, 24 de febrero de 2012

SQLite Manager es una herramienta que les sera de gran utilidad a la hora de crear, monitorear y manipular sus bases de datos en dispositivos móviles, aunque no solo para ellos pues también esta siendo utilizada en los browser y otros.

Tan solo tienen que tener instalado Firefox ir al menú Herramientas>Complementos pasar a la ficha extensiones y buscar el SQLite Manager, descargarlo, reiniciar el Firefox y ya lo encontraran en el menú Herramientas>SQLiteManager. Una vez abierto pueden cargar o crear un archivo sqlite y manipularlo




Como sacar nuestra base de datos de la aplicación Android
Cuando lancen la aplicación ya sea sobre el emulador o sobre el dispositivo (desde luego que conectado), sobre su Eclipse pasan a la perspectiva DDMS y en la ficha FileExplorer en el directorio data>data>tu.paquete>databases>data, una vez estén sobre el archivo en la parte superior derecha encontraran el botón con un disquete que les permite guardar el archivo en un directorio de tu maquina, y listo, ya puedes cargarlo sobre el SQLite.



Referencias
http://code.google.com/p/sqlite-manager/

Porque algunas variables en Android comienzan con 'm'

Es común y a la vez curioso en un principio, encontrar que en los ejemplos de Android algunas variables comenzaran siempre con 'm', la razón es que esto esta especificado en la guía de codificación de Android.


Por lo tanto ellos recomiendan que para la variables 'member' se les coloque una m al principio, eso quiere decir que las variables privadas y protegidas que se utilizaran dentro de la clase llevaran la m. Y las que no deben de llevar nada al comienzo las denominan 'local' osea las que estén dentro de un método o son son publicas en la clase.


Acá les coloco la parte de la guía donde explican el resto de convenciones para las variable, un ejemplo 


Follow Field Naming Conventions

  • Non-public, non-static field names start with m.
  • Static field names start with s.
  • Other fields start with a lower case letter.
  • Public static final fields (constants) are ALL_CAPS_WITH_UNDERSCORES.
For example:
public class MyClass {
    public static final int SOME_CONSTANT = 42;
    public int publicField;
    private static MyClass sSingleton;
    int mPackagePrivate;
    private int mPrivate;
    protected int mProtected;
}
Fuentes
http://source.android.com/source/code-style.html#follow-field-naming-conventions

http://developer.android.com/resources/tutorials/notepad/notepad-ex2.html

http://stackoverflow.com/questions/2092098/why-most-of-android-tutorials-variables-start-with-m

query() vs rawQuery()

Estos dos metodos de SQLiteDatabase, realizan la misma funcion de traer los datos al realizar un SELECT, pero su diferencia esta en el rendimiento y en la construccion del query.
Utiliza rawQuery(), cuando tengas un Select directo.
constantsCursor
= db.rawQuery("SELECT _ID, title, value " + "FROM constants ORDER BY title", null);

Utiliza query() cuando tienes en Select variable donde sus parametros pueden cambiar y puedes aprovechar para pasarlos en el array de String. mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE,
                KEY_BODY}, null, null, null, null, null);

nullColumnHack parametro en SQLiteDatabase.insert()

jueves, 23 de febrero de 2012

Sì el parametro nullColumnHack se pasa en null quiere decir que todos los campos deben de ser NOT NULL
private static final String DATABASE_CREATE =
        "create table notes (_id integer primary key autoincrement, "
        + "title text not null, body text not null);";
mDb.insert(DATABASE_TABLE, null, initialValues);


Pero si se desea permitir que alguno de ellos sea null entonces, solo se requiere pasar el nombre de alguna de la las columnas que permitira ser null, no se debe poner todas, solo una.
db.execSQL("CREATE TABLE constants (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, value REAL);");
db.insert("constants", TITLE, cv);

Android multiplaforma

sábado, 6 de agosto de 2011

Que Android es multiplataforma???, pues al parecer la comunidad de desarrolladores tiene como meta lograr este objetivo, y por ahora ya se pueden ver algunos pinitos, desde los que apoyan esto de manera oficial hasta los que se oponen hasta el final, pero, el pueblo es quien tiene la ultima palabra.

Android se ha extendido como un virus, y a tal punto que ni Apple y Microsoft se han logrado salvar de ello. A continuacion les mostrare los trabajos que las comunidades de desarrolladores estan realizando para lograr que las aplicaciones Android se puedan ejecutar en cualquier plataforma.

Blackberry: Android Player

RIM por su parte ha realizado la maquina virtual de forma oficial, la cual se llama el Android Player. Hay que tener en cuente que el Android Player correra sobre QNX (el nuevo SO de Blackberry), por lo tanto los actuales equipos de Blackberry como el 8520, no soportaran esta aplicacion pues su sistema operativo es Blackberry OS.

Meego y Maemo: Alien Dalvik

Meego es el sistema operativo de Intel para dispositivos moviles. Uno de los principales patrocinadores ha sido Nokia y actualmente se puede encontrar el N9 el cual cuenta con este sistema operativo. Como dice en el video Myriad pertenece al Open Handset y es una empresa que se dedica ha realizar maquinas virtuales. Por lo tanto ya se cuenta con Alien Dalvik para poder ejecutar aplicaciones Android sobre este sistema operativo o tambien sobre Maemo, el cual era el sistema operativo de Nokia y termino haciendo parte de Meego.

iPhone: In-The-Box

Creo que esta podria llegar a ser la mas sorprendente, ¡un iPhone corriendo aplicaciones Android!!!, seria marallivoso, pero sabemos que Apple no permitiria esto, asi que si este proyecto sale a la luz, tendria que instalarse de manera externa al AppStore. Como podemos ver en el video el proyecto esta en una fase inicial, pues ya consiguieron ejecutar una app Android sobre un iPhone pero no ha logrado que la aplicación tome los archivos y los ejecute desde el iPhone, por esto lo realizan desde la compilación de la aplicación.
De todas maneras me parece un buen comienzo, y tarde que temprano conseguirán su objetivo.

Windows: Blue Stacks
Pues Microsoft tampoco se salgo de la invasion de Android, y como vemos en el video ya se logro correr aplicaciones Android sobre Windows, el proyecto se llama Blue Stacks y ha sido tan llamativo que ha conseguido importantes patrocinadores. Blue Stacks no requiere recompilar las aplicaciones, simplemente con descargarlas desde el Android Market se podrán hacer uso inmediatamente.

Realmente esto me parece muy interesante, pues los desarrolladores no tendrían que preocuparse por migrar sus aplicaciones de una plataforma a otra; solo con realizarla en Android podrían ejecutarla en cualquier plataforma.

Actualizacion: Y llego el momento en que puedes ejecutar tus aplicaciones Android sobre Windows, BlueStacks es una realidad y lo puedes descargar desde www.bluestacks.com

Referencias

Foro de Plataformas para aplicaciones y servicios móviles

miércoles, 13 de abril de 2011


abril 13, 2011
Foro de Plataformas para aplicaciones y servicios móviles. Plataformas y servicios móviles. IEEE Subsección Medellín y el Semillero de Investigación en Computación Móvil de la Universidad EAFIT (Semillero de Investigación en Computación Móvil SICOM - Rama Estudiantil IEEE EAFIT).
Participantes:
Java Micro Edition. Alejandro Carmona, Productora de Software S.A. -PSL
Android. Juan David Gonzalez, Insitu Mobile Software S.A.
iPhone / iPad. Omar Gómez, Kogi Mobile.
Windows Phone 7. Luis Emilio Linares, Microsoft Colombia.
Blackberry. Julián David Duque, Intergrupo.
Moderador: Edwin Montoya, Universidad EAFIT.
¿Existe realmente un mercado interesante para las aplicaciones de telefonía móvil ?, ¿Realmente hay personas o empresas que estarían dispuestos a pagar por aplicaciones móviles ? ¿ De que tipo ?

http://envivo.eafit.edu.co/EnvivoEafit/?p=2996

Lorem

Please note: Delete this widget in your dashboard. This is just a widget example.

Ipsum

Please note: Delete this widget in your dashboard. This is just a widget example.

Dolor

Please note: Delete this widget in your dashboard. This is just a widget example.