Skip to content

Instantly share code, notes, and snippets.

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
const subscription = this.bleManager.onStateChange((state) => {
if (state === State.PowerOn) {
// 已確認藍牙正常開啟
subscription.remove()
}
}, true)
bleManager.startDeviceScan(null, { scanMode: ScanMode.LowLatency }, (error, device) => {
if (error) {
console.log(error)
return
}
if (device.name !== "DeviceName") return
bleManager.stopDeviceScan()
// 在這裡對 device 進行操作...
try {
await device.connect()
} catch (error) {
console.log(error.reason)
}
try {
await bleManager.connectToDevice(UUID, { timeout: 2000 })
} catch (error) {
console.log(error.reason)
}
await device.writeCharacteristicWithResponse(
Service_UUID,
Characteristic_UUID,
Data
);
const byteArray = ("PASS").split("").map(char => char.charCodeAt(0))
await device.writeCharacteristicWithResponse(
Service_UUID,
Characteristic_UUID,
Buffer.from(byteArray).toString("base64")
);
const { value } = await bleManager.readCharacteristicForDevice(
Device_UUID,
Service_UUID,
Characteristic_UUID
);
console.log(atob(value))
const subscription = device.monitorCharacteristicForService(
Service_UUID,
Characteristic_UUID,
(error, characteristic) => {
if (error) {
console.log(error)
return;
}
console.log(characteristic.value)
}