Android 10 不支持 BLE 蓝牙扫描

标签 android bluetooth-lowenergy

我正在研究 BLE 蓝牙扫描正在除 Android 10 之外的所有设备上工作。Android 10 无法正常工作,请任何人回答有关扫描 BLE 蓝牙的版本 10 问题的问题

最佳答案

要使 BLE 扫描适用于针对 Android 10 的 Android 应用程序,您需要询问用户

ACCESS_BACKGROUND_LOCATION



连同 ACCESS_FINE_LOCATION 并且不要忘记在 list 中添加权限:
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

以下是原因的解释:

Android 10(API 级别 29)引入了许多功能和行为更改,以更好地保护用户的隐私。这些变化扩大了用户对其数据的透明度和控制权,以及他们赋予应用程序的功能。

简而言之,您的问题:

Access to device location in the background requires permission



为了支持用户对应用程序访问位置信息的额外控制,Android 10 引入了 ACCESS_BACKGROUND_LOCATION允许。

不同于 ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATION权限,ACCESS_BACKGROUND_LOCATION 权限仅影响应用在后台运行时对位置的访问。除非满足以下条件之一,否则应用程序被视为在后台访问位置:

属于该应用程序的 Activity 是可见的。
该应用程序正在运行已声明前台服务类型位置的前台服务。

要为应用中的服务声明前台服务类型,请将应用的 targetSdkVersion 或 compileSdkVersion 设置为 29 或更高。详细了解前台服务如何继续用户发起的需要访问位置的操作。

希望这可以解决您的问题:)

关于Android 10 不支持 BLE 蓝牙扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58428763/

相关文章:

android - 获得非法状态异常

ios - 拔下电池后重新连接到 BLE 设备

linux - 使用 Gatttool(低功耗蓝牙)发送/接收数据

bluetooth-lowenergy - 蓝牙 4.0 扫描响应

c# - 使用 .Net Core 在 Raspberry Pi 上使用蓝牙 LE

android - 最简单的 Android Activity 生命周期

android - 通过 Intent 将 JSONObject 传递给另一个 Activity

java - libEGL 调用未实现的 OpenGL ES Api Android

android - RecyclerView - 项目的按下状态变得困惑

objective-c - 如何解决 Objective-C 中的 "NSInternalInconsistencyException"错误?