BLE在onLeScan上发送垃圾数​​据

时间:2018-05-07 07:07:43

标签: android bluetooth bluetooth-lowenergy

使用https://github.com/GitGarage/BLEMingleDroid

处理蓝牙通信

在接收数据时,我收到一些垃圾字符附加到我的真实消息,下面是我的发送和接收消息的代码

AdvertiseData

        byte[] data = message.getBytes();
        ParcelUuid pu = ParcelUuid.fromString("0000" + asHex(message.substring(0,2).getBytes()) + "-0000-1000-8000-00805F9B34FB");
        AdvertiseData.Builder builder = new AdvertiseData.Builder();
        builder.addServiceData(pu, data);
        builder.addServiceUuid(pu);

接收数据

@Override
    public void onLeScan(final BluetoothDevice newDevice, final int newRssi,
                         final byte[] newScanRecord) {
 String message = new String(newScanRecord);
        TextView textViewToChange = (TextView) findViewById(R.id.textView);
        String oldText = textViewToChange.getText().toString();
        String device = newDevice.getAddress();
        String rssi = "" + newRssi;

}

我不知道这个垃圾是什么原因附加到我的真实信息上,任何想法?

1 个答案:

答案 0 :(得分:1)

那不是垃圾数据。 scanRecord是一个字节数组,因此您无法将其转换为字符串。

void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) 

scanRecord通常包含字符串,如广告中的设备名称,但它还包含服务uuid​​s和其他需要解析的数据。您需要手动解析此数据。 scanRecord将有一个表示长度的字节,一个表示数据类型的字节,然后是数据。附加长度,类型,值字节可以跟随第一个。类型代码列在Generic Access Profile documentation