首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >最新的信标库2.19.4没有检测到估计信标。

最新的信标库2.19.4没有检测到估计信标。
EN

Stack Overflow用户
提问于 2022-05-24 05:52:32
回答 1查看 156关注 0票数 1

我使用带verison("2.19.4")的Alt信标库来获取信标。做一些研发工作

代码语言:javascript
运行
复制
 m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24

上面的布局设置在灯塔解析器类上。我将这段代码放在灯塔解析器类中,并分配给信标管理器。

代码语言:javascript
运行
复制
 val beaconManager = BeaconManager.getInstanceForApplication(this)
        beaconManager.beaconParsers.clear()
        val parser = BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24")
        beaconManager.beaconParsers.add(parser)
        val region = Region("com.beacon", null, null, null)
        // Set up a Live Data observer so this Activity can get monitoring callbacks
        // observer will be called each time the monitored regionState changes (inside vs. outside region)
        beaconManager.getRegionViewModel(region).rangedBeacons.observe(this, rangingMonitorObserver)s
        beaconManager.startRangingBeacons(region)

 private val rangingMonitorObserver = Observer<Collection<Beacon>> { beacons ->
        Log.d("HomeFragment TAG", "Ranged: ${beacons.count()} beacons")
        for (beacon: Beacon in beacons) {
            Log.d("HomeFragment TAG", "$beacon about ${beacon.distance} meters away")
        }
    }

我执行这段代码,但没有得到信标。有人知道如何使用alt信标库获取估计信标吗?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2022-06-03 14:45:45

信标探测失败的原因很多。最常见的原因之一是,如果应用程序没有来自安卓的用于蓝牙扫描的适当权限。所需的特定权限取决于build.gradle文件中的targetSdkVersion设置:

代码语言:javascript
运行
复制
targetSdkVersion      Android Version     Permissions Needed
----------------      ---------------     ------------------
31                    12+                 BLUETOOTH_SCAN
                                          ACCESS_FINE_LOCATION
                                          BLUETOOTH (install time)
                                          BLUETOOTH_ADMIN (install time)

29-30                 10-11               ACCESS_FINE_LOCATION
                                          BLUETOOTH (install time)
                                          BLUETOOTH_ADMIN (install time)

15-18                 6-9                 ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION
                                          BLUETOOTH (install time)
                                          BLUETOOTH_ADMIN (install time)           

13-14                 4-5                 BLUETOOTH (install time)
                                          BLUETOOTH_ADMIN (install time)

请注意,上述大多数权限(以“安装时间”结尾的权限除外)都是运行时权限,需要编写代码才能提示用户授予它们。如果用户不能授予它们,或者权限稍后丢失或恢复,则扫描将无法工作。

除此之外,如果您想在应用程序处于后台(屏幕上看不到活动)时检测到信标,您还必须在Android 10+上拥有ACCESS_BACKGROUND_LOCATION权限(targetSdkVersion 29或更高版本)。

编写代码以获得这些权限是很棘手的。确认您已经获得它们的最简单方法是转到Settings -> Apps ->您的应用程序名->权限

请注意,权限屏幕中的名称与清单中声明的权限略有不同,如下所示:

请阅读我的博客文章这里,以获得更多关于我们如何到达这里的信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72357782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档