Subir archivo de gran tamaño (aproximadamente 2 MB) al servidor

Estoy desarrollando una aplicación móvil de Android que tiene la funcionalidad de subir archivos al servidor secuencialmente.

Quería escribir el código de comunicación del servidor cliente manteniendo un criterio en mente.

Dado que el tamaño del archivo que se cargará desde el dispositivo móvil será de alrededor de 2 MB, tenemos que enviar el archivo en varias partes (trozos de datos) en el servidor. Antes de enviar el archivo al servidor, necesito determinar la intensidad de la señal en tiempo de ejecución. Por ejemplo: En un entorno Wi-Fi, donde la intensidad de la señal será más, el número de trozos será menor y el tamaño del trozo será más en comparación con el uso de una conexión 2G / 3G (utilizando la tarjeta SIM) donde el número de trozos Será más y el tamaño del pedazo será menos.

Cualquier sugerencia / código de ejemplo para implementar el mismo me será útil. Además, ¿hay alguna API de Android o de terceros que pueda hacerse cargo del requisito.

Gracias por adelantado.

CB

Puede ver PhoneStateListener para determinar la intensidad de la señal. A continuación, sólo establece un chunkSize basado en él.

Tuve que escribir una aplicación donde estaba cargando / descargando archivos grandes (más de 10-20MB) con httppost. La descarga es fácil porque puedes usar el encabezado http "range". No pude encontrar una manera de hacer esto con la carga sin embargo.

El mejor método que podría pensar es abrir su archivo con RandomAccessFile , leer un fragmento de su archivo y escribirlo en un archivo temporal, y luego subir ese archivo temporal. Proceda a través de todo el archivo, creando un archivo temporal para cada trozo. Lleve un registro de qué chunkNum está en una preferencia. Si tiene éxito, establece chunkNum a 0.

Si la conexión falla en medio de la carga, la próxima vez que intente cargarla, compruebe primero la preferencia chunkNum para ver si es mayor que 0. El método seek () de RandomAccessFile para mover el puntero de archivo al fragmento apropiado y currículum.

Desafortunadamente, este método añade latencia en la creación de los archivos temporales, pero no podía pensar en una solución mejor.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.