No se puede obtener progreso en la carga de archivos POST http (Android)

Estoy desarrollando una aplicación de Android que permite al usuario subir un archivo a servicios como Twitpic y otros. La carga POST se realiza sin bibliotecas externas y funciona bien. Mi único problema es que no puedo obtener ningún progreso porque toda la carga se realiza cuandorecibir la respuesta, no mientrasescritura los bytes en el flujo de salida. Esto es lo que hago:

URL url = new URL(urlString); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.setDoInput(true); 
conn.setDoOutput(true); 
conn.setUseCaches(false); 
conn.setRequestMethod("POST"); 
conn.setRequestProperty("Connection", "Keep-Alive"); 
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); 
DataOutputStream dos = new DataOutputStream(conn.getOutputStream());

Luego escribo los datos del formulario a dos, que no es tan importante aquí, ahora. Después de eso, escribo los datos del archivo en sí (leyendo desde "in", que es el InputStream de los datos que quiero enviar):

while ((bytesAvailable = in.available()) > 0)
{ 
 bufferSize = Math.min(bytesAvailable, maxBufferSize);
 byte[] buffer = new byte[bufferSize];
 bytesRead = in.read(buffer, 0, bufferSize);
 dos.write(buffer, 0, bytesRead);
} 

Después de eso, envío los datos del formulario multiparte para indicar el final del archivo. Entonces, cierro las corrientes:

in.close(); 
dos.flush(); 
dos.close(); 

Todo esto funciona perfectamente bien, no hay problema hasta ahora. Sin embargo, mi problema es que todo el proceso hasta este punto dura aproximadamente uno o dos segundos, sin importar qué tan grande sea el archivo. La carga en sí parece suceder cuando leo la respuesta:

DataInputStream inStream = new DataInputStream(conn.getInputStream());

Esto lleva varios segundos o minutos, según el tamaño del archivo y la velocidad de la conexión a Internet. Mis preguntas ahora son: 1) ¿Por qué no ocurre la carga cuando escribo los bytes en "dos"? 2) ¿Cómo puedo obtener un progreso para mostrar un diálogo de progreso durante la carga cuando todo sucede a la vez?

/ EDITAR: 1) Establezco la longitud del contenido en el encabezado que cambia un poco el problema, pero no lo resuelve de ninguna manera: ahora todo el contenido se carga después de que se escribe el último byte en la secuencia. Por lo tanto, esto no cambia la situación en la que no puede tomar el progreso, porque nuevamente, los datos se escriben de una vez. 2) Probé MultipartEntity en Apache HttpClient v4. Allí no tiene un OutputStream en absoluto, porque todos los datos se escriben cuando realiza la solicitud. Entonces, de nuevo, no hay forma de lograr un progreso.

¿Hay alguien por ahí que tenga alguna otra idea de cómo tomar un proceso en una carga multiparte / formulario?

Respuestas a la pregunta(4)

Su respuesta a la pregunta