Enviar un flujo de imágenes a través de un problema Socket - Android

He implementado una aplicación que toma una foto con la cámara SP y la envía a través de un socket al servidor.

Estoy usando el siguiente código para leer el archivo de imagen almacenado localmente y enviarlo en trozos sucesivos a través del socket:

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

El problema que estoy enfrentando es queCambiando el tamaño de la matriz de bytes.data[] afecta la cantidad de la imagen que se envía realmente al servidor.

Las imágenes publicadas a continuación te ayudarán a entender:

byte[] data = new byte[16384];

byte[] data = new byte[32768];

byte[] data = new byte[65536];

Y así.

Como puede imaginar, puedo encontrar un tamaño que me permita enviar la imagen completa, pero esa solución ad hoc no es aceptable, ya que podría ser necesario enviar imágenes de cualquier dimensión.

En mi opinión, parece que hay un problema en la forma en que estoy leyendo el archivo de imagen de forma amortiguada, ¿me pueden ayudar?

¡Gracias por adelantado!

Respuestas a la pregunta(1)

Su respuesta a la pregunta