Não é possível obter progresso no upload de arquivo http POST (Android)

Estou desenvolvendo um aplicativo Android que permite ao usuário enviar um arquivo para serviços como o Twitpic e outros. O upload do POST é feito sem bibliotecas externas e funciona perfeitamente. Meu único problema é que não consigo obter nenhum progresso porque todo o carregamento é feito quandoreceber a resposta, não enquantoescrita os bytes no fluxo de saída. Aqui está o que eu faço:

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());

Depois, escrevo os dados do formulário no DOS, o que não é tão importante aqui, agora. Depois disso, escrevo os dados do arquivo (leitura de "in", que é o InputStream dos dados que desejo 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);
} 

Depois disso, envio os dados do formulário de várias partes para indicar o final do arquivo. Então, eu fecho os fluxos:

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

Tudo isso funciona perfeitamente bem, sem problemas até agora. Meu problema, no entanto, é que todo o processo até esse momento leva cerca de um ou dois segundos, independentemente do tamanho do arquivo. O upload em si parece acontecer quando li a resposta:

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

Isso leva alguns segundos ou minutos, dependendo do tamanho do arquivo e da rapidez da conexão com a Internet. Minhas perguntas agora são: 1) Por que o aplauso não acontece quando eu escrevo os bytes em "dos"? 2) Como posso obter um progresso para mostrar uma caixa de diálogo de progresso durante o upload, quando tudo acontece ao mesmo tempo?

/ EDIT: 1) Defino o comprimento do conteúdo no cabeçalho que altera um pouco o problema, mas não o resolve de forma alguma: agora todo o conteúdo é carregado após o último byte ser gravado no fluxo. Portanto, isso não muda a situação em que você não pode obter o progresso, porque, novamente, os dados são gravados de uma só vez. 2) Tentei o MultipartEntity no Apache HttpClient v4. Lá você não tem um OutputStream, porque todos os dados são gravados quando você executa a solicitação. Então, novamente, não há como obter um progresso.

Existe alguém por aí que tenha alguma outra idéia de como obter um processo em um upload de várias partes / formulário?

questionAnswers(4)

yourAnswerToTheQuestion