Я пытаюсь отобразить изображение, отправленное по локальной сети, на мое устройство Android. Изображение отправляется с компьютера через tcp на мое устройство Android. Изображение в формате png. Отправляемые данные представляют собой поток байтового массива png, который упакован в сообщение google protobuf. На стороне андроида при получении данных они считываются в массив байтов, после чего массив передается BitmapFactory.decodeByteArray()
. Однако это возвращает null примерно в 90% случаев. Это происходит только на реальном устройстве, но в данный момент я могу проверить только на HTC невероятном. Я пробовал это на эмуляторе Android SDK, и я могу получить свое изображение в 100% случаев.
Другие проблемы, связанные с BitmapFactory онлайн, всегда были связаны с использованием файловых потоков, когда декодирование не позволяет получить все данные, но мне еще предстоит найти какие-либо решения, когда разработчик уверен, что все данные получены, и это происходит только на реальном устройстве.
Есть ли какой-то тип использования, о котором я не знаю для decodeByteArray()
? byte[]
, который я передаю, — это просто сам файл.
Редактировать: Решено благодаря второму пониманию Брайана Кули.
Я просто слишком быстро решил, что ошибка может быть в decodeByteArray(). Если кто-то когда-нибудь столкнется с этой проблемой, убедитесь, что у вас есть данные в полном объеме. Я сделал ложное предположение, что мой поток байтов был хорошим. Итак, сначала сделайте быстрое сравнение данных, которые вы отправляете и получаете, и убедитесь, что вы получаете то, что должны.