Witam
Dlaczego pakiet danych wysyłanych przy użyciu bluetooth jest rozbity na kilka mniejszych pakietów?
Czy rozmiar pojedynczego pakietu jest stały, możliwy do odczytania?

Bluetooth_ReadWrite:

   public Bluetooth_ReadWrite(BluetoothSocket socket, Handler mHandler) {

        this.mHandler = mHandler;

        mmSocket = socket;

        InputStream tmpIn = null;
        OutputStream tmpOut = null;

        try {

            tmpIn = socket.getInputStream();
            tmpOut = socket.getOutputStream();

        } catch (IOException e) { }

        mmInStream = tmpIn;
        mmOutStream = tmpOut;

    }

    public void run() {

        byte[] buffer = new byte[1024 * 8];
        int bytes;

        while (true) {

            try {

                    bytes = mmInStream.read(buffer);

                    Message msg = mHandler.obtainMessage();

                    msg.what = 2;
                    msg.arg1 = bytes;
                    msg.obj = buffer;

                    mHandler.sendMessage(msg);

            } catch (IOException e) {

                break;

            }

        }

        try {

            mmInStream.close();
            mmOutStream.close();

        }catch (IOException e){ }

    }

    public void Write(byte[] bytes) {

        try {

            mmOutStream.write(bytes);

        } catch (IOException e) { }

    }

Main:

    private void BluetoothSender_01(){

        ByteBuffer BB = ByteBuffer.allocate((1 + MapCX * MapCY * MapX * MapY) * 4);
        BB.putInt(1);

        for (int TB_01 = 0; TB_01 < MapCX; ++TB_01){

            for (int TB_02 = 0; TB_02 < MapCY; ++TB_02){

                for (int TB_03 = 0; TB_03 < MapX; ++TB_03){

                    for (int TB_04 = 0; TB_04 < MapY; ++TB_04){

                        BB.putInt(MapW[TB_01][TB_02][TB_03][TB_04]);

                    }

                }

            }

        }

        byte[] Result = BB.array();

        Bluetooth_B.ReadWrite_Thread.Write(Result);

    }

    private void BluetoothReceived(byte[] Buffer, int BufferSize){

        Log.w("Buffer", Integer.toString(Buffer.length) + " | " + Integer.toString(BufferSize));

        ByteBuffer BB = ByteBuffer.wrap(Buffer, 0, BufferSize);

        int Type = BB.getInt();

        if (Type == 0) BluetoothReceived_00(BB, BufferSize);
        else if (Type == 1) BluetoothReceived_01(BB, BufferSize);
        else if (Type == 2) BluetoothReceived_02(BB, BufferSize);

        Log.e("ReceivedIndex", Integer.toString(Type));

    }
   private void BluetoothReceived_01(ByteBuffer BB, int BufferSize) {

        boolean BT = true;

        for (int TB_01 = 0; TB_01 < MapCX && BT; ++TB_01){

            for (int TB_02 = 0; TB_02 < MapCY && BT; ++TB_02){

                for (int TB_03 = 0; TB_03 < MapX && BT; ++TB_03){

                    for (int TB_04 = 0; TB_04 < MapY && BT; ++TB_04){

                        if (BB.position() + 4 <= BufferSize) {

                            MapW[TB_01][TB_02][TB_03][TB_04] = BB.getInt();

                        }else {

                            BT = false;

                            break;

                        }

                    }

                }

            }

        }

    }

logcat:

11-08 03:50:22.710  11169-11169/com.example.kamil.towerdefense_v3 W/Buffer﹕ 8192 | 990
11-08 03:50:22.712  11169-11169/com.example.kamil.towerdefense_v3 E/ReceivedIndex﹕ 1
11-08 03:50:22.723  11169-11169/com.example.kamil.towerdefense_v3 W/Buffer﹕ 8192 | 990
11-08 03:50:22.724  11169-11169/com.example.kamil.towerdefense_v3 E/ReceivedIndex﹕ 196608
11-08 03:50:22.725  11169-11169/com.example.kamil.towerdefense_v3 W/Buffer﹕ 8192 | 184
11-08 03:50:22.725  11169-11169/com.example.kamil.towerdefense_v3 E/ReceivedIndex﹕ 0