Envio de fluxo de imagem sobre o problema do soquete - Android
Eu implementei um aplicativo que tira uma foto com a câmera do SP e a envia por um soquete para o servidor.
Estou usando o código a seguir para ler o arquivo de imagem armazenado localmente e enviá-lo em partes sucessivas no soquete:
FileInputStream fileInputStream = new FileInputStream( "my_image_file_path" );
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[16384];
try {
while( (nRead = fileInputStream.read(data, 0, data.length)) != -1 ){
buffer.write(data, 0, nRead);
networkOutputStream.write( buffer.toByteArray() );
buffer.flush();
}
} catch( IOException e ){
e.printStackTrace();
}
A questão que estou enfrentando é quealterando o tamanho da matriz de bytesdata[]
afeta o quanto da imagem é realmente enviada para o servidor.
As imagens postadas abaixo devem ajudá-lo a entender:
byte[] data = new byte[16384];
byte[] data = new byte[32768];
byte[] data = new byte[65536];
E assim por diante.
Como você pode imaginar, posso encontrar um tamanho que me permita enviar a imagem completa, mas essa solução ad hoc não é aceitável, já que imagens de qualquer dimensão podem precisar ser enviadas.
Na minha opinião, parece haver um problema na maneira como estou lendo o arquivo de imagem de uma maneira protegida, você pode me ajudar?
Desde já, obrigado!