gpt4 book ai didi

Android BLE onScanResult 永远不会在 Android 11 的后台调用。在 Android 10 上工作

转载 作者:行者123 更新时间:2023-12-04 23:42:27 25 4
gpt4 key购买 nike

我有一个应用程序 扫描 BLE 设备 .它是 在 Android 10 上完美运行 ,但是自从我将手机更新为 安卓 11 , onScanResult 只是永远不会被调用如果我把应用程序放到 背景,或者如果我锁定屏幕。
这很烦人。我还没有找到任何可能导致这种情况的合理想法。我在 Android 11 中没有发现任何表明这种行为变化的差异。如果您将应用程序定位到 api 级别 31,Android 12 将具有新的 BT 权限,但我的目标是 api 级别 30,我确实在 Android 11 上运行我的应用程序。
我完全一无所知。 我尝试了不同的扫描模式,也尝试了添加扫描过滤器,但没有任何改变。
我的扫描设置:

ScanSettings ss = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_POWER).build();
List<ScanFilter> filterList = new ArrayList<>();
filterList.add(new ScanFilter.Builder().setManufacturerData(Constants.HARDWARE_MANUFACTURER_ID, new byte[]{}).build());
BluetoothUtil.getBluetoothLeScannerInstance().startScan(filterList, ss, leScanCallback);
到目前为止,我经历了以下几点: onScanResult当应用程序在前台并且设备的屏幕未锁定时完美调用。一旦我将应用程序推到后台或锁定屏幕,我就不再收到 onScanResult 的任何回调。
这是应用程序处于前台而不是锁定屏幕时的示例日志:
15:47:15 com.myapp.co I/BL_START: ...Starting BL scan. (Start of current window)
15:47:17 com.myapp.co I/SCANNED_: onScanResult ran!
15:47:21 com.myapp.co I/SCANNED_: onScanResult ran!
15:47:21 com.myapp.co I/SCANNED_: onScanResult ran!
15:47:22 com.myapp.co I/SCANNED_: onScanResult ran!
15:47:22 com.myapp.co I/BL_STOP: ...Finishing BL scan. (End of current window)
15:47:25 com.myapp.co I/BL_START: ...Starting BL scan. (Start of current window)
15:47:25 com.myapp.co I/SCANNED_: onScanResult ran!
15:47:26 com.myapp.co I/SCANNED_: onScanResult ran!
15:47:26 com.myapp.co I/SCANNED_: onScanResult ran!
15:47:29 com.myapp.co I/SCANNED_: onScanResult ran!
15:47:30 com.myapp.co I/SCANNED_: onScanResult ran!
15:47:30 com.myapp.co I/SCANNED_: onScanResult ran!
15:47:32 com.myapp.co I/BL_STOP: ...Finishing BL scan. (End of current window)
当应用程序处于后台和/或锁定屏幕时的示例日志:
15:48:25 com.myapp.co I/BL_START: ...Starting BL scan. (Start of current window)
15:48:32 com.myapp.co I/BL_STOP: ...Finishing BL scan. (End of current window)
15:48:35 com.myapp.co I/BL_START: ...Starting BL scan. (Start of current window)
15:48:42 com.myapp.co I/BL_STOP: ...Finishing BL scan. (End of current window)
15:48:45 com.myapp.co I/BL_START: ...Starting BL scan. (Start of current window)
15:48:52 com.myapp.co I/BL_STOP: ...Finishing BL scan. (End of current window)
15:48:55 com.myapp.co I/BL_START: ...Starting BL scan. (Start of current window)
15:49:02 com.myapp.co I/BL_STOP: ...Finishing BL scan. (End of current window)
15:49:05 com.myapp.co I/BL_START: ...Starting BL scan. (Start of current window)
15:49:12 com.myapp.co I/BL_STOP: ...Finishing BL scan. (End of current window)
15:49:15 com.myapp.co I/BL_START: ...Starting BL scan. (Start of current window)
15:49:22 com.myapp.co I/BL_STOP: ...Finishing BL scan. (End of current window)
15:49:25 com.myapp.co I/BL_START: ...Starting BL scan. (Start of current window)
15:49:32 com.myapp.co I/BL_STOP: ...Finishing BL scan. (End of current window)
15:49:35 com.myapp.co I/BL_START: ...Starting BL scan. (Start of current window)
15:49:42 com.myapp.co I/BL_STOP: ...Finishing BL scan. (End of current window)
如您所见 onScanResult当应用程序处于前台并且屏幕未锁定时,它应该被调用。
什么可能导致这种情况,我该如何防止这种功能?

最佳答案

显然,Android 11 中存在一个错误。如果您同时询问两个位置权限,它不会弹出权限对话框。你必须一一问他们。

关于Android BLE onScanResult 永远不会在 Android 11 的后台调用。在 Android 10 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70201704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com