我正在扫描具有特定服务 UUID 的设备、功能扫描、找到设备并连接。
我每 2 分钟连接一次设备,持续 20 秒。
一切正常。
一段时间后,手机不再连接到设备。
设备已找到但未命名。 我必须关闭蓝牙并手动打开它
然后它再次起作用。
当我以编程方式关闭并打开蓝牙时,它不起作用。
我猜是缓存问题? ...
private fun startScan() {
if (isScanning) return
log("Start scanning for ${searchedDevice?.uuid.toString()}...")
val builder: ScanFilter.Builder = ScanFilter.Builder()
searchedDevice?.let {
builder.setServiceUuid(ParcelUuid.fromString(it.uuid.toString()))
}
val filter: ScanFilter = builder.build()
val settings = ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.setReportDelay(200)
.build()
isScanning = true
bluetoothLeScanner.startScan(listOf(filter), settings, scanCallback)
}
onBacthScan:
override fun onBatchScanResults(results: MutableList<ScanResult>?) {
super.onBatchScanResults(results)
results?.firstOrNull()?.let {
connectToPeripheral(it.device, connectionCompletion)
}
}
}
连接:
override fun onConnectionStateChange(gatt: BluetoothGatt?, status: Int, newState: Int) {
super.onConnectionStateChange(gatt, status, newState)
我得到状态 133 是什么?
编辑: 错误 133 是:
case 0x0085:
return "GATT ERROR"; // Device not reachable
如何以编程方式解决此错误