アンドロイドデバイスとカスタムボードの間でBLEモジュールを使用してデータを交換しようとしています。そして、私は、Androidデバイスバージョン5.0以上でcharacteristicsWrite()メソッドを使用していくつかの問題を抱えています。恋人のバージョンではcharacteristicsWrite()メソッドの戻り値の真とは、BleGattCallbackで()コールバックonCharacteristicsWriteを呼び出しアンドロイドBLE writeCharacteristicsメソッドは、Android 5.0以降で常にfalseを返します
書き込み方法:
private void sendMessageToDevice(String message) {
byte nullByte = 0x00;
byte[] temp = message.getBytes();
byte[] tx = new byte[temp.length + 1];
tx[tx.length - 1] = nullByte;
System.arraycopy(temp, 0, tx, 0, temp.length);
characteristicWrite.setValue(tx);
boolean writeResult = mBluetoothGatt.writeCharacteristic(characteristicWrite);
Log.d(LOG_TAG, "writeResult"); //true
}
onCharacteristicsWrite方法:
@Override
public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
super.onCharacteristicWrite(gatt, characteristic, status);
Log.d(LOG_TAG, status); // status = 0 - GATT_SUCCESS
}
しかし、私は、Android上でこのコードを実行するときデバイスv writeCharacteristic()メソッドの結果は常にfalseであり、onCharacteristicWrite()コールバックは呼び出されません。
BLEデバイスとAndroid 5.0+の間の接続を正しく確立する方法を教えてもらえますか?たぶん私はこのタイプのデバイスのためのいくつかの特定のアプローチが必要です。 アプリケーションはSamsungとLenovoスマートフォンv5.0 +でテスト済みです。
'GATT'レイヤーを正しく接続してもよろしいですか? – Jeeter
アプリケーションは、アンドロイドデバイスのバージョンが5.0より低いので、レイヤーが正しく接続されていると思います。私は接続を作成するためにこのtutoriallを使用しています:[Android BLE](https://developer.android.com/guide/topics/connectivity/bluetooth-le.html) –