我正在谷歌眼镜中开发一个客户端应用程序拍摄照片并通过蓝牙将字节数组发送到安装了服务器应用程序的Android手机。
将所有数据发送到手机后,我尝试从字节数组创建一个位图并将其显示在ImageView
中。在服务器中接收发送的确切字节数。当我解码字节数组以创建位图时,图像看起来已损坏。整体图像看起来正确,但图像上有矩形绿/蓝/红条。有时候很多,有时候只有几个。有时,图像的下半部分只是灰色。
这可能是什么问题?或者我可以尝试做些什么来找到问题。
写入输出流的客户端代码:
int bufferSize = 512;
ByteBuffer bb = ByteBuffer.allocate(bufferSize);
bb.asLongBuffer().put(bytes.length);
mmOutStream.write(bb.array(), 0, bufferSize); //write size of data to be sent first
mmOutStream.write(bytes); //write the actual byte data
用于从输入流读取的服务器代码(这是在无限循环中):
len = mmInStream.read(buffer);
if (len > 0) {
ByteBuffer bb = ByteBuffer.wrap(buffer);
bytesToDownload = (int) bb.getLong();
totalBytes = 0;
byteBuffer = ByteBuffer.allocate(bufferSize * bufferSize * 2);
while (totalBytes < bytesToDownload) {
len = mmInStream.read(buffer);
totalBytes += len;
byteBuffer.put(buffer);
outputStream.write(buffer, 0, len);
}
//display image
Bitmap bmp = BitmapFactory.decodeByteArray(byteBuffer.array(), 0, totalBytes);
imageView.setImageBitmap(bmp);
}
更新:当我将完成的图像字节数组保存到filoutputstream时,图像看起来很完美。它与BitmapFactory.decodeByteArray
有关吗?