Przesyłanie strumienia obrazu przez problem z gniazdem - Android

Zaimplementowałem aplikację, która robi zdjęcie za pomocą aparatu SP i wysyła je przez gniazdo do serwera.

Używam następującego kodu do odczytu pliku obrazu przechowywanego lokalnie i wysyłania go w kolejnych porcjach przez gniazdo:

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

Problem, z którym się borykam, jest takizmiana rozmiaru tablicy bajtówdata[] wpływa na to, jaka część obrazu jest faktycznie wysyłana na serwer.

Obrazy zamieszczone poniżej powinny pomóc w zrozumieniu:

byte[] data = new byte[16384];

byte[] data = new byte[32768];

byte[] data = new byte[65536];

I tak dalej.

Jak można sobie wyobrazić, mogę znaleźć rozmiar, który pozwala mi wysłać pełny obraz, ale takie rozwiązanie ad hoc jest nie do przyjęcia, ponieważ konieczne może być wysłanie obrazów o dowolnym wymiarze.

Moim zdaniem wydaje się, że jest problem ze sposobem, w jaki czytam plik obrazu w buforowany sposób, możesz mi pomóc?

Z góry dziękuję!

questionAnswers(1)

yourAnswerToTheQuestion