自 2.16.2 起关闭位置后,Altbeacon 无法在三星 S8 上找到信标

Altbeacon can't find beacons on Samsung S8 when location is turned off since 2.16.2

我正在构建一个 Android 应用程序,它使用 android-beacon-library 每秒扫描两种类型的信标:

我从 2.10 版本开始使用这个库,一切正常。

但是,当我尝试在我的 Samsung S8(在 Android 9 上为 运行)上实施 2.16.2、2.16.3 和 2.16.4 版本时,我无法当我关闭位置时扫描我的信标。我在 2.16.1 版本中没有这个问题。

我也试过 reference app 来检查我是否做错了什么,但我与参考应用程序有同样的错误。

我可以指定我只有三星有这个问题。

谢谢。

Android 的最新版本需要应用程序的多级位置授权才能检测信标(粗体项 显示添加的要求):

SDK 29+ (Android 10.0+)

  • 必须在设置中打开蓝牙
  • 必须在设置中打开位置
  • 应用程序必须在清单中具有 FINE_LOCATION 权限(COARSE_LOCATION 不再足够)
  • 应用程序必须 ACCESS_BACKGROUND_LOCATION 在清单中,以便在应用程序不在前台且屏幕打开时检测信标。
  • 应用程序必须动态获得用户FINE_LOCATION权限
  • 应用程序必须在清单中具有 BLUETOOTH 和 BLUETOOTH_ADMIN 权限

SDK 23-28 (Android 6.0-9.x)

  • 必须在设置中打开蓝牙
  • 必须在设置中打开位置
  • 应用程序必须在清单中具有 COARSE_LOCATION 权限或 FINE_LOCATION 权限
  • 应用程序必须在清单中具有 BLUETOOTH 和 BLUETOOTH_ADMIN 权限
  • 应用程序必须动态获得用户COARSE_LOCATION权限或FINE_LOCATION权限

SDK 18-22 (Android 4.3-Android 5.x)

  • 必须在设置中打开蓝牙
  • 应用程序必须在清单中具有 COARSE_LOCATION 权限或 FINE_LOCATION 权限
  • 应用程序必须在清单中具有 BLUETOOTH 和 BLUETOOTH_ADMIN 权限

上述限制与 Android 信标库没有任何关系——它们是任何低功耗蓝牙检测的操作系统要求。如果您发现某些设备在某些情况下不执行这些要求,那么这很可能是该特定平台上的一个实现漏洞。更通用的规则仍然适用。