使用蓝牙低功耗写入

时间:2013-11-27 09:41:33

标签: android bluetooth-lowenergy

我正在使用Android的Android应用程序中使用BLE。我想写一个我所连接的设备服务的特性。

我的功能是:

public void writeCharacteristic(BluetoothGattCharacteristic characteristic,
                                          boolean enabled, String text) {
    if (mBluetoothAdapter == null || mBluetoothGatt == null) {
        Log.w(TAG, "BluetoothAdapter not initialized");
        return;
    }


    characteristic.setValue("7");

    boolean status = mBluetoothGatt.writeCharacteristic(characteristic);


}

我不知道为什么价值不是写在特征内。 我按照此链接中的步骤操作: write with BLE

有谁知道为什么我的代码不起作用?

非常感谢你。 此致

Pd积。为我的英语道歉。

2 个答案:

答案 0 :(得分:2)

也许您的characteristic接受byte[]值。尝试将characteristic参数转换为String,将byte[]值设置为字节数组。你的方法应该是这样的:

public void writeCharacteristic(BluetoothGattCharacteristic characteristic,
                                                            String text) {
    if (mBluetoothAdapter == null || mBluetoothGatt == null) {
        Log.w(TAG, "BluetoothAdapter not initialized");
        return;
    }
    byte[] data = hexStringToByteArray(text);

    characteristic.setValue(data);

    boolean status = mBluetoothGatt.writeCharacteristic(characteristic);
}

private byte[] hexStringToByteArray(String s) {
    int len = s.length();
    byte[] data = new byte[len / 2];
    for (int i = 0; i < len; i += 2) {
        data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character
                .digit(s.charAt(i + 1), 16));
    }
    return data;
}

另请注意,如果写入操作已启动status变量将返回true。因此,为了获得写操作结果状态,请使用onCharacteristicWrite的{​​{1}} callback并检查其中的状态。

答案 1 :(得分:1)

在尝试不同功能和表格的计算机上度过了整个上午后,我找到了解决方案,感谢工作中的朋友。 我们必须将文本转换为byte,然后将该字节放入字节数组并发送。固定的。

 byte pepe = (byte) Integer.parseInt(text);
 byte[] charLetra = new byte[1];

 charLetra[0] = pepe;

 LumChar.setValue(charLetra);
 boolean status = mBluetoothGatt.writeCharacteristic(LumChar);

无论如何,非常感谢你的帮助。

问候。