2 votos

¿Por qué el MTP muestra una ubicación incorrecta del directorio?

MTP ( Protocolo de Transferencia Miserable ) ha vuelto a fracasar.

Después de mover un directorio a una ruta diferente, sigue estando en la misma ruta que antes según MTP.

Ya he probado a volver a conectar el puerto USB y a leerlo desde otro ordenador. El mismo resultado.

¿Por qué el MTP es tan falso que muestra una carpeta movida en su ruta anterior?

5voto

Jack Wade Puntos 231

¿Qué es un proveedor de contenidos?

Parece ser un problema relacionado con los proveedores de medios. Como su nombre indica, proporcionan una base de datos de medios disponibles de forma más organizada a otras apps como la Contacts Storage ( com.Android.providers.contacts ) proporciona contactos a las aplicaciones solicitantes. El propósito es escanear y almacenar la información de los archivos multimedia para un acceso rápido, de modo que las aplicaciones individuales no tengan que escanear manualmente las carpetas para obtener una biblioteca actualizada, reduciendo así el tiempo y el esfuerzo.

Proveedores de medios integrados en Android:

Algunos exploradores de archivos, reproductores multimedia y aplicaciones de galería dependen de la base de datos de archivos ( /data/data/com.Android.providers.media/databases/external.db ) construido por Media Storage aplicación para MediaStore del contenido del almacenamiento externo ( /sdcard y la tarjeta SD externa; el almacenamiento extraíble como el USB no está indexado). Aplicaciones Media Storage ( com.Android.providers.media bajo el cual com.process.media corre), Downloads ( com.Android.providers.downloads.ui ), Download Manager ( com.Android.providers.downloads ) y MTP Host ( com.Android.mtp ) trabajan en colaboración bajo la misma UID.

La base de datos se construye/actualiza como MediaScanner ( Android.process.media ) es invocada por alguna aplicación, por ejemplo, mediante el envío de broadcast MEDIA_SCANNER_SCAN_FILE o a través de scanFile . Receptor de emisión com.android.providers.media.MediaScannerReceiver se lanza en el arranque que escucha Android.intent.action.BOOT_COMPLETED para que MediaScannerService también se inicie en el arranque. Pero al reiniciar el teléfono a veces no se actualiza toda la base de datos externa (o al menos se retrasa). MediaScanner también se lanza cuando se monta un nuevo dispositivo de almacenamiento, es decir, en MEDIA_MOUNTED que podría ser emitido manualmente para forzar la actualización en versiones anteriores a KitKat.
En respuesta, las aplicaciones son informadas de las bases de datos actualizadas, por ejemplo, mediante la recepción de emisiones MEDIA_SCANNER_FINISHED o a través de onScanCompleted .

Problema con los proveedores de medios de comunicación:

MtpService también forma parte de Media Storage. Debido a algunos errores ( reconocido desde 2012 ) en la implementación de MTP, la base de datos no se actualiza o se retrasa o no se comunica adecuadamente con el cliente a medida que los archivos cambian, por lo que MTP muestra contenidos obsoletos / incompletos. Lo mismo puede ocurrir si una aplicación que crea o descarga un nuevo archivo no activa el MediaScanner o no recibe la información actualizada.

Solución:

Para forzar la actualización de la base de datos, borre el archivo y ejecute escáner de medios app. Los usuarios que no son root pueden eliminar este archivo borrando los datos de Media Storage app.
Pero ten en cuenta, que también se despejará internal.db que hará que los tonos de llamada no estén disponibles y se construirá una nueva base de datos de /system/media en el siguiente reinicio, es decir, en BOOT_COMPLETED .

PS: Tenga en cuenta que la tarjeta SD interna que vemos es emulado de /data/media/ utilizando sdcardfs (o FUSE en versiones anteriores de Android). El contenido real de la memoria interna se puede ver directamente desde /data/media/ (Se requiere root). UMS utilizado para exponer el /data dispositivo de bloque a PC, pero fue desaprobado en favor de MTP. Es una buena opción cuando hay que transferir datos de gran tamaño a alta velocidad. Se puede activar mediante alguna solución .
También hay otras alternativas razonables para MTP como FTP, SFTP/SSHFS, adbfs etc.

RECURSOS:

2 votos

Su respuesta es correcta y completa. Sin embargo, si no conociera el tema, me resultaría difícil entender la razón, ya que su respuesta explica muchos detalles además de la fuente del problema.

2 votos

De acuerdo. Explico demasiado, sobre todo para mi propia referencia futura.

2 votos

Le agradezco mucho su detallada explicación.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X