BluetoothChatServiceから受信したバイトがBluetoothChatアクティビティに直接送信されるように、Android Bluetoothチャットコードを変更しました。サービスとアクティビティ間の高速通信
他のBluetoothデバイスの送信速度は125Khzで、各パケットは20バイトです。 1秒あたり約125 * 20バイトがサービスで受信され、アクティビティに送信される必要があります。
ただし、アクティビティで受信したデータにパケットロスがあることがわかりました。私は、サービスで受け取ったデータが実際に正しいことを確認しました。
これは、アクティビティに20バイトのオブジェクトを送信するコードの一部です。
mHandler.obtainMessage(BluetoothChat.MESSAGE_READ, 20, -1, buffer)
.sendToTarget();
これは、この問題を解決する方法BluetoothChatService
private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
...}
}
任意のアイデアからのメッセージを取り戻すハンドラがありますか?ありがとう。
はい、これは私の問題の根本原因だと思います。この問題を解決する最善の方法は何と思いますか?ありがとう! –
@AtleeYoung:バイトを別の 'byte []'にコピーしてから、アクティビティに渡します。 – CommonsWare
buffer2 = buffer.clone(); –