通常の Characteristic Read では、MTU サイズ (20 バイト) のデータのみが読み取られます。私の顧客は、より大きなサイズ (約 100 バイト) の特性を提供します。
BLE には、特性のサイズに達するまで読み取る「ロング リード」機能があることがわかりました。( https://bluegiga.zendesk.com/entries/25053373--REFERENCE-BLE-master-slave-GATT-client-server-and-data-RX-TX-basics )
attclient_read_long コマンド - クライアントが最初に通常の読み取り要求をサーバーに送信する手順を開始し、サーバーが BLE MTU (22 バイト) と等しい長さの属性値を返した場合、クライアントは引き続き「長い読み取り」要求を送信します。残りの属性が読み取られるまで。これは、22 バイトを超える属性を読み取る場合にのみ適用されます。簡単にするために、長い属性がないように GATT サーバーを構築する方が簡単な場合がよくあります。BLE プロトコルでは、データを max. 22 バイトのチャンクなので、「read long」を使用しても送信時間は節約されません。
しかし、Android でこの機能を使用するにはどうすればよいでしょうか? BluetoothGatt クラスは単純な「Read()」のみを提供します - iOS と同じです。
AP レベルが 21 未満のデバイスをサポートする必要があるため、MTU を増やすことはできません (increaseMTU は API 21 で導入されました)。