Stultum est timere quod vitare non potes.
Si vis pacem, para bellum.
Audaces fortuna iuvat.
MMM.. esto em parece mucho a la opcion que trae la personalizacion del PRS-505, para cuando montas la tarjeta externa, das la opcion de escaneo on/off.
Lo ideal seria que esa opcion ( Deshabilitar scaneo ) se pudiera hacer desde alguna opcion de menu,
como un flag ( bandera ) de encendido o apagado.
Creo que si tienes llegada con los desarrolladores, es posible asociar la opcion de deshabilitar con algun menu, o Icono que se ponga en la tercera pantalla. ( asi los usuarios no pondrian el codigo, seria como dicen ahora mas humanizada la alternativa de habilitar o deshabilitar el scaneo)
Saludos
Juan
Haaaa un detalle mas que no he leido, es que el scan de seguro debe actulizar los registros de la base de datos del Sony T1, hay es donde graba todos los autores, tags, etiquetas nombres titulos etc..., por cuanto de vez en cuando sera necesario actualizar o habilitar esta opcion.
Si hay alguno que cache de base de datos quizas pudiera implementar alguna aplicacion interesante como para sacar informes de nuestros libros desde la BD.
Saludos
Juan
Hola:
En mi T1 rooteado llevo 14.000 libros en la microSD (de 32 Gb), y voy a meterle otros 20.000 más. El truco es meterlos en una carpeta cuyo nombre empiece por un punto. En mi caso uso ".LIBROS". Para crear esa carpeta podéis hacerlo con Windows (sin el punto) y luego usar RootExplorer (desde el T1) para cambiarle el nombre, o bien usar en Windows el programa bratuito Lupas Rename 2000 para poner el punto en la carpeta.
Al poner el punto Linux (porque Android es una especie de Linux) oculta esa carpeta, lo que hace que el explorador de medios la ignore. También tengo las 14.000 miniportadas en otra carpeta llamada ".INDLIPAPA", y también son completamente ignoradas.
El inconveniente es que no sólo el explorador ignora la carpeta, sino que CoolReader tampoco la ve, ni puede trabajar con ella, por lo que hay que copiar el libro que se desea leer a una carpeta "normal" (sin punto) antes de poderlo abrir.
Si conocéis la página amiga quizás hayáis oído hablar de Lipapa, un catalogador que programé para organizar en el pc la información de esa web (o de los libros personales). La versión de lipapa para android no funciona en el T1, pero estoy preparando una que sí funcione, muy sencilla, que permitiría buscar en la base de datos con todas las fichas de los libros, y abrir el elegido de forma automática. Hasta el momento el punto conflictivo es dónde copiar, pues la carpetas que yo creo con Root Explorer luego no son accesibles desde mi programa, por no ejecutarse éste como Root. Se me ha ocurrido como posible solución copiar el libro de forma temporal a una carpeta dentro de la de trabajo de mi aplicación, que sí debería ser accesible, aunque otras opciones son tratar de elevar los permisos del programa para que se ejecute como root, averiguar cómo cambiar los permisos de la carpeta de trabajo, para que se pueda escribir en ella sin ser root, o simplemente indicar dónde está el libro y que el usuario lo copie y pegue a una carpeta sin punto como prefijo.
Sobre la utilidad de llevar toda la biblioteca encima, le doy la vuelta a la pregunta: ¿qué utilidad tiene no llevarla? Si la llevas contigo tienes acceso a todos los libros, para elegir cuál leer, para consultar alguno, o por el simple placer de llevar la Biblioteca de Alejandría contigo. Si no la llevas no tienes más que los libros que hayas cargado en el T1.
Por favor, si alguien sabe cómo elevar los permisos de la aplicación para que se ejecute como root, o cómo dar el permiso de escritura a una carpeta creada en la microSD (Root Explorer no me deja hacerlo) le estaría muy agradecido (y sospecho que no sólo yo).
Un saludo.
No te hace falta ningún programa especial...
Si creas la carpeta desde una ventana de msdos (con la orden 'md' de toda la vida) te deja crearla aunque empiece por punto
¡C*ñ*! Ya sabía yo que tu nick me sonaba de algo...
No había tenido oportunidad, así que ahora (aunque muy tarde) ¡gracias! Excelente curro...
¿Y por qué las creas con el root explorer?
¿No puedes crearlas desde la shell o, mejor aun, desde tu programa?
- Para tu programa podría servir: Runtime.getRuntime().exec("busybox mkdir NombreCarpeta");
- Desde la shell: run-as Nombre.Paquete.TuPrograma busybox mkdir NombreCarpeta
Si me lo cuentas mejor te ayudo...
Elevar a root
Explícanos un poco más el problema... pueden ser varias las causas
¿De que sirve que una biblioteca sea informatizada si luego se capa su funcionamiento o sus límites? La gracia está en que no haya límites.
Esta es la parte que no entiendo... yo si puedo escribir desde cualquier shell
¿como accedes a la shell? ¿o sólo has usado Root Explorer?
Stultum est timere quod vitare non potes.
Si vis pacem, para bellum.
Audaces fortuna iuvat.
Me has resuelto en un rato las dudas de todos los posibles "enfoques" que había pensado, por si el resto fallaban.
En Android estoy "pez" (como en linux); sé lo justo para sobrevivir, y lo poco que programo no lo hago en java, sino con Basic4Android, lo que aumenta espectacularmente la velocidad a la que se puede hacer alguna cosilla, pero también limita mucho lo que se puede hacer.
Muchísimas gracias por todas tus soluciones. Lo de que mi propio programa crease la carpeta ni me lo había planteado . Visto así, si él la crea, él podrá acceder. Sólo con eso ya tengo resuelto el 99% de los problemas. De todas formas me copio el mensaje entero y estaré unos días probando todas las posibilidades que me has indicado.
Un saludo, y gracias de nuevo.
No podriamos pedirle a Rupor que habilite un inhibidor de scan para los directorios que se marquen de alguna forma o bien que aumente la capacidad de manejo (cosa que quizas no sea posible por la potencia del micro).
Alguien que maneje el rusenglish y lo considere útil ¿podría hacerlo?
Tambien podemos pedirle al padre del CoolReader que habilite la lectura de carpetas ocultas o de una con un nombre especial /.books
El dejar en manos del usuario la organización de los libros es malo, pero está resuelto de una forma ingeniosa por Lipapa y si el aparato lector no puede catalogar e indexar por encima de un límite sería conveniente tener la opción de organizarlos en directorios sin que ello se cargue al lector.
Saludos y perdón por el rollo. Yo soy también de los que le gusta llevar la biblioteca a cuestas sin necesidad del portatil.
Sólo he usado Root Explorer. Al crear una carpeta no me permite poner permisos de escritura para todos los usuarios. Me responde algo así como que en las tarjetas SD no se permite el cambio en los permisos de escritura. Como es lógico, cuando desde mi aplicación trato de escribir el libro en esa carpeta (para que CoolReader lo "vea", porque en la carpeta oculta no lo ve), no tengo permisos de escritura. Por eso me sirve tanto el hecho de poder ejecutarla como root como el poder crear una carpeta con permiso de escritura para todos los usuarios. Y si se pudiera abrir el libro en la carpeta escondida, ya sería la "repera", pero supongo que eso es un problema de CoolReader y la forma en la que gestiona ese tipo de carpetas.
MAñana haré algunas pruebas, y en cuanto logre que lo básico funcione me pondré a tratar de hecer un minilipapa más sencillo que el de android, pero que permita buscar, filtrar y ver las fichas, a ser posible sin parpadeo (supongo que será cuestión de dibujar la pantalla mientras ésta está invisible, y luego hacerla visible, para que no parpadee con cada componente dibujado).
Un saludo.
Mira a ver si algo de esto te sirve:
Un ejemplo:
Código:try { File root = Environment.getExternalStorageDirectory(); if (root.canWrite()){ File gpxfile = new File(root, "gpxfile.gpx"); FileWriter gpxwriter = new FileWriter(gpxfile); BufferedWriter out = new BufferedWriter(gpxwriter); out.write("Hello world"); out.close(); } } catch (IOException e) { Log.e(TAG, "Could not write file " + e.getMessage()); }
La información del SDK de cómo debe accederse a la/las tarjetas:
AQUÍ
Ejemplos resueltos más completos:
AQUÍ y AQUÍ
Y otro ejemplo que dice funcionar:
AQUÍ
Eso si, todo en java...
Última edición por j0534ng31; 07/03/2012 a las 12:02
Stultum est timere quod vitare non potes.
Si vis pacem, para bellum.
Audaces fortuna iuvat.
Bueno, ya he logrado copiar de la carpeta escondida a la carpeta de trabajo, aunque no he sido capaz de darle permisos de escritura a todos los usuarios.
Lo que he hecho es (tras muchos cabezazos, pues no sabía que este android no tiene comando cp) usar un ingenioso sistema de B4A para crear "al vuelo" un shell y ejecutarlo como root. Para la copia uso cat (porque, como he comentado, "cp" no funciona):
Sub EjecutarRoot (comando AsString)
Dim Command, Runner AsString
Dim StdOut, StdErr AsStringBuilder
Dim Result AsInt
Dim Ph AsPhone
Runner = File.Combine(File.DirInternalCache, "runner")
Command = File.Combine(File.DirInternalCache, "command")
File.WriteString(File.DirInternalCache, "runner", "su < " & Command)
File.WriteString(File.DirInternalCache, "command", comando & CRLF & "exit") 'Any commands via crlf, and exit at end
StdOut.Initialize
StdErr.Initialize
Result = Ph.Shell("sh", ArrayAsString(Runner), StdOut, StdErr)
Msgbox(StdOut.tostring, "")
End Sub
Sub Test
' First command runs perfectly
EjecutarRoot("mkdir /mnt/extsd/MISLIBROS")
' Second command is ignored
EjecutarRoot("cat /mnt/extsd/kkk.fb2>/mnt/extsd/MISLIBROS/kkk.fb2")
End Sub
Ahora el problema que tengo es que al llamar al fichero "copiado" no me aparece CoolReader. Es extraño; la primera prueba que hice sí lo mostró en la lista. Luego hice más pruebas con llamadas a ficheros inexistentes, y es como si el T1 hubiese detectado que se produjo una llamada "improductiva" y, por lo tanto, elimina la app de la lista. Lo mismo me ha hecho con jota text editor
Voy a ver si hay alguna forma de borrar la lista de aplicaciones "fallidas" o "vinculadas". Me suena que leí algo por ahí de cómo hacerlo
Última edición por nachoap; 08/03/2012 a las 21:44