Android - BLE模块在连接几秒后更长时间处于忙碌状态

时间:2017-09-22 11:52:17

标签: android bluetooth-lowenergy

我写了一个简单的应用程序,能够写出特定的特性。我的应用程序基于谷歌示例 - 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;
    }

}

1 个答案:

答案 0 :(得分:1)

设备“忙”只表示响应处于待处理状态。 Android的API要求您在发出新请求后等待相应的回调(如onCharacteristicWrite for writes)。如果您认为花费太多时间可以降低连接间隔。