AndroidでBLEデバイスから通知を受け取る
AndroidでBLE(Bluetooth Low Energy)デバイスから通知を受け取る方法でハマったのでメモしておきます。
セントラルがペリフェラルから通知を受け取るには setCharacteristicNotification()
でセントラル側の通知受信を有効にするだけでなく、 writeDescriptor()
でペリフェラル側の通知送信を有効にする必要があります。
enum class BLE_UUID(uuidString: String) { BUTTON_SERVICE("0000ffe0-0000-1000-8000-00805f9b34fb"), BUTTON_STATE("0000ffe1-0000-1000-8000-00805f9b34fb"), CLIENT_CHARACTERISTIC_CONFIG("00002902-0000-1000-8000-00805f9b34fb"), ; val uuid = UUID.fromString(uuidString) } // セントラル側の通知受信を有効にする val characteristic = bluetoothGatt.getService(BUTTON_SERVICE.uuid).getCharacteristic(BUTTON_STATE.uuid) bluetoothGatt.setCharacteristicNotification(characteristic, true) // ペリフェラル側の通知送信を有効にする val descriptor = characteristic.getDescriptor(CLIENT_CHARACTERISTIC_CONFIG.uuid) descriptor.value = BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE bluetoothGatt.writeDescriptor(descriptor) // BluetoothGattCallback#onCharacteristicWrite()でBluetoothGatt.GATT_SUCCESSを受け取ったら成功です
上記のコードで指定しているUUIDはiTAGというBLEタグのものです。980円で買える安物ですが、アプリを自作して遊ぶにはもってこいですね。
白 ワイヤレス キーファインダー Bluetooth4.0 紛失防止 ワイヤレスリモート 盗難防止 キーホルダー 置き忘れ防止 落し物 KeyFinder◇ITAGシロ
- 出版社/メーカー: BlueOcean
- メディア:
- この商品を含むブログを見る