我写了一个简单的应用程序,能够写出特定的特性。我的应用程序基于谷歌示例 - https://github.com/googlesamples/android-BluetoothLeGatt。我添加了按钮,在连接时可以写入一个字节的特定特征。
现在我注意到连接几秒钟后(总是小于5)它工作正常,但函数writeCharacteristic(https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#writeCharacteristic(android.bluetooth.BluetoothGattCharacteristic))开始返回false。我调试了,结果发现设备很忙。我能够每1.5秒成功调用一次writeCharacteristic,相比之下,连接的前几秒没有延迟非常慢。
这是我的onClick功能片段:
public void onClick(View v) {
byte value[] = {0};
switch (v.getId()) {
case R.id.button1:
value[0] = 1;
mBulbCharacteristic.setValue(value);
mBluetoothLeService.writeCharacteristic(mBulbCharacteristic);
break;
case R.id.button2:
value[0] = 2;
mBulbCharacteristic.setValue(value);
mBluetoothLeService.writeCharacteristic(mBulbCharacteristic);
break;
case R.id.button3:
value[0] = 3;
mBulbCharacteristic.setValue(value);
mBluetoothLeService.writeCharacteristic(mBulbCharacteristic);
break;
default:
break;
}
}
答案 0 :(得分:1)
设备“忙”只表示响应处于待处理状态。 Android的API要求您在发出新请求后等待相应的回调(如onCharacteristicWrite for writes)。如果您认为花费太多时间可以降低连接间隔。