我有一个能够通过蓝牙套接字发送位图的基本应用程序。他们唯一的问题是延迟非常大(每张图像大约20秒)。在应用程序中,客户端发送位图,服务器接收位图。客户端从TextureView获取位图并运行:
byte[] data = BitmapDataObject.bytesFromBitmap(bitmapToSend);
Logger.logE("CLIENT got byte array");
os.write(data.length);
Logger.logE("CLIENT wrote length of data");
os.flush();
Logger.logE("CLIENT flushed data");
in.nextLine();
Logger.logE("CLIENT read a line");
os.write(data,0,data.length);
Logger.logE("CLIENT wrote array to buffer");
os.flush();
BitmapDataObject.bytesFromBitmap(bitmapToSend)
看起来像
public static byte[] bytesFromBitmap(Bitmap map){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
map.compress(Bitmap.CompressFormat.PNG, 100, baos);
return baos.toByteArray();
}
服务器接收位图并通过Bitmap map = BitmapDataObject.bitmapFromStream(is);
解析它,看起来像
public static Bitmap bitmapFromStream(InputStream is){
Bitmap decoded = BitmapFactory.decodeStream(is);
return Bitmap.createScaledBitmap(decoded, 100, 100, true);
}
我正在寻找优化方法。服务器端位图的分辨率/质量对我来说并不重要(虽然我希望它至少为360p),如果需要,我愿意深入NDK。< / p>