首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Alt信标2.16.1不能用特定信标类型代码扫描信标

Alt信标2.16.1不能用特定信标类型代码扫描信标
EN

Stack Overflow用户
提问于 2019-03-07 15:08:20
回答 1查看 897关注 0票数 1

我正在构建一个使用Android信标库扫描两种类型信标的android应用程序:

  • iBeacon类型(0x4c000215)
  • 自定义信标,信标类型代码为0x4106

我知道有一个问题是修复了三星的屏幕故障扫描https://github.com/AltBeacon/android-beacon-library/pull/798

这个修复被实现到2.15.3发行版中。

从那时起,每次使用三星设备>= Android8.0进行扫描时,我都没有看到任何自定义信标,但我确实收到了其他信标类型,比如iBeacon。所以我仍然在使用2.15.2版本。

这是我的自定义信标布局:

代码语言:javascript
复制
"m:0-1=4106,i:2-3,i:4-4,i:5-6,i:7-8,i:9-10,i:11-11,i:12-12,i:13-13,i:14-14,i:15-15,i:16-16,i:17-17,i:18-23,p:24-24"  

我检查了库中的代码,我可以看到一个只适用于三星设备的过滤器:

代码语言:javascript
复制
if (Build.MANUFACTURER.equalsIgnoreCase("samsung")) {
  // On the Samsung Galaxy Note 8.1, scans are blocked with screen off when the
  // scan filter is empty (wildcard).  We do a more detailed filter on Samsung only
  // because it might block detections of AltBeacon packets with non-standard
  // manufacturer codes.  See #769 for details.
  filters = new ScanFilterUtils().createScanFiltersForBeaconParsers( 
  mBeaconManager.getBeaconParsers());
}

如果我删除了这段代码,一切都会像我预期的那样正常工作。

有什么事情我必须做,这样我就不需要编辑库?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-07 15:56:28

当应用程序在后台时,库使用BLE制造商ID和信标类型代码来匹配BLE过滤器。若要使此操作正常,必须将这些设置完全正确,否则过滤器将不匹配。

这里有两个问题:

  1. 您的信标类型代码不应包含BLE制造商ID。使用0x0215代替0x4c000215 (注意: 0x4c00是Apple BLE制造商ID,将单独应用)。如果与此一起使用信标布局字符串,则必须调整字节偏移量以说明这一点,因此布局以m:2-3=0215开始。
  2. 对于将与这些过滤器匹配的任何信标布局,必须设置硬件辅助制造商标识符。默认情况下,库包括0x0118 (Radius for AltBeacon)和0x0215 (AltBeacon),用于所有其他制造商信标类型。对于使用其他制造商代码的任何自定义信标(请参见此处列表:https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers),您必须像这样添加它(硬件制造商id 0x1234的示例):beaconParser.setHardwareAssistManufacturerCodes(new int[]{0x1234});

重要提示:移动设备有数量有限的蓝牙硬件过滤槽。您可以通过以下方式帮助确保您不会耗尽它们:

  1. 只登记你需要的多少信标布局。如果没有使用默认的AltBeacon布局,请调用beaconManager.getBeaconParsers().clear();来删除它。
  2. 只向每个BeaconParser注册您需要的确切硬件制造商代码。如果您注册多个过滤器槽,您将使用多个过滤器插槽。

上述API是在三星的限制实施之前设计的,这使得这成为一个更严重的问题。对于如何使这个API更直观,我对其他想法持开放态度,这样其他人就不会遇到与您相同的问题。

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

https://stackoverflow.com/questions/55046987

复制
相关文章

相似问题

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