Ver la versión completa : ¿ Para qué sirve la tarjeta externa ? (pa ná, ahora mismo)
huanglao
04/03/2012, 16:29
Si ponemos una tarjeta de 16Gb y empezamos a poner libros en ella cuando tengamos unos 4000 (alrededor de 3Gb, un quinto de la tarjeta) el lector se vuelve totalmente inútil, no hay forma de manejarlo.
Pregunta:
¿Hay alguna forma de deshabilitar el escaneo automático?
¿Hay alguna forma de explorar directorios y cargar el libro que queramos?
¿Hay alguna forma de aumentar la capacidad del indexado de los libros sin que "pete" el lector?
¿Lo solucionará Sony de alguna manera o esperará a que se lo solucionen los rusos?
Tenemos un lector al que le podemos aumentar la capacidad de almacenamiento pero no utilizarla.
Que bien!!!
Al final la iniciativa de los gurús del foro (nachoap y j0534ng31) nos permite llevar nuestra biblioteca y acceder a ella de fábula. Estad atentos a Lipapa T1.
Gracias Sony podias quitarle la ranurita y bajarle 50Euros que estamos en crisis. O podias testar un producto antes de ponerlo a la venta.
Saludos a todos los que tengais el mismo problema y a los demás también.
Anoushka
04/03/2012, 16:51
Si ponemos una tarjeta de 16Gb y empezamos a poner libros en ella cuando tengamos unos 4000 (alrededor de 3Gb, un quinto de la tarjeta) el lector se vuelve totalmente inútil, no hay forma de manejarlo.
Pregunta:
¿Hay alguna forma de deshabilitar el escaneo automático?
¿Hay alguna forma de explorar directorios y cargar el libro que queramos?
¿Hay alguna forma de aumentar la capacidad del indexado de los libros sin que "pete" el lector?
¿Lo solucionará Sony de alguna manera o esperará a que se lo solucionen los rusos?
Tenemos un lector al que le podemos aumentar la capacidad de almacenamiento pero no utilizarla.
Que bien!!!
Gracias Sony podias quitarle la ranurita y bajarle 50Euros que estamos en crisis. O podias testar un producto antes de ponerlo a la venta.
Saludos a todos los que tengais el mismo problema y a los demás también.
Yo había vuelto a pensar en comprarme una. Hasta ahora, los libros los voy colocando directamente en el lector
¿si pruebas una tarjeta de menor capacidad? a lo mejor no te da problemas.
huanglao
04/03/2012, 17:08
El problema no es la capacidad de la tarjeta sino la cantidad de libros que el lector puede manejar. Es la manía del firmware de mirar cuantos libros hay, indexarlos y crear una imagen de la portada. Como apunta todo llega un momento en que revienta, aunque no tenía por qué. Mala concepción del software.
maximovich
04/03/2012, 18:15
Me tuve que comprar una targeta sd para poner la base de datos de la Wikydroid que pesa 1300Mb, por lo cual y respondiendo la pregunta del titulo del hilo, si, la tarjeta externa sirve y mucho. Sobre el indexado de tantisimos libros no sabría decir porque nunca he puesto mas de 100 y nunca note lentitud, cuando hablamos de bibliotecas de miles de libros quizás es hasta comprensible que se relente un poco, solución: no poner tantos libros y paciencia, a que Sony solucione esto enn actualizaciones futuras (improbable) o a que algún desarrollador independiente cree un rom propio.
Y si se particiona la tarjeta en varias unidades fat32, ¿Android te reconoce todas las particiones y te las muestra como unidades separadas, como otra exsd2 o algo así? ¿Alguien ha probado esto?
Yo los libros siempre los pongo en la tarjeta, y siempre leo desde la tarjeta. Bien/mal/no lo sé. A mi me vale así.
AParte tb. la música, aplicaciones, imágenes y ofcors el "Os Firmware" para recuperar partición desde sd.
Así que sí me vale la tarjeta.
Y ¿de verdad necesitas tener tantos libros en la tarjeta? ¿No te serviría tenerlos empaquetados los que menos uses en uno o varios archivos tar, que puedes abrir/crear/extraer con ayuda del RootExplorer?
Es una idea, por si te sirve.
En cuanto a parar la actualización de los libros, ni idea. Lo que si he visto es que invocando la aplicación MediaScanner (por ejemplo desde el ReLaunch) que viene con el Sony, te aparece un icono para "Scan!" -creo- los contenidos del T1. Supongo que para que no pueda escanear -si estuviera en lo cierto-, tendríamos que quitar esa aplicación. O haciéndolo bien, buscando cuando lo hace, para poder evitarlo.
Pero quizá todo esto no esté al alcance de todos, sino de Rupor, boroda, j0534ng31, amutin, morkl, u-boot, etc
Uff, lo que me recuerda al estribillo de Concierto para ellos de Barón.
Saludos.
Si hablamos de libros de lectura, sí, tienes razón. Si hablamos de audiolibros, que pesan bastante más, la cosa ya cambia y sí puede ser necesario hacer uso de la tarjeta para poder llevar una cierta cantidad de ellos.
Pues yo solo uso la tarjeta para música ...los libros desde calibre a dropbox 60 en el lector y aplicaciones. Tener la micro es para separar temas...
jbdelpino
05/03/2012, 21:12
Pues yo solo uso la tarjeta para música ...los libros desde calibre a dropbox 60 en el lector y aplicaciones. Tener la micro es para separar temas...
Uso la tarjeta externa de esta manera:
Con calibre lo tengo configurado para que cuando traspase al dispositivo me genere el orden siguiente:
A
autor con inicio en A1 ..... n
libros 1 autor A1
libros 2 autor A1
B
autores con inicio en B
...
Bueno esto la ventaja que tiene es que al reorganizar los indices es mas rapido, priemr nivel de A - Z, en el directorio raiz tendrias todo el abecedario,y luego por autores, para ubicar los autores mas facilmente por carpeta anda re bien. ( 3079 libros) y no se chupa.
saludos
juan
j0534ng31
05/03/2012, 23:51
En cuanto a parar la actualización de los libros, ni idea. Lo que si he visto es que invocando la aplicación MediaScanner (por ejemplo desde el ReLaunch) que viene con el Sony, te aparece un icono para "Scan!" -creo- los contenidos del T1. Supongo que para que no pueda escanear -si estuviera en lo cierto-, tendríamos que quitar esa aplicación. O haciéndolo bien, buscando cuando lo hace, para poder evitarlo.
Pero quizá todo esto no esté al alcance de todos, sino de Rupor, boroda, j0534ng31, amutin, morkl, u-boot, etc
Gracias por el voto de confianza =))
Mira, la verdad, yo lo de desinstalarla no lo veo...
Y, a lo de modificar la llamada a la aplicación MediaScanner, no llego...
Pero lo que sí sé es cómo deshabilitarla (para que el sistema no la use, aunque esté instalada):
- Deshabilitarla:
pm disable com.sony.drbd.ebook.mediascanner
- Habilitarla:
pm enable com.sony.drbd.ebook.mediascanner
Probad y decidme si os sirve de algo... ;)
Gracias por el voto de confianza =))
No entiendo. Si te parece mal sorry, pero de los que hablan en los foros sobresales por saber más que los demás, así que no entiendo el asombro ni las risas. Es.
Mira, la verdad, yo lo de desinstalarla no lo veo...
No, desinstalarla no es una opción. A mi parecer es la herramienta que se encarga de actualizar las bases de datos, y si te la cargas, bueno, que no es una posibilidad.
Pero lo que sí sé es cómo deshabilitarla (para que el sistema no la use, aunque esté instalada):
- Deshabilitarla:
pm disable com.sony.drbd.ebook.mediascanner
- Habilitarla:
pm enable com.sony.drbd.ebook.mediascanner
Deshabilitarla sería una opción interesante en algunos casos. Aunque yo todavía no sé en qué me puede servir saberlo, o mejor en qué puedo emplearlo.
Por gustar tb. me gusta el sistema de ordenación de los libros que sigue jbdelpino. No tengo tantos libros, y por eso no lo veo útil para mi. Y tampoco porque a mi el calibre no me va, pero no es mala opción.
j0534ng31
06/03/2012, 11:07
No entiendo. Si te parece mal sorry, pero de los que hablan en los foros sobresales por saber más que los demás, así que no entiendo el asombro ni las risas.
Tranquilo, que nada me ha parecido mal... ;)
Sólo me ha hecho gracia... Yo no creo entender tanto de esto como Boroda y el resto de los que has mencionado... Me ha caído simpático que me incluyeses en el paquete.
jbdelpino
06/03/2012, 11:18
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
No entiendo. Si te parece mal sorry, pero de los que hablan en los foros sobresales por saber más que los demás, así que no entiendo el asombro ni las risas. Es.
No, desinstalarla no es una opción. A mi parecer es la herramienta que se encarga de actualizar las bases de datos, y si te la cargas, bueno, que no es una posibilidad.
Deshabilitarla sería una opción interesante en algunos casos. Aunque yo todavía no sé en qué me puede servir saberlo, o mejor en qué puedo emplearlo.
Por gustar tb. me gusta el sistema de ordenación de los libros que sigue jbdelpino. No tengo tantos libros, y por eso no lo veo útil para mi. Y tampoco porque a mi el calibre no me va, pero no es mala opción.
jbdelpino
06/03/2012, 11:22
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.
j0534ng31
06/03/2012, 20:28
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.
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 ;)
Si conocéis la página amiga quizás hayáis oído hablar de Lipapa, un catalogador que programé...
¡C*ñ*! Ya sabía yo que tu nick me sonaba de algo... :p
No había tenido oportunidad, así que ahora (aunque muy tarde) ¡gracias! Excelente curro...
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.
¿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...
otras opciones son tratar de elevar los permisos del programa para que se ejecute como root
Elevar a root (http://www.stealthcopter.com/blog/2010/01/android-requesting-root-access-in-your-app/)
averiguar cómo cambiar los permisos de la carpeta de trabajo, para que se pueda escribir en ella sin ser root
Explícanos un poco más el problema... pueden ser varias las causas
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.
:-? ^:)^
¿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.
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).
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?
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... :p
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 (http://www.stealthcopter.com/blog/2010/01/android-requesting-root-access-in-your-app/)
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?
=D>=D>=D> 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.
huanglao
06/03/2012, 21:21
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.
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?
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.
j0534ng31
07/03/2012, 11:58
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.
Mira a ver si algo de esto te sirve:
Un ejemplo:
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Í (http://developer.android.com/guide/topics/data/data-storage.html)
Ejemplos resueltos más completos:
AQUÍ (http://stackoverflow.com/questions/3925813/permission-to-write-on-sd-card-android) y AQUÍ (http://eurodev.blogspot.com/2009/09/raw-audio-manipulation-in-android.html)
Y otro ejemplo que dice funcionar:
AQUÍ (http://stackoverflow.com/questions/3551821/android-write-to-sd-card-folder)
Eso si, todo en java...
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 [-o<
Bueno, pues os vuelvo a pedir ayuda. ¿Alguien sabe cómo vincular CoolReader a los Intent de tipo "text/*"?
Os dejo el código que tengo. Ya es capaz de copiar el libro de la carpeta oculta a la de trabajo (si no existe ya) y de realizar la llamada al libro copiado, pero en la lista de programas disponibles no aparece CoolReader por ninguna parte. Imagina que tiene que haber alguna forma de que se pueda asociar. De hecho, si pulso en un fb2 desde file expert, sí sale CoolReader en la lista, pero ni desde Root explorer ni desde la aplicación salen. LA llamada que realizo es la misma que en lipapa android, que funciona en todas las tabletas y teléfonos "decentes".
En fin, es el penúltimo paso que he de seguir para dar por factible un lipapa en el T1 (el último será la prueba de que con la poca memoria que le queda es capaz de trabajar con una bd de 30 megas, pero es un tema que ya llegará en su momento).
Gracias por adelantado
-----------------------------------------------------------------------------------------------------
'Activity module
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim btAbrir As Button
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Entrada")
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub PonerURL(sCadena As String) As String
Dim i As Long
Dim sAux As String
Dim StrOrg() As String
Dim StrDst() As String
StrOrg = Array As String("%", "!", "#", "$", "&", "'", "(", ")", "*", "+", ",", ":", ";", "=", "?", "@", "[", "]", " ", "<", ">", "\", "^", "`", "{", "|", "}" )
StrDst = Array As String("%25", "%21", "%23", "%24", "%26", "%27", "%28", "%29", "%2A", "%2B", "%2C", "%3A", "%3B", "%3D", "%3F", "%40", "%5B", "%5D", "%20", "%3C", "%3E", "/", "%5E", "%60", "%7B", "%7C", "%7D")
' StrOrg = Array As String("%", "!", "#", "$", "&", "'", "(", ")", "*", "+", ",", ":", ";", "=", "?", "@", "[", "]", " ", "<", ">", "\", "^", "`", "{", "|", "}", "€", "‚", "ƒ", "„", "…", "†", "‡", "ˆ", "‰", "Š", "‹", "Œ", "Ž", "‘", "’", "“", "”", "•", "–", "—", "˜ ", "™", "š", "›", "œ", "ž", "Ÿ", "¡", "¢", "£", "¥", "|", "§", "¨", "©", "ª", "«", "¬", "¯", "®", "¯", "°", "±", "²", "³", "´", "µ", "¶", "·", "¸", "¹", "º", "»", "¼", "½", "¾", "¿", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ")
' StrDst = Array As String("%25", "%21", "%23", "%24", "%26", "%27", "%28", "%29", "%2A", "%2B", "%2C", "%3A", "%3B", "%3D", "%3F", "%40", "%5B", "%5D", "%20", "%3C", "%3E", "/", "%5E", "%60", "%7B", "%7C", "%7D", "%80", "%82", "%83", "%84", "%85", "%86", "%87", "%88", "%89", "%8A", "%8B", "%8C", "%8E", "%91", "%92", "%93", "%94", "%95", "%96", "%97", "%98", "%99", "%9A", "%9B", "%9C", "%9E", "%9F", "%A1", "%A2", "%A3", "%A5", "%A6", "%A7", "%A8", "%A9", "%AA", "%AB", "%AC", "%AD", "%AE", "%AF", "%B0", "%B1", "%B2", "%B3", "%B4", "%B5", "%B6", "%B7", "%B8", "%B9", "%BA", "%BB", "%BC", "%BD", "%BE", "%BF", "%C0", "%C1", "%C2", "%C3", "%C4", "%C5", "%C6", "%C7", "%C8", "%C9", "%CA", "%CB", "%CC", "%CD", "%CE", "%CF", "%D0", "%D1", "%D2", "%D3", "%D4", "%D5", "%D6", "%D8", "%D9", "%DA", "%DB", "%DC", "%DD", "%DE", "%DF", "%E0", "%E1", "%E2", "%E3", "%E4", "%E5", "%E6", "%E7", "%E8", "%E9", "%EA", "%EB", "%EC", "%ED", "%EE", "%EF", "%F0", "%F1", "%F2", "%F3", "%F4", "%F5", "%F6", "%F7", "%F8", "%F9", "%FA", "%FB", "%FC", "%FD", "%FE", "%FF")
sAux = sCadena
For i = 0 To StrOrg.Length-1
sAux = sAux.Replace(StrOrg(i), StrDst(i))
Next
Return sAux
End Sub
Sub EjecutarRoot (comando As String)
Dim Command, Runner As String
Dim StdOut, StdErr As StringBuilder
Dim Result As Int
Dim Ph As Phone
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", Array As String(Runner), StdOut, StdErr)
Msgbox(StdOut.tostring, "")
End Sub
Sub AbrirLibro (RutaLibro As String)
Dim inAct As Intent
Dim RutaL, RutaE, Prefijo, Origen, Destino, sFichero, sOrg, sOrg2, sFicheroDst As String
Dim NumLetras, i, iPos As Long
Dim TR As TextReader
Prefijo = "file://" & "mnt/extsd/MISLIBROS/"
Origen = "/mnt/extsd/.LIBROS/"
Destino = "/mnt/extsd/MISLIBROS/"
' Número de letras a descartar (prefijo de lipapa)
NumLetras = 10
If NumLetras < RutaLibro.Length Then
' Descartamos las primeras
sFichero = RutaLibro.SubString(NumLetras)
iPos = RutaLibro.LastIndexOf("\")
sFicheroDst = RutaLibro.SubString2(iPos+1, RutaLibro.Length)
sOrg = Prefijo & PonerURL(sFicheroDst)
sOrg2 = sFichero.Replace("\", "/")
'Copiar si no existe
'EjecutarRoot("mkdir /mnt/extsd/MISLIBROS")
If Not(File.Exists(Destino, sFicheroDst)) Then
EjecutarRoot("cat '" & Origen & sOrg2 & "'>'" & Destino & sFicheroDst & "'")
End If
' Abrir el libro
Try
inAct.Initialize(inAct.ACTION_VIEW, sOrg)
inAct.SetType("text/*")
StartActivity(inAct)
Catch
ToastMessageShow("No puedo abrir el libro: " & sOrg, True)
End Try
Else
ToastMessageShow("El libro seleccionado no tiene la ruta asignada. Haz Copiar en ebook desde Lipapa para PC", True)
End If
End Sub
Sub btAbrir_Click
'El tipo de rutas que se encontrará en RUTAPAPYRE, en la bd de lipapa
AbrirLibro("C:\LIBROS\A\AS\ASI\Asimov, Isaac & Janet\Fronteras II [10349].FB2")
End Sub
j0534ng31
09/03/2012, 00:33
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):
Anda, quita eso y pon "busybox cp -p /mnt/extsd/kkk.fb2 /mnt/extsd/MISLIBROS/kkk.fb2" :p
Bueno, pues os vuelvo a pedir ayuda. ¿Alguien sabe cómo vincular CoolReader a los Intent de tipo "text/*"?
Lo siento, en eso estoy totalmente pez.
Por lo que he creído entender, la asociación de una extensión con una aplicación se hace en el AndroidManifest.xml de la propia aplicación. (Aunque no se si es de eso de lo que hablas, o de que tu aplicación abra determinada extensión con otra aplicación.)
Si es lo primero, he visto algo de información aquí (http://stackoverflow.com/questions/1733195/android-intent-filter-for-a-particular-file-extension)
Y si es lo último (aunque a mi se me parece mucho a tu código), quizás te sirva alguno de los ejemplos del AndExplorer de aquí (http://www.lysesoft.com/products/andexplorer/intent.html), o los dos últimos ejemplos de aquí (http://www.lysesoft.com/products/andexplorer/index.html)
Anda, quita eso y pon "busybox cp -p /mnt/extsd/kkk.fb2 /mnt/extsd/MISLIBROS/kkk.fb2" :p
Lo siento, en eso estoy totalmente pez.
Por lo que he creído entender, la asociación de una extensión con una aplicación se hace en el AndroidManifest.xml de la propia aplicación. (Aunque no se si es de eso de lo que hablas, o de que tu aplicación abra determinada extensión con otra aplicación.)
Si es lo primero, he visto algo de información aquí (http://stackoverflow.com/questions/1733195/android-intent-filter-for-a-particular-file-extension)
Y si es lo último (aunque a mi se me parece mucho a tu código), quizás te sirva alguno de los ejemplos del AndExplorer de aquí (http://www.lysesoft.com/products/andexplorer/intent.html), o los dos últimos ejemplos de aquí (http://www.lysesoft.com/products/andexplorer/index.html)
Gracias por la respuesta. Finalmente me han echado un cable en la web de Basic4Android. Al parecer, cuando preparas un Intent puedes indicar el paquete y la clase con la que ha de abrirse. Con una rutina de B4A puedes comprobar todos los nombres de paquetes instalados (CoolReader era el primero) y con un poco de imaginación (lo cierto es que "sonó la flauta") he añadido otro código que, al depurar, me ha mostrado la clase (.Coolreader). Ahora se salta la lista de apps directamente, y abre CoolReader con el libro en cuestión. Evidentemente, esa opción sólo interesa si es un fb2, y en la aplicación final habrá que preguntar si se quiere hacer eso, por si lo que se quiere es editar el fb2 con Jota, pero como aproximación, por si hay alguien interesado en este tema, os dejo el código operativo de la prueba. Insisto, funciona de maravilla, aunque le faltan las protecciones, el control de excepciones, etc.:
'Activity module
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim btOpen AsButton
End Sub
Sub Activity_Create(FirstTime AsBoolean)
Activity.LoadLayout("Entrada")
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed AsBoolean)
End Sub
Sub PonerURL(sCadena AsString) AsString
Dim i AsLong
Dim sAux AsString
Dim StrOrg() AsString
Dim StrDst() AsString
StrOrg = ArrayAsString("%", "!", "#", "$", "&", "'", "(", ")", "*", "+", ",", ":", ";", "=", "?", "@", "[", "]", "", "<", ">", "\", "^", "`", "{", "|", "}" )
StrDst = ArrayAsString("%25", "%21", "%23", "%24", "%26", "%27", "%28", "%29", "%2A", "%2B", "%2C", "%3A", "%3B", "%3D", "%3F", "%40", "%5B", "%5D", "%20", "%3C", "%3E", "/", "%5E", "%60", "%7B", "%7C", "%7D")
sAux = sCadena
For i = 0To StrOrg.Length-1
sAux = sAux.Replace(StrOrg(i), StrDst(i))
Next
Return sAux
End Sub
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 AbrirLibro (RutaLibro AsString)
Dim inAct AsIntent
Dim RutaL, RutaE, Prefijo, Origen, Destino, sFichero, sOrg, sOrg2, sFicheroDst AsString
Dim NumLetras, i, iPos AsLong
Dim TR AsTextReader
' Prefijo
Prefijo = "file://" & "mnt/extsd/MISLIBROS/"
Origen = "/mnt/extsd/.LIBROS/"
Destino = "/mnt/extsd/MISLIBROS/"
' Número de letras a descartar (prefijo de lipapa)
NumLetras = 10
If NumLetras < RutaLibro.Length Then
' Descartamos las primeras
sFichero = RutaLibro.SubString(NumLetras)
iPos = RutaLibro.LastIndexOf("\")
sFicheroDst = RutaLibro.SubString2(iPos+1, RutaLibro.Length)
sOrg = Prefijo & PonerURL(sFicheroDst)
sOrg2 = sFichero.Replace("\", "/")
'EjecutarRoot("mkdir /mnt/extsd/MISLIBROS")
IfNot(File.Exists(Destino, sFicheroDst)) Then
EjecutarRoot("cat '" & Origen & sOrg2 & "'>'" & Destino & sFicheroDst & "'")
EndIf
Try
inAct.Initialize(inAct.ACTION_VIEW, sOrg)
inAct.SetType("text/*")
inAct.SetComponent("org.coolreader/.CoolReader")
StartActivity(inAct)
Catch
ToastMessageShow("No puedo abrir el libro: " & sOrg, True)
EndTry
Else
ToastMessageShow("El libro seleccionado no tiene la ruta asignada. Haz Copiar en ebook desde Lipapa para PC", True)
EndIf
End Sub
Sub btOpen_Click
Dim pm AsPackageManager
Dim packages AsList
Dim sPaquete AsString
Dim in AsIntent
'Ver paquetes instalados
'in = pm.GetApplicationIntent("org.coolreader")
'packages = pm.GetInstalledPackages
'For i = 0 To packages.Size - 1
' sPaquete = packages.Get(i)
' Log(packages.Get(i))
'Next
'El tipo de rutas que se encontrará en RUTAPAPYRE, en la bd de lipapa
AbrirLibro("C:\LIBROS\A\AS\ASI\Asimov, Isaac & Janet\Fronteras II [10349].FB2")
End Sub
No es la victoria completa (falta la prueba de la bd con tan poca memoria) pero creo
que, como mínimo, se puede construir un buen catalogador teniendo los libros en la
carpeta oculta. La potencia de lo que se pueda hacer dependerá de la potencia del T1 y
de la memoria que consuma con sqlite. Pero lo más complicado ya funciona :-\"
Más tarde voy a probar el código para sustituir el "cat" =D>
j0534ng31
09/03/2012, 16:47
Y, ya que estás en ello, ¿tienes alguna posibilidad de asociar los .fb2.zip al coolreader?
Que yo sepa, aún no hay modo de invocarlos sin descomprimirlos (que funcionen directamente), pero no se por qué.
Y, ya que estás en ello, ¿tienes alguna posibilidad de asociar los .fb2.zip al coolreader?
Que yo sepa, aún no hay modo de invocarlos sin descomprimirlos (que funcionen directamente), pero no se por qué.
Pues voy a probar a ver qué pasa si el fichero de ejemplo es un zip... Ahora te cuento.
:D:D:D Pues lo abre perfectamente, y sin necesidad de que sea un .fb2.zip, sino como zip directo.
He hecho la prueba comprimiendo con 7z el libro "La vida difícil" (para que no hubiese "falsos positivos" por usar el mismo libro que en la prueba anterior). Ese libro no había sido usado nunca en estas pruebas. Luego he cambiado la función AbrirLibro de antes por ésta:
AbrirLibro("C:\LIBROS\M\MR\MRO\Mrozek, Slawomir\La vida difícil [14373].zip")
Sin ningún otro cambio, ¡y se ha abierto CoolReader y ha cargado ese libro!
Te veo dejando el java y pasándote a Basic4Android :-\"
Si quieres te pongo el apk y cómo configurar una prueba.
Un saludo
P.D.: este cambio me puede dar algo más de trabajo en Lipapa Marte, porque tendría que añadir un empaquetador (zip) de los libros, pero éstos pasarían a ocupar una tercera parte (o menos) de lo que ocupan ahora. E-)
Editado: lo he estado comprobando, y efectivamente, ha copiado en /mnt/extsd/MISLIBROS el fichero zip, y CoolReader lo ha abierto. No necesita descomprimirlo y al añadir el Intent el paquete y la clase, lo abre perfectamente
Os dejo una copia de mi mensaje en la web amiga:
Tras unas cuantas horas de pruebas, "darle al tarro" y más pruebas, he llegado a dos conclusiones:
1. No tengo ganas de reprogramar Lipapa Android para el T1 (es un coñazo http://papyrefb2.net/phpbb3/images/smilies/icon_silent.gif ).
2. Quiero poder acceder a mi biblioteca desde el T1.
¿Y cómo se "come" eso? Pues se me ha ocurrido una aplicación muy sencilla que permite abrir con CoolReader un libro simplemente escribiendo su número en el T1. Es decir, con el móvil android o desde alguno de los otros lipapas se localiza el número del libro a leer, se ejecuta el programita del T1, se escribe el numero, se pulsa un botón... y listo.
¿Utilidad? Para mí, que llevo siempre encima el móvil con lipapa android, es una maravilla, pues me evita estar copiando los libros de la carpeta oculta a la visible. ¿Para el resto de la humanidad? Pues para algunos sí, y para otros no. Quien lo vea útil que lo use, y quien no, pues que no lo use http://papyrefb2.net/phpbb3/images/smilies/icon_mrgreen.gif
Lo que he logrado hacer con el T1:
1. Lo he rooteado.
2. He logrado que funcione samba, con lo que ya no uso el cable para transferir o sacar ficheros. Es interesante porque con cada conexión por cable comieza un ciclo de carga, y si lo enchufáis y desenchufáis mucho la batería se irá a la porra antes de tiempo, y no es extraíble (directamente).
3. Tengo una partición ext3 de 600 megas en la microSD de 32 Gb, para poder instalar en ella las aplicaciones nuevas, y para mover las que no sean de sistema, así libero espacio.
Todo lo anterior se explica muy bien en la web amiga (lectoreselectronicos), y todo funciona perfectamente.
Los pasos previos para meter la biblioteca en el T1:
1. Crear una carpeta (por ejemplo, con Root Explorer) en /mnt/extsd llamada ".LIBROS" (en mayúsculas y con el punto delante). Al tener un punto delante el gestor de contenidos del Sony T1 no se pondrá a analizar qué hay dentro, lo que evita que se quede colgado al tratar de catalogar miles de libros.
2. Copiar en ella la estructura de libros tal y como la genera Lipapa al copiar en el papyre. Este programa no es configurable, y requiere que la copia en el papyre se haga sobre C:\LIBROS\. El programilla va a eliminar las primeras 10 letras de RUTAPAPYRE para generar la ruta del libro en la microSD. Así, un libro se Asimov se guardará en /mnn/extsd/.LIBROS/A/AS/ASI/Asimov, Isaac/
3. Crear la carpeta MISLIBROS (en mayúsculas).
4. Descargar el .apk e instalarlo.
5. Copiar la base de datos lipapa.sqlite (la genera Lipapa Marte) en /mnt/extsd/
La forma de trabajar es muy simple: se ejecuta el programa (Buscador Libros T1), se pone el número de libro y se pulsa en "Abrir con CoolReader". Si es un EPUB o se quiere editar con Jotas, se pulsa en "Abrir con App Genérica".
Lo que el programa hace es:
1. Busca el número en la bd lipapa.sqlite. A partir de él obtiene RUTAPAPYRE
2. De RUTAPAPYRE elimina las primeras 10 letras (C:\LIBROS\) y genera una ruta concatenando /mnt/extd/.LIBROS/ con el resto de RUTAPAPYRE
3. Obtiene el nombre del fichero (todo lo que está después de la última "/").
4. Crea una shell como superusuario en la que hace un "cat" del libro original en la carpeta MISLIBROS (porque CoolReader no puede leer libros en la carpeta oculta .LIBROS).
5. Se queda esperando a que se copie el libro un máximo de 5 segundos (en libros muy grandes es posible que la primera vez que lo busquéis no os lo abra, por tardar más de 5 segundos en copiarlo. En ese caso podéis volver a pulsar el botón de "Abrir").
5. Si se pulsó el primer botón, prepara un "Intent" indicando que se use el paquete org.coolreader y la clase Coolreader, lo que supone llamar directamente al CoolReader para que abra el libro. Si se pulsó el segundo botón, saca una lista de las aplicaciones capaces de abrir un fichero de tipo mime text/* (a mí no me sale CoolReader en esa lista).
Y ya está...
Algunas considerciones:
1. El programa permite abrir los fb2 comprimidos como zip http://papyrefb2.net/phpbb3/images/smilies/icon_mrgreen.gif http://papyrefb2.net/phpbb3/images/smilies/icon_mrgreen.gif http://papyrefb2.net/phpbb3/images/smilies/icon_mrgreen.gif . Pero Lipapa Marte todavía no los genera de forma automática al copiar en el libro electrónico (lo hará en breve). Cuando lo haga, podréis copiar los zip en lugar de los fb2, y ahorraréis la mitad del espacio de la SD. Al llamar directamente a CoolReader no hay problemas con que no reconozca la extensión zip para abrirlos.
2. Esta aplicación sólo usa los campos NUMERO y RUTPAPYRE de lipapa.sqlite, pero lipapa genera la BD lipapa.sqlite con todos los datos. Podéis usar una aplicación que gestione SQLIte (por ejemplo, SharpPlus SQLite Developer) para eliminar LOS CAMPOS sobrantes, y que sólo queden en la BD los campos NUMERO y RUTAPAPYRE. Luego compactáis la BD y vuestro T1 os lo agradecerá (pasa de 18Mb a 1Mb). En breve lo hará Lipapa, pero hasta el verano no creo que lo distribuya.
3. Los libros que vayáis abriendo se quedarán guardados en la carpeta original (.LIBROS) y en MISLIBROS. De vez en cuando podéis ir haciendo limpieza en MISLIBROS para que el gestor de contenidos del Sony no se sature.
El APK: http://www.4shared.com/android/wQdjhRTF/MiniLipapaMarteT1.html
Recordad que a veces falla y hay que volver a pulsar el botón "Abrir con CoolReader"
Y el código fuente completo (cortito, pero matón), en Basic4Android, por si alguien lo quiere retocar o usar de base para hacer un lipapa completo:
http://www.4shared.com/zip/1fBMI3uM/Mini_lipapa_marte_T1.html
huanglao
13/03/2012, 12:27
Quiero dar las gracias a nachoap por su trabajo y por ponerlo a disposición de todos nosotros. También agradezco las sugerencias vertidas por j0534ng34 respecto del nuevo Lipapa.
Os ruego encarecidamente a todos que os paseis por el hilo Lipapa T1 y animeis al autor.
Gracias, gracias, gracias.
He modificado la cabecera del mensaje original, espero que lo admitan.
Tras ver ésto:
Tras unas cuantas horas de pruebas, "darle al tarro" y más pruebas, he llegado a dos conclusiones:
1. No tengo ganas de reprogramar Lipapa Android para el T1 (es un coñazo http://papyrefb2.net/phpbb3/images/smilies/icon_silent.gif ).
2. Quiero poder acceder a mi biblioteca desde el T1.
No esperaba nuevas reformas al Lipapa para el T1. Por otro lado, tampoco uso el Lipapa de escritorio, pese a conocer el proyecto. Nunca me ha dado por 'instalarlo' y estructurar mi biblioteca conforme a éste programa.
Y pese a todo me parecía extraño que nadie comentara nada. Total que ayer entré en la página amiga para ver si sus comentarios pasaban tan desapercibidos como aquí, y vi que no era así, así que supuse que nachoap es un incondicional de la página amiga, y que la gente estaría allí animándole para que siguiera con el proyecto.
Cuál fue mi sorpresa hoy al ver que había creado un nuevo hilo con el tema. Me parece estupendo que siga con éste proyecto que tanto promete. Adelante nachoap. Me parece genial que tengas fuerzas para seguir pese a todo. Parece ser que la gente todavía no sabía del tema, éste hilo estaba un poco oculto para la gente.
Por otro lado tampoco entiendo que si ya habías desarrollado una aplicación para Android, no entiendo por qué no funciona. He intentado buscarla, pero cuando comprendía que la única forma era mediante el market, lo dejé pasar (porque el market y yo no nos llevamos bien, por decirlo de alguna forma). Pero entiendo que no funciona, sino no la tendrías que modificar.
Otra cosa que me parece muy curiosa, es la aplicación que usas para desarrollar y el código mismo. Cuando lo vi, dije, ¡pero si es Visual! Al menos por las declaraciones. Por eso me pareció interesante el código que nos dejaste. Claro que fui a ver el programa de desarrollo, el Basic4Android, y cuando vi que era de pago me desinflé. Porque yo de programación de muy poco a nada. Y menos si tengo que invertir a cero resultados.
Y pese a que no vaya a ser un usuario activo de ésta aplicación, me parece un estupendo proyecto para nuestros T1 modificados.
Como dice huanglao, hay que pasar por el hilo.
De todas formas, lo escrito pintaba poco allí. Aquí tampoco mucho, pero allí nada.
Saludos y gracias.
erpatochino
13/03/2012, 16:35
Muhas gracias nachoap por tu gran "curre".
La verdad es que no entiendo la mitad de las cosas que dices, pero da igual, te animo a que sigas
que seguro que muhca gente le da utilidad.
La verdad es que yo con tener 10 libros en el t1 voy en moto.
Pero claro, hay mucha gente que necesita tener bibliotecas en el t1.
Así que gracias.
Y si se particiona la tarjeta en varias unidades fat32, ¿Android te reconoce todas las particiones y te las muestra como unidades separadas, como otra exsd2 o algo así? ¿Alguien ha probado esto?
Yo los libros siempre los pongo en la tarjeta, y siempre leo desde la tarjeta. Bien/mal/no lo sé. A mi me vale así.
AParte tb. la música, aplicaciones, imágenes y ofcors el "Os Firmware" para recuperar partición desde sd.
Así que sí me vale la tarjeta.
Y ¿de verdad necesitas tener tantos libros en la tarjeta? ¿No te serviría tenerlos empaquetados los que menos uses en uno o varios archivos tar, que puedes abrir/crear/extraer con ayuda del RootExplorer?
Es una idea, por si te sirve.
En cuanto a parar la actualización de los libros, ni idea. Lo que si he visto es que invocando la aplicación MediaScanner (por ejemplo desde el ReLaunch) que viene con el Sony, te aparece un icono para "Scan!" -creo- los contenidos del T1. Supongo que para que no pueda escanear -si estuviera en lo cierto-, tendríamos que quitar esa aplicación. O haciéndolo bien, buscando cuando lo hace, para poder evitarlo.
Pero quizá todo esto no esté al alcance de todos, sino de Rupor, boroda, j0534ng31, amutin, morkl, u-boot, etc
Uff, lo que me recuerda al estribillo de Concierto para ellos de Barón.
Saludos.
¿A alguien le funciona el refresco "!Scan" de la aplicación MediaScanner?.
A mi, después de cargar un libro mediante FTP y arrancar esta aplicación, me aparece en la barra superior el mensaje "Cargando ...". Pero cuando vuelvo al Home de Sony no veo el libro que he cargado.
Tengo que apagar y encender el lector para que se dé cuenta de que tiene un nuevo libro.
Como ya dije "si estuviera en lo cierto", y sirviera para eso. A mi todo me hacía pensar que así fuera, porque tiene que servir para algo parecido, y me parecía lo más lógico. Pero como dice un amigo, "el supongo" es la madre del "no lo sé". Así que igual no funciona como yo hubiera creído.
Tras ver ésto:
No esperaba nuevas reformas al Lipapa para el T1. Por otro lado, tampoco uso el Lipapa de escritorio, pese a conocer el proyecto. Nunca me ha dado por 'instalarlo' y estructurar mi biblioteca conforme a éste programa.
Y pese a todo me parecía extraño que nadie comentara nada. Total que ayer entré en la página amiga para ver si sus comentarios pasaban tan desapercibidos como aquí, y vi que no era así, así que supuse que nachoap es un incondicional de la página amiga, y que la gente estaría allí animándole para que siguiera con el proyecto.
Cuál fue mi sorpresa hoy al ver que había creado un nuevo hilo con el tema. Me parece estupendo que siga con éste proyecto que tanto promete. Adelante nachoap. Me parece genial que tengas fuerzas para seguir pese a todo. Parece ser que la gente todavía no sabía del tema, éste hilo estaba un poco oculto para la gente.
Por otro lado tampoco entiendo que si ya habías desarrollado una aplicación para Android, no entiendo por qué no funciona. He intentado buscarla, pero cuando comprendía que la única forma era mediante el market, lo dejé pasar (porque el market y yo no nos llevamos bien, por decirlo de alguna forma). Pero entiendo que no funciona, sino no la tendrías que modificar.
Otra cosa que me parece muy curiosa, es la aplicación que usas para desarrollar y el código mismo. Cuando lo vi, dije, ¡pero si es Visual! Al menos por las declaraciones. Por eso me pareció interesante el código que nos dejaste. Claro que fui a ver el programa de desarrollo, el Basic4Android, y cuando vi que era de pago me desinflé. Porque yo de programación de muy poco a nada. Y menos si tengo que invertir a cero resultados.
Y pese a que no vaya a ser un usuario activo de ésta aplicación, me parece un estupendo proyecto para nuestros T1 modificados.
Como dice huanglao, hay que pasar por el hilo.
De todas formas, lo escrito pintaba poco allí. Aquí tampoco mucho, pero allí nada.
Saludos y gracias.
Hola:
En la web amiga fue vampy el primero en tratar de ejecutar lipapa android en el T1, y en darse cuenta de que no funcionaba. En cualquier caso, la adaptación habría sido imposible. Lipapa Android es más vistoso que Lipapa T1, pero es porque se basa en los scrollview, las listas deslizables, que son un martirio en el T1, por los refrescos de pantalla, parpadeos y baja sensibilidad para que se recorra justo la distancia que tú quieres.
El desarrollo de Lipapa T1 ha partido desde cero, y la filosofía de uso es muy diferente. Siguiendo los consejos de vampy (quien, a fin de cuentas, es el responsable de que me picara el gusanillo con la idea de un lipapa en un ebook), todo es lo más sencillo posible, todo se basa en una pulsación, sin scroll ni pasos de una pantalla a otra, con el fin de facilitar su uso y ahorrar refrescos (que consumen batería). La única interacción usando el teclado es para escribir el valor textual o numérico al filtrar (si quieres ver sólo los libros de Asimov, no queda más remedio que escribir "Asimov" >:)), pero hasta la configuración se hace de forma externa, para facilitarla.
El resultado es bastante curioso. De hecho me estoy planteando adaptarlo al android "normal", y hacerlo independiente de la resolución de pantalla, como Lipapa Android (ahora todo se dibuja con coordenadas absolutas). En muchos aspectos Lipapa T1 es más rápido y cómodo que Lipapa Android, aunque el scroll de Android es, a mi modo de ver (perdón por la falta de modestia) espectacular :-\"
Sobre Basic4Android, el coste de la licencia es muy pequeño (unos 30 euros, o 60 con dos años de actualizaciones y acceso al foro), y si te gusta el mundo android te aseguro que vale la pena. Desarrollas apps enteras en dos días, sin experiencia en android previa, y Erel (el genio que lo ha programado) te resuelve tus dudas casi al minuto de ponerlas. Además cuenta con muchos colaboradpres que desarrollan y mejoran las librerías a diario. Mira que yo soy de delphi desde hace casi 20 años (desde el delphi 1), y el basic me daba "yu-yu", pero B4A es un gustazo (una vez que entiendes la estructura "rara" que tiene una aplicación android, que no es nada intuitiva). Y, aunque esté mal que yo lo diga, por ahí hay esquinas oscuras con copias de B4A que te pueden servir para valorar la conveniencia o no de comprarlo (eso sí, tras instalar una de esas versiones, al comprar la "legal" vas a tener que dar ingeniosas explicaciones a Erel de por qué la nueva licencia legal no se instala, al estar "otra" cosa usurpándola. Pero, al menos conmigo, fue muy comprensivo :\'):\'):\'))
Saludos.
jbdelpino
16/03/2012, 13:03
Hola:
En la web amiga fue vampy el primero en tratar de ejecutar lipapa android en el T1, y en darse cuenta de que no funcionaba. En cualquier caso, la adaptación habría sido imposible. Lipapa Android es más vistoso que Lipapa T1, pero es porque se basa en los scrollview, las listas deslizables, que son un martirio en el T1, por los refrescos de pantalla, parpadeos y baja sensibilidad para que se recorra justo la distancia que tú quieres.
El desarrollo de Lipapa T1 ha partido desde cero, y la filosofía de uso es muy diferente. Siguiendo los consejos de vampy (quien, a fin de cuentas, es el responsable de que me picara el gusanillo con la idea de un lipapa en un ebook), todo es lo más sencillo posible, todo se basa en una pulsación, sin scroll ni pasos de una pantalla a otra, con el fin de facilitar su uso y ahorrar refrescos (que consumen batería). La única interacción usando el teclado es para escribir el valor textual o numérico al filtrar (si quieres ver sólo los libros de Asimov, no queda más remedio que escribir "Asimov" >:)), pero hasta la configuración se hace de forma externa, para facilitarla.
El resultado es bastante curioso. De hecho me estoy planteando adaptarlo al android "normal", y hacerlo independiente de la resolución de pantalla, como Lipapa Android (ahora todo se dibuja con coordenadas absolutas). En muchos aspectos Lipapa T1 es más rápido y cómodo que Lipapa Android, aunque el scroll de Android es, a mi modo de ver (perdón por la falta de modestia) espectacular :-\"
Sobre Basic4Android, el coste de la licencia es muy pequeño (unos 30 euros, o 60 con dos años de actualizaciones y acceso al foro), y si te gusta el mundo android te aseguro que vale la pena. Desarrollas apps enteras en dos días, sin experiencia en android previa, y Erel (el genio que lo ha programado) te resuelve tus dudas casi al minuto de ponerlas. Además cuenta con muchos colaboradpres que desarrollan y mejoran las librerías a diario. Mira que yo soy de delphi desde hace casi 20 años (desde el delphi 1), y el basic me daba "yu-yu", pero B4A es un gustazo (una vez que entiendes la estructura "rara" que tiene una aplicación android, que no es nada intuitiva). Y, aunque esté mal que yo lo diga, por ahí hay esquinas oscuras con copias de B4A que te pueden servir para valorar la conveniencia o no de comprarlo (eso sí, tras instalar una de esas versiones, al comprar la "legal" vas a tener que dar ingeniosas explicaciones a Erel de por qué la nueva licencia legal no se instala, al estar "otra" cosa usurpándola. Pero, al menos conmigo, fue muy comprensivo :\'):\'):\'))
Saludos.
Estimado, esa estructura rara de android es posible en algun momento la dieras a conocer en simples aplabras de manera de poder ir acercando ese mundo a los curiosos del foro.
Gracias
Juan
PD: sucede que en mi caso instale el sdk eclipse lal base android inclusive hecha andar un emulador pero aun no doi con la estructura de android >:P
Estimado, esa estructura rara de android es posible en algun momento la dieras a conocer en simples aplabras de manera de poder ir acercando ese mundo a los curiosos del foro.
Gracias
Juan
PD: sucede que en mi caso instale el sdk eclipse lal base android inclusive hecha andar un emulador pero aun no doi con la estructura de android >:P
Es bastante liosa al principio (y al final). Cuando creas una aplicación creas una "actividad" (un Activity). En el manejador del evento Create de ese Activity es donde sueles crear tus componentes o activar el Layout. El Layout es una especie de interfaz gráfica escrita en xml que contiene los componente visuales que se mostrarán. Una actividad puede contener múltiples Layouts (son como las ventanes de windows, más o menos). A mí no me gustan los layouts, por lo que creo en tiempo de ejecución la interfaz al completo, componente a componente, y su estructura de dependencias (por ejemplo, qué etiqueta va dentro de qué panel, y qué panel va dentro de qué otro panel).
Hasta aquí la cosa no es muy rara, pero empieza a complicarse cuando comienza la ejecución de la aplicación: android puede cerrarte la aplicación en cualquier momento :-%, si opina que necesita memoria. Igualmente, si giras el dispositvo y la app permite las dos orientaciones (vertical y apaisada), android te cierra el activity y lo vuelve a abrir . Y lo mismo puede ocurrir (a veces sí, a veces no) si abres otra app mientras ejecutas la tuya. Así, en un activity de android tienes que memorizar su estado en todo momento, de modo que el propio manejador del evento Create ha de distinguir si es la primera ejecución del activity o si algo ha pasado y android lo ha relanzado, y rehacerlo todo. Es demencial. Lipapa Android lo tiene (casi) todo en cuenta, y permite girar, cambiar de tarea, etc. Lipapa T1 no. No he tenido en cuenta ninguna de esas situaciones. Por eso no se permite la orientación apaisada (aparte de que no sé si el T1 lleva acelerómetro para saber si se giró el cacharro; ten en cuenta que mi T1 tiene apenas dos semanas y ni me he leído lo que puede hacer, pues fui directo a meter la biblioteca y, cuando vi lo que pasaba, a tratar de crear un lipapa que funcionara en el cacharro), y si cambias mucho de tarea o te quedas sin memoria la app no va a recordar lo que estabas haciendo, y se reiniciará.
A la hora de grabar el estado, la actividad permite grabar ficheros en carpetas virtuales, que sólo ella podrá abrir. Con Basic4Android te ahorras java, pero la estructura sigue siendo la misma. Si quieres puedes bajarte la guía pdf de Basic4Android de su web. En ella explican paso a paso cómo trabaja android. Yo me compré un par de libros de android porque pretendía aprender java para programar en este entorno, y me descargué otro par de docenas de libros, pero es infumable. Si no te gusta el java (es mi caso), la tarea es doble: soportar ese lenguaje y soportar las... peculiaridades de android. Con B4A te lo ahorras casi todo. Para mí han sido 60 euros muy bien gastados, y las actualizaciones son gratuitas por dos años (como mínimo).
Saludos.
Hola:
En la web amiga fue vampy el primero en tratar de ejecutar lipapa android en el T1, ....
El desarrollo de Lipapa T1 ha partido desde cero, y la filosofía de uso es muy diferente.....
Sobre Basic4Android, ....
(una vez que entiendes la estructura "rara" que tiene una aplicación android, que no es nada intuitiva).
Y, aunque esté mal que yo lo diga, por ahí hay esquinas oscuras con copias de B4A que te pueden servir para valorar la conveniencia o no de comprarlo (eso sí, tras instalar una de esas versiones, al comprar la "legal" vas a tener que dar ingeniosas explicaciones a Erel de por qué la nueva licencia legal no se instala...
Pues a vampy, habrá que agradecerle que continuaras. =D>
Tb, entendido lo que variaba en Lipapa Android con respecto a Lipapa T1. OK.
Y lo que dices al final de "esquinas oscuras con copias de B4A", estuve pensándolo un buen rato qué demonios querías decir, sin entender nada, hasta que lo leí hace un rato y... :\') :p >:)
Ya anduve mirando esas "esquinas oscuras" que llegan a la versión 1.70. Me servirá para probar, pero quizá nada más. No me veo haciendo aplicaciones. Demasiado para mi. Lo máximo que hecho en mi vida es una calculadora y un visualizador de imágenes y menuda purrela eran.
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
En cuanto al mensaje anterior, hoy he visto uno pdf sobre android que me ha parecido interesante. No sólo porque fuera de Android sino porque estaba en castellano:
http://e-archivo.uc3m.es/bitstream/10016/6506/1/PFC_Jaime_Aranaz_Tudela_2010116132629.pdf
Y bueno tb. he visto otros útiles:
La DEV Guide en pdf (offline, claro, pero pdf texto con enlaces):
Android-The-Developers-Guide (en un sólo pdf) (http://www.4shared.com/office/qXsU49Nz/Android-The-Developers-Guide.html)
Android-sdk-dev-guide-in-pdf (en varios pdfs) (http://czechxan.com/index.php/android/20-android-sdk-dev-guide-in-pdf)
Panorama general y un curso en vídeos (en español)
http://www.htcmania.com/showthread.php?t=218891
Es bastante liosa al principio (y al final). Cuando creas una aplicación creas una "actividad" (un Activity). En el manejador del evento Create de ese Activity es donde sueles crear tus componentes o activar el Layout. El Layout es una especie de interfaz gráfica escrita en xml que contiene los componente visuales que se mostrarán. Una actividad puede contener múltiples Layouts (son como las ventanes de windows, más o menos). A mí no me gustan los layouts, por lo que creo en tiempo de ejecución la interfaz al completo, componente a componente, y su estructura de dependencias (por ejemplo, qué etiqueta va dentro de qué panel, y qué panel va dentro de qué otro panel).
Hasta aquí la cosa no es muy rara, pero empieza a complicarse cuando comienza la ejecución de la aplicación: android puede cerrarte la aplicación en cualquier momento :-%, si opina que necesita memoria. Igualmente, si giras el dispositvo y la app permite las dos orientaciones (vertical y apaisada), android te cierra el activity y lo vuelve a abrir . Y lo mismo puede ocurrir (a veces sí, a veces no) si abres otra app mientras ejecutas la tuya. Así, en un activity de android tienes que memorizar su estado en todo momento, de modo que el propio manejador del evento Create ha de distinguir si es la primera ejecución del activity o si algo ha pasado y android lo ha relanzado, y rehacerlo todo. Es demencial
Bienvenido al apasionante mundo de los objetos en java >:)
jbdelpino
17/03/2012, 00:32
Es bastante liosa al principio (y al final). Cuando creas una aplicación creas una "actividad" (un Activity). En el manejador del evento Create de ese Activity es donde sueles crear tus componentes o activar el Layout. El Layout es una especie de interfaz gráfica escrita en xml que contiene los componente visuales que se mostrarán. Una actividad puede contener múltiples Layouts (son como las ventanes de windows, más o menos). A mí no me gustan los layouts, por lo que creo en tiempo de ejecución la interfaz al completo, componente a componente, y su estructura de dependencias (por ejemplo, qué etiqueta va dentro de qué panel, y qué panel va dentro de qué otro panel).
...
A la hora de grabar el estado, la actividad permite grabar ficheros en carpetas virtuales, que sólo ella podrá abrir. Con Basic4Android te ahorras java, pero la estructura sigue siendo la misma. Si quieres puedes bajarte la guía pdf de Basic4Android de su web. En ella explican paso a paso cómo trabaja android. Yo me compré un par de libros de android porque pretendía aprender java para programar en este entorno, y me descargué otro par de docenas de libros, pero es infumable. Si no te gusta el java (es mi caso), la tarea es doble: soportar ese lenguaje y soportar las... peculiaridades de android. Con B4A te lo ahorras casi todo. Para mí han sido 60 euros muy bien gastados, y las actualizaciones son gratuitas por dos años (como mínimo).
Saludos.
Estimado es la primera descripcion clara de como funciona android... creo que de una u otra manera el camino que seguiste fue el adecuado acortaste mucho tiempo de aprendizaje al no tomar java...
gracias de nuevo
Juan.
Funcionando con vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.