Android O蓝牙扫描限制已达到问题

时间:2018-09-03 00:41:56

标签: android beacon altbeacon

尝试在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));

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

此症状通常表明蓝牙堆栈已进入不良状态,需要循环蓝牙(或电话)才能恢复。每当您看到此消息时,请先尝试关闭蓝牙,等待30秒,然后再打开以查看其是否恢复。

如果您发现Bluetooth关机后再开机对您有所帮助,则可以使用磁带库的Bluetooth medic类自动执行此恢复。

如果重新打开蓝牙电源或整个设备的电源确实可以解决问题,则可能没有其他解决方案。仍然值得在它出现时寻找模式,以便您至少知道问题的严重性。它似乎与检测到的多个信标相关吗?开机后需要多长时间显示?知道这些问题的答案至少可以让您知道您要处理的问题有多糟糕。