Android蓝牙接收器意外beheavior
我想通过蓝牙传输相机帧。我设法使每个帧不超过4KB。问题是当我有一个outter whiletrue循环时,我接收到了日志,但屏幕上什么也没有显示,程序延迟。如果我移除了外部的whiletrue,我将成功接收并显示第一帧。但我想不断地接受 在发送方,我点击一些按钮发送帧。我也试着连续发送,但也没有成功 照相机接收器线程:Android蓝牙接收器意外beheavior,android,bluetooth,camera,Android,Bluetooth,Camera,我想通过蓝牙传输相机帧。我设法使每个帧不超过4KB。问题是当我有一个outter whiletrue循环时,我接收到了日志,但屏幕上什么也没有显示,程序延迟。如果我移除了外部的whiletrue,我将成功接收并显示第一帧。但我想不断地接受 在发送方,我点击一些按钮发送帧。我也试着连续发送,但也没有成功 照相机接收器线程: public void run() { ByteArrayOutputStream dataOutputStream = new ByteArrayOutputStre
public void run() {
ByteArrayOutputStream dataOutputStream = new ByteArrayOutputStream();
byte[] Size = new byte[4];
boolean waitingForHeader = true;
ProgressData progressData = new ProgressData();
//while(true)
//{
while(true)
{
try{
if(waitingForHeader)
{
mmInStream.read(Size, 0, 4);
Log.d(TAG, "Received Size " + Utils.byteArrayToInt(Size) );
progressData.totalSize = Utils.byteArrayToInt(Size);
progressData.remainingSize = progressData.totalSize;
Log.d(TAG, "Data size: " + progressData.totalSize);
waitingForHeader = false;
} else {
// Read the data from the stream in chunks
byte[] buffer = new byte[4000];
Log.d(TAG, "Waiting for data. Expecting " + progressData.remainingSize + " more bytes.");
int bytesRead = mmInStream.read(buffer);
Log.d(TAG, "Read " + bytesRead + " bytes into buffer");
dataOutputStream.write(buffer, 0, bytesRead);
progressData.remainingSize -= bytesRead;
if (progressData.remainingSize <= 0) {
Log.d(TAG, "Expected data has been received.");
break;
}
}
}
catch(Exception E)
{
Log.v(TAG, E.getMessage());
break;
}
//}
if(mmSocket != null)
{
final byte[] data = dataOutputStream.toByteArray();
Log.d(TAG, String.valueOf(Utils.getDigest(data)));
mImage.setImageBitmap(BitmapFactory.decodeByteArray(data, 0, data.length));
Log.d(TAG, "DoneReceiving");
waitingForHeader = true;
}
else
{
Log.v(TAG, "Socket Closed");
break;
}
}
}
利用休息;while loop.o.o中的语句?哪里为什么我要使用另一个中断,我希望它继续循环并接收数据