Escribí satisfactoriamente una aplicación, based on this blog post, pero más simple, que transmite una imagen a través de HTTP, utilizando una solicitud POST.Android: obteniendo el tamaño de archivo de la imagen antes de compartirla (Intent.ACTION_SEND)
Lo que no puedo entender (después de buscar en la web y rastrear dentro de los documentos SDK de Android) es, ¿cómo obtengo el tamaño de la imagen antes de compartirla?
Sólo hay una posibilidad de abrir un flujo de entrada que veo en el exampkle y en cualquier otro lugar:
ContentResolver cr = getContentResolver();
InputStream is = cr.openInputStream(uri);
El ejemplo de blog dada utiliza getBytesFromFile(is)
, por lo que se podría obtener el tamaño allí, pero esto es no una solución. Algunas imágenes son enormes, mientras que las aplicaciones de Android tienen un espacio limitado. Quiero que mi aplicación funcione para todos los tamaños imaginables de imágenes (no es un problema cuando se comparte a través de Wifi).
Por lo tanto, la única opción para mí es "reenviar" la secuencia de entrada a alguna secuencia de salida HTTP, lo que hago y funciona. Pero este enfoque no me da el tamaño de la imagen antes de enviarlo.
Gracias, lo intentaré. –
De acuerdo con http://developer.android.com/reference/java/io/InputStream.html: '" Devuelve una cantidad estimada de bytes que se pueden leer u omitir: sin bloquear para obtener más información. " Para que lo más probable es que no obtenga el tamaño del archivo. – mbonnin
Lo sé ... pero al momento de escribir durante mis pruebas siempre fue del tamaño del archivo. – flob