尝试在Android O中实现定期蓝牙扫描。
代码每15分钟执行一次扫描,最终出现以下错误;
09-05 10:33:26.387 I:[INFO:gatt_api.cc(1004)] GATT_Register 09-05 10:33:26.387 E:[ERROR:gatt_api.cc(1032)]无法注册GATT客户端, 达到最大客户端数:32 09-05 10:33:26.387 E:向GATT堆栈注册 失败。
代码如下;
ScanSettings settings = (new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_OPPORTUNISTIC)).build();
BluetoothManager bluetoothManager =
(BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter();
Intent intent = new Intent(context, ScannerBroadcastReceiver.class);
intent.putExtra("o-scan", true);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
bluetoothAdapter.getBluetoothLeScanner().startScan(BleUtils.buildScanFilters(), settings, pendingIntent));
任何帮助将不胜感激。
答案 0 :(得分:0)
此症状通常表明蓝牙堆栈已进入不良状态,需要循环蓝牙(或电话)才能恢复。每当您看到此消息时,请先尝试关闭蓝牙,等待30秒,然后再打开以查看其是否恢复。
如果您发现Bluetooth关机后再开机对您有所帮助,则可以使用磁带库的Bluetooth medic类自动执行此恢复。
如果重新打开蓝牙电源或整个设备的电源确实可以解决问题,则可能没有其他解决方案。仍然值得在它出现时寻找模式,以便您至少知道问题的严重性。它似乎与检测到的多个信标相关吗?开机后需要多长时间显示?知道这些问题的答案至少可以让您知道您要处理的问题有多糟糕。