BLE で一度に送信できるデータサイズの上限はデフォルトでは 20 byte ほどですが、拡張することができます。
その方法とその際の注意点をまとめました。
※ central が Android の場合の方法です。
拡張
BluetoothGatt.requestMtu(int mtu) というメソッドで拡張することができます。
上限は 512 byte です。
注意点
下記のように、拡張と write などのリクエストを続けて行ってしまうと、 peripheral が反応してくれません。
mBluetoothGatt.requestMtu(50);
mBluetoothGatt.writeCharacteristic(characteristic);
そのため、拡張のリクエストを送ったperipheral でパケットサイズの変更が終わるまで待つ必要があります。
peripheral での処理が終わると central の BluetoothGattCallback.onMtuChanged() が呼ばれます。
なので、 BluetoothGattCallback.onMtuChanged() が呼ばれるのを待って write などの処理を開始するとうまく動作させることができます。