特定の特性に書き込むことができる簡単なアプリケーションを作成しました。私はgoogle example - https://github.com/googlesamples/android-BluetoothLeGattに私のアプリケーションを基づいています。私は、接続時に特定の特性にバイトを書き込む可能性を与えるボタンを追加しました。Android - BLEモジュールは接続数秒後にビジー状態です
今私が気づいたのは、数秒(常に5未満)の接続後、正常に動作しますが、関数writeCharacteristic(https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#writeCharacteristic(android.bluetooth.BluetoothGattCharacteristic))がfalseを返すようになります。私はデバッグし、デバイスがビジー状態であることが判明しました。私は正常に1.5秒ごとに接続の最初の数秒で遅延が非常に遅いと比較してwriteCharacteristicを呼び出すことができます。デバイスだけで応答が保留されていることを意味し、「ビジー」であることを
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 –