BluetoothのRFCOMMを使用してAndroidアプリを作成しました。同じRFCOMMUUIDを介して1MBのデータをAndroidアプリに送信しています。
私のアプリで1つのL2CAPパケットデータが欠落していることに気づきました。詳細については、以下の情報を参照してください。
最大RFCOMMペイロードをサポートする私のAndroidモバイルBluetoothは990バイトであるため、リモートデバイスは990バイトのペイロードで各L2CAPパケットを送信しています。リモートデバイスから1Kのデータを送信するときは常に、それぞれ990バイトと34バイトの2つのL2CAPパケットに分割されています。
Androidアプリでデータを受信した後、各1Kデータを確認しました。そこで、1つのL2CAPパケット、つまりAndroidで990バイトがスキップされていることに気付きました。
アナライザーを使用して、リモートデバイスから送信されるすべてのデータを確認しました。1MBのデータを確実に送信しています。
しかし、私のAndroidアプリでのみ、受信できません。ここではBluetoothチャットのサンプルコードを使用したため、これは私のアプリでは問題ありません。
これを数回テストしましたが、テストを実行するたびに、失われた990バイトのデータが1MBのデータで同じインデックスになりません。
私はこれをAndroid2.2、2.3.3、2.3.6バージョンの3つの携帯電話でテストしました。各携帯電話は同じ問題を抱えています
しかし、RFCOMMソケットのInputStreamからもデータを受信している間、例外は発生しません。
誰かが私の問題に直面して解決した場合は、私を助けてください。