Mi aplicación Android intenta leer los sectores físicos de la tarjeta SD accediendo al dispositivo real (en mi caso,/dev/block/vold/179: 1). (Esto está en un teléfono rooteado, por supuesto)lectura de bajo nivel Android de tarjeta SD mayor que 2 GB
Puedo abrir el dispositivo como FileInputStream
y leer datos del mismo. Sin embargo, parece que no puedo leer más allá de la marca de 2 GB (mi tarjeta de memoria es de 16 GB).
¿Esto se debe a que Android no admite archivos de más de 2 GB? Si ese es el caso, ¿por qué las funciones como position()
y skip()
aceptan long
argumentos?
¿Alguien tiene consejos sobre cómo leer desde el dispositivo más allá de 2GB?
Parece que este comportamiento solo ocurre en Android anterior a 3.0. Intenté ejecutar mi aplicación en una tableta (3.1), y efectivamente puede leer la tarjeta SD (y la memoria interna) más allá de 2GB ... –
Correcto, cualquier cosa anterior a honeycomb limita a 2GB porque las operaciones de E/S usan lseek en lugar de lseek64. Puede verificar el problema en http://code.google.com/p/android/issues/detail?id=21696. – Matt