通过蓝牙低能量连接从腕带心率传感器检索数据到Android应用程序

时间:2015-10-26 15:31:02

标签: java android c bluetooth-lowenergy

在蓝牙低能量连接之后,我需要从手镯设备的LogBlock特征中获取所有数据。

实际上我只通过logblock得到几个字节而不是所有数据。有谁知道如何同步和缓冲所有数据?

在方法调用connect()

之后的bluethoot服务下面
    @Override
    public void onCharacteristicRead(BluetoothGatt gatt,
                                    BluetoothGattCharacteristic characteristic,int status) {
         if (status == BluetoothGatt.GATT_SUCCESS) {
            Log.i("deviceBT","onCharacteristicRead "+characteristic.toString());
            broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
        }

    }
   private void broadcastUpdate(final String action,final BluetoothGattCharacteristic characteristic) {
    final Intent intent = new Intent(action);
    if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid())) {
        int flag = characteristic.getProperties();
        int format = -1;
        if ((flag & 0x01) != 0) {
            format = BluetoothGattCharacteristic.FORMAT_UINT16;
            Log.d(TAG, "Heart rate format UINT16.");
        } else {
            format = BluetoothGattCharacteristic.FORMAT_UINT8;
            Log.d(TAG, "Heart rate format UINT8.");
        }
        final int heartRate = characteristic.getIntValue(format, 1);
        Log.d(TAG, String.format("Received heart rate: %d", heartRate));
        intent.putExtra(EXTRA_DATA, String.valueOf(heartRate));

    }
    else if (UUID_LOGBLOCK.equals(characteristic.getUuid())) {

         byte[] value = characteristic.getValue();
        }

提前Tnx

更新

我没有从腕带设备获取任何数据,因为我有一个C程序向它发送了sand init命令。

任何人都知道如何发送bluethoot java连接的soket到C程序吗?

2 个答案:

答案 0 :(得分:0)

尝试获取原始字节数组(GetValue)而不是getIntValue

答案 1 :(得分:0)

问题与通知有关...当您按顺序读取特征时,必须在所有启用通知之前设置,然后进行第一次写入。如果您不尊重此订单,即使我们正确尊重代码并阅读有关个别特征的时间,也不会通知任何更改。