Home Menu

Menu



Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 16/06/13, 12:03:27
Avatar de Pulposperdidos
Pulposperdidos Pulposperdidos no está en línea
Usuario novato en la web
Mensajes: 7
 
Fecha de registro: jun 2013
Mensajes: 7
Modelo de smartphone: Zapatofono
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Buscando archivos por toda la memoria

¿Como se haría para hacer una búsqueda por toda la memoria del móvil, hasta encontrar un archivo concreto? me refiero a la memoria que es como el disco duro, haciendo una búsqueda que recorra todas las carpetas, y cuando lo encuentre nos diga la ruta. ¿es muy complicado esto?

Y ya puestos a preguntar, lo mismo pero para buscar en la tarjeta SD.

La idea es que el usuario meta el nombre de una foto y el móvil la busque por toda la memoria y la tarjeta.

Otro tema, cuando le doy a compilar a mi aplicación llama al emulador para ver mi aplicación, el AVD que yo haya definido y tal, pero tarda mucho en aparecer... ¿esto es normal? ¿hay algún emulador más rápido o mejor ?
Responder Con Cita


  #2  
Viejo 16/06/13, 12:33:40
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
La búsqueda se hace a mano recorriendo todos los ficheros y directorios, lo mejor es que le pidas al usuario en qué carpeta buscar o usar las habituales de la cámara. Y mejor todavía hacerte un índice para no recorrerlo todo en cada búsqueda.

El emulador va a pedales, hasta en mi i7 3770K con 8 GB... Si tu procesador soporta virtualizacion, se pueden usar algunas imágenes x86 y va algo más fino.

Lo mejor es tener un móvil para probar, de emuladores los más básicos van sueltecillos (hasta gingerbread). Los ICS son lentos salvo que uses la imagen x86 (que requiere instalar los drivers Intel HAX o algo así)
Responder Con Cita
  #3  
Viejo 16/06/13, 12:41:42
Avatar de set92
set92 set92 no está en línea
Miembro del foro
Mensajes: 468
 
Fecha de registro: jun 2012
Mensajes: 468
Modelo de smartphone: samsung
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Basicamente tu lo que quieres es una busqueda recursiva, luego ya da igual que sea en la memoria interna que externa.
Este metodo por ejemplo es para buscar todos los .pdf que existan en una ruta

Código:
public void walkdir(File dir) {
    String pdfPattern = ".pdf";

    File listFile[] = dir.listFiles();

    if (listFile != null) {
        for (int i = 0; i < listFile.length; i++) {

            if (listFile[i].isDirectory()) {
                walkdir(listFile[i]);
            } else {
              if (listFile[i].getName().endsWith(pdfPattern)){
                    //Aqui haces lo que quieras con los archivos terminados en .pdf

              }
            }
        }
    }    
}
Asi que solo te hace falta llamar al metodo con walkdir(Environment.getExternalStorageDirectory()) ; para buscar en la memoria externa y con el directorio principal que no se si sera // o no se como sera para la memoria interna

Y la otra duda si, es bastante normal, y no hay mejores emuladores, bueno ahi uno http://www.android-x86.org que esta escrito directamente en x86 en vez de en ARM por lo que va igual de rapido que cualquier otro programa de windows puesto que lo que ralentiza mas al emulador es la conversion de las instrucciones x86 a ARM pero es costoso hacer este otro emulador, la ultima vez que lo probe no iba del todo bien, tienes que montarlo sobre virtualbox y luego no se muy bien como ira la integracion con eclipse...

Asi que siempre se suele recomendar que si tienes un movil android lo pruebes con el movil y si tienes que mirar alguna cosa de proporciones o como queda en distintas pantallas pues ya usas los emuladores si no tienes varios moviles, que yo he visto a gente que trabaja de desarrollo web y tienen el pc y alrededor todo pantallas de moviles, tablets...de distintos tamaños para ver como va quedando en todas ellas.
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 22/06/13, 12:45:45
Avatar de Pulposperdidos
Pulposperdidos Pulposperdidos no está en línea
Usuario novato en la web
Mensajes: 7
 
Fecha de registro: jun 2013
Mensajes: 7
Modelo de smartphone: Zapatofono
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Gracias, la verdad es que no había pensado en una función recursiva y va de perlas.
Me va muy bien llamándola para la SD, pero para el directorio principal de la memoria interna no me sale... he intentado lo de las "//" y no me va... ¿Cómo hago una búsqueda por la memoria interna?
Responder Con Cita
  #5  
Viejo 23/06/13, 11:49:44
Avatar de usuariochino333
usuariochino333 usuariochino333 no está en línea
Usuario novato en la web
Mensajes: 1
 
Fecha de registro: jun 2013
Mensajes: 1
Modelo de smartphone: no tengo
Versión de ROM: no tengo
Versión de Radio: no tengo
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
he probado el ejemplo de set92 con walkdir(Environment.getExternalStorageDirectory()) ;
en mi tablet que no tiene tarjeta SD (ni posibilidad de tenerla), y listo todas mis carpetas pero todas comienzan por "/STORAGE/EMULED/0/"
¿esto es normal?
ahí veo carpetas mias, donde he puesto libros y fotos, pero también gran cantidad de otras carpetas que supongo que serán de android, de aplicaciones instaladas y demás, entonces, si tuviera una tarjeta SD de verdad ¿vería solo el contenido de la SD?, es que a mi la sensación que me ha dado es que me ha listado el 100% de las carpetas que tiene mi tablet.
Responder Con Cita
  #6  
Viejo 23/06/13, 14:47:48
Avatar de set92
set92 set92 no está en línea
Miembro del foro
Mensajes: 468
 
Fecha de registro: jun 2012
Mensajes: 468
Modelo de smartphone: samsung
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Obviamente no podia ser solo / pulpos porque piensa que todos los moviles no tienen las mismas rutas, incluso en el mismo movil cuando cambias de rom a veces cambian las rutas que me paso el otro dia no recuerdo con que rom que me pidio formatear la memoria interna, por lo que necesitas un metodo de android que siempre te sepa decir cual es, getFilesDir() creo que te daba donde esta la app pero no se si habra alguno mejor que te sirva.

Teneis aqui para leer que os resolvera las dudas http://developer.android.com/guide/t...a-storage.html

Sino este ejemplo creo que hace lo que quereis http://android-er.blogspot.com.es/20...l-storage.html

Tu caso usuariochino es mas dificil/raro porque hay que saber como han hecho todos los directorios o como hacen las compañias cuando no tienes SD externa, puede que si tenga 2 SD o que solo tenga una y la hayan partido en 2 para usar un trozo de ella como memoria externa, de ahi el nombre de EMULED pero no se.
Responder Con Cita
  #7  
Viejo 25/06/13, 11:09:23
Avatar de Marciano Verde
Marciano Verde Marciano Verde no está en línea
Miembro del foro
Mensajes: 65
 
Fecha de registro: mar 2013
Mensajes: 65
Modelo de smartphone: Samsung Galaxy S3
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
hola chicos.

Para usuariochino333:
Lo de la ruta "/STORAGE/EMULED/0/", he leído por ahí que el "0" es porque es el usuario principal, los demás usuarios tendrán números "1", "2", etc, eso suponiendo que tengas android 4.2, los anteriores no tienen soporte multiusuario y ahí no se si hay número. Tampoco se como va en android si son archivos compartidos o exclusivos de cada usuario, supongo que solo verás los compartidos.
La ruta es diferente para cada movil/table, pero da igual, con esa información puedes encontrar tu archivo, abrirlo, manipularlo, etc.
Lo que no se es porque ves cosas que no están en la SD emulada, eso que dices que ves el 100% de carpetas de tu tablet. ¿qué pasaría en las tablet con SD real?, ¿verías solo loas carpetas de la SD o también la memoria interna?.

Lo que yo tampoco se, es como poner una carpeta en raiz de la memoria interna y que quede disponible para cualquier aplicación ¿se puede sin ser root?, he leído por ahí que cada aplicación tiene su carpeta para poner sus archivos, lo que no se es como salir de esa carpeta y acceder a la carpeta de otra aplicación o una carpeta creada por mi en raiz. Esto lo he buscado por internet y no he logrado encontrarlo.
Responder Con Cita
  #8  
Viejo 13/11/14, 13:04:44
Avatar de MortadeloComic
MortadeloComic MortadeloComic no está en línea
Usuario novato en la web
Mensajes: 15
 
Fecha de registro: sep 2014
Mensajes: 15
Modelo de smartphone: Galaxy S5
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Venía a preguntar como movernos por las carpetas y he encontrado este tema, jajaja, parece que buscar antes de preguntar es buena idea.

Mi código sería el siguiente:

[PHP]
public class MainActivity extends ActionBarActivity {

TextView texto;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


texto = (TextView) findViewById(R.id.texto);
walkdir(Environment.getExternalStorageDirectory()) ;
}


public void walkdir(File dir) {
String pdfPattern = ".pdf";
String LOGTAG = "LogsAndroid";

File listFile[] = dir.listFiles();
Log.e(LOGTAG, "PRIMERO");
if (listFile != null) {
Log.e(LOGTAG, "DENTRO");
for (int i = 0; i < listFile.length; i++) {

if (listFile[i].isDirectory()) {
walkdir(listFile[i]);
} else {
if (listFile[i].getName().endsWith(pdfPattern)){
texto.setText("dentro");
}
}
}
} else {
texto.setText("fuera");
Log.e(LOGTAG, "FUERA");
}
}
}
[/PHP]

No da error, pero en la ventanida de "logcat" solo me aparece:
11-13 11:57:42.281 20043-20043/com.agapito.listandoarchivos E/LogsAndroid﹕ PRIMERO
11-13 11:57:42.281 20043-20043/com.agapito.listandoarchivos E/LogsAndroid﹕ FUERA

Nunca pasaa por DENTRO, por supuesto tengo varios archivos PDF.
¿Alguna idea ?
Responder Con Cita
  #9  
Viejo 13/11/14, 16:30:49
Avatar de LEAJIM_454
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
Mensajes: 215
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Versión de ROM: 2.3.6 Stock
Tu operador: Otra
Mencionado: 1 comentarios
Tagged: 0 hilos
Lo mas recomedable es quE hagas lo que tE dijo mocelet puesto que para un usuario seria completamente molesto tener que buscar una foto con el nombre por que cuando la camara saca una foto no te dice exactamente "foto tomada en tal lugar" o algo asi y por eso seria un problema
Responder Con Cita
  #10  
Viejo 13/11/14, 17:14:04
Avatar de MortadeloComic
MortadeloComic MortadeloComic no está en línea
Usuario novato en la web
Mensajes: 15
 
Fecha de registro: sep 2014
Mensajes: 15
Modelo de smartphone: Galaxy S5
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Después de buscar un rato por internet he encontrado la solución, la doy por si alguien más esta atascado con esto mismo, me faltaban los permisos en el archivo AndroidManifest.xml, hay que añadir la linea:

Código:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
yo la he puesto justo después de la etiqueta </application>, y ahora me funciona.

Última edición por MortadeloComic Día 13/11/14 a las 17:16:19
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 08:10:29 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007