Android BluetoothGatt writeCharacteristic with response

时间:2015-05-12 20:32:46

标签: android ios bluetooth-lowenergy

从文档中我看到如何编写没有这样的响应:

BluetoothGattCharacteristic characteristic = ...
characteristic.setValue(bytes);
mBluetoothGatt.writeCharacteristic(characteristic);

如何使用响应执行写请求操作?

(在iOS中有选择写入类型CBCharacteristicWriteWithResponse和CBCharacteristicWriteWithoutResponse的选项)

3 个答案:

答案 0 :(得分:7)

  1. 你的特征应该是可写的。
  2. 检查特征是否可写:

    (characteristic.getProperties() & (BluetoothGattCharacteristic.PROPERTY_WRITE | BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE))) != 0
    
    1. BluetoothGatt.writeCharacteristic()返回boolean标志,指示写入是否成功(如果是,则为true)。
    2. BluetoothGatt.writeCharacteristic成功BluetoothGattCallback.onCharacteristicWrite()后,将使用您指定值的特征执行回调。

答案 1 :(得分:4)

来自文档:

  

public void setWriteType(int writeType)

     

在API级别18中添加设置此特性的写入类型

     

设置特征的写入类型决定了如何   writeCharacteristic(BluetoothGattCharacteristic)函数写这个   特性

     

参数writeType此特性的写入类型。可   以下之一:WRITE_TYPE_DEFAULT,WRITE_TYPE_NO_RESPONSE或   WRITE_TYPE_SIGNED。

答案 2 :(得分:1)

是的,我没有提到它。但请注意,应用不同的写入类型的工作条件是您写入值的特性必须是可写的,这是蓝牙设备特定的逻辑。首先找出您的特征是什么类型,因为它可能与您要求的类型相同。一旦满足可写条件,每个WRITE_TYPE都适合你。

通过分析BluetoothGatt的writeCharacteristic()方法,它清晰可见:

function wpufe_isbn_validation( $errors )
{
    global $wpdb;
    $check = $wpdb->query( $wpdb->prepare("
    SELECT *
    FROM wp-postmeta
    WHERE meta_key = cf_isbn AND meta_value = ".$_POST['cf_isbn']) );


    if(!empty($check))
    {
       return true;
    }
    else
    {
       return false;
    }
}
add_filter( 'wpuf_add_post_validation', 'wpufe_isbn_validation' );

我知道这是我的第二个答案,但它为我的第一篇文章提供了详细说明。我希望你能以某种方式帮助过你。