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!

questionAnswers(1)

yourAnswerToTheQuestion