Android蓝牙接收器意外beheavior

Android蓝牙接收器意外beheavior,android,bluetooth,camera,Android,Bluetooth,Camera,我想通过蓝牙传输相机帧。我设法使每个帧不超过4KB。问题是当我有一个outter whiletrue循环时,我接收到了日志,但屏幕上什么也没有显示,程序延迟。如果我移除了外部的whiletrue,我将成功接收并显示第一帧。但我想不断地接受 在发送方,我点击一些按钮发送帧。我也试着连续发送,但也没有成功 照相机接收器线程: public void run() { ByteArrayOutputStream dataOutputStream = new ByteArrayOutputStre

我想通过蓝牙传输相机帧。我设法使每个帧不超过4KB。问题是当我有一个outter whiletrue循环时,我接收到了日志,但屏幕上什么也没有显示,程序延迟。如果我移除了外部的whiletrue,我将成功接收并显示第一帧。但我想不断地接受

在发送方,我点击一些按钮发送帧。我也试着连续发送,但也没有成功

照相机接收器线程:

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中的语句?哪里为什么我要使用另一个中断,我希望它继续循环并接收数据