问题标签 [altbeacon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何使用 Altbeacon android 库检测多个信标?
我在我的 android 设备上使用 AltBeacon 示例应用程序 - altbeacon.org 提供的示例应用程序在这里:https ://github.com/AltBeacon/android-beacon-library-reference
但是,应用程序在启动时只检测并显示一个信标。我的 Android 设备附近有大约 5 个信标。如何检测所有信标?
在 RangingActivity.java 中,我注意到当信标出现时会调用这个方法:
我修改了迭代器以在 while 循环中从集合中读取,如下所示:
但是,应用程序会因此修改而崩溃。
我的问题:
(1) 如何显示我的 Android 设备附近的所有信标?
(2) 如何检测超出区域的信标?
android - Android 信标库在一台 Android 4.4 设备上运行良好,但在另一台设备上运行良好
更新:我尝试了一种更直接的方法(参见下面的编辑 3),这会导致手表上的信标缺少有趣的数据。
非工作设备的详细信息。Smartwatch(通用)列为支持蓝牙 4.0 的 MTK6572 芯片组型号 EC720(似乎有很多变体)Android 4.4.2 内核:3.4.67 chendalin-Z87-HD3 #1 Dec 27th 2014 内部版本号:H82D.SMARTWATCH.OC4.0.20141447自定义构建版本:1419655453
我正在使用相同的 Radius Networks Tag 信标测试相同的应用程序。在这个测试中,我的设备附近有相同的 4 个信标。
设备 1 是我尚未更新到 Android L 的 Nexus 7 (2013),它正在运行 4.4.4
设备 2 是一款通用智能手表,在 MTK6572 上运行 android 4.4.2。规格将其列为具有蓝牙 4.0
当我使用 Android 信标库运行我的测试应用程序时,Nexus 会报告信标,但智能手表不会。然而,它似乎检测到它们,我在 logcat 中看到条目,例如:D/BluetoothAdapter:onScanResult() - Device=E5:E0:20:CF:63:32 RSSI=-60。当 BeaconParser 未设置为读取正确类型的信标时,似乎这些消息通常会显示,但在我的情况下,我很确定这不是问题,因为 nexus 看到具有完全相同代码的信标。
两个设备的日志输出看起来非常不同,我开始怀疑手表的 android 版本是否以某种方式禁用了 BLE 支持或堆栈不完整。我已经仔细检查了蓝牙是否已打开,并且还想注意手表具有应用程序权限管理,对于应用程序请求的所有权限,我将其设置为“始终允许”。
来自智能手表时的 logcat 部分:
这是我的代码:
编辑1:
添加更具体的日志条目以尝试显示信标检测的差异:我删除了所有信标,但只有一个信标,我注意到工作设备通过 UUID 识别信标,非工作设备不是。但是我在工作设备的日志中找不到对 Device=E5:E0:20:CF:63:32 的任何引用。
Nexus 7(工作):
智能手表(不工作):
我注意到的另一件事是,在非工作设备中,对 BeaconService 的唯一引用如下:
而在工作设备中,信标的大部分日志记录似乎来自该类......
编辑 - 更新 2:
回应大卫关于 MAC 地址的问题
以下代码:
在工作的 Nexus 7 上产生:
在智能手表上:
因此,BeaconManager(或底层 android API)没有将 ble 设备“视为”为信标,但它确实使用以下行标识了具有相同 MAC 地址的信标:
编辑 3:
我决定退后一步,尝试使用 android 蓝牙 API 直接查询信标。
基本上我只是想输出返回的字节,看看为什么不能识别信标。对于同一个信标,输出看起来完全不同,只有前两个字节有智能手表看到的信标数据,而 nexus 7 有 30 个字节的数据。
我尝试更改 SCAN_TIME 到目前为止没有任何效果。手表接收不到数据是否表明它无法读取ble数据包?
我使用了以下代码:
这是输出:
关系 7(工作):
智能手表(不工作):
android - 在前台和后台检测 iBeacon 时,AltBeacon 库不稳定
我已经完全按照AltBeacon 参考应用程序及其教程中的程序来为我的应用程序在前台和后台进行 iBeacon 检测。
实际上,我的应用确实检测到了 iBeacons。我会在检测到 iBeacon 后发送通知。
但是,测距过程可能会在几分钟后突然停止,无论我的应用程序处于前台还是后台(尤其是在设备锁定时)。
有时,它会重新启动检测(i)在我重新打开设备中的蓝牙后,(ii)在我重新启动应用程序后。但有时不会。
我在我的应用程序的自定义应用程序中实现了 BootstrapNotifier 和 RangeNotifier。下面是一些代码片段
我的应用程序.java
我的测试设备是 Android4.4.4 的 Nexus 7(2013 移动版)
有人对这个问题有任何想法吗?任何帮助将不胜感激。
更新:这是我最后一次在前台检测后的 logcat
android - 如何使用 Altbeacon 通过应用程序在后台监控信标,但使用开关启动/停止扫描
我正在使用 Android iBeacon 应用程序来管理商店的促销活动。当客户在商店附近时,应用程序将发送通知,告知最佳促销或折扣。
我正在使用最新版本的 Altbeacon 库来检测用户何时进入某个区域。问题是我将监视管理的参考示例跟踪到主应用程序类(“在后台启动应用程序”)。它工作正常,但在这种方法中,应用程序始终监控信标扫描。我需要允许用户启动和停止监控的服务,我不知道如何用Application类中的逻辑来做。我需要使用 IntentService 来管理它吗?
谁能通过一个简单的示例向我展示如何通过按钮或开关启动或停止监控?如果用户不想使用促销系统,我不仅需要绑定和取消绑定beaconManager,还需要启动或停止真正的扫描以节省电池。
提前致谢!
ibeacon-android - 监测和测距之间的电池消耗
我正在使用 Alt Beacon 来监视和测距信标。监控始终基于前台和后台扫描时间进行。一旦进入区域,测距就开始并且测距不会停止。我有以下关于测距的问题 1. 即使退出信标范围,测距仍然发生吗?2. 如果测距和监控在运行,是否会消耗更多的电池电量?3. 停止测距后电池消耗会增加吗?
android - Android ble广播接收器未在后台启动
我正在运行我的活动,它有一个广播接收器,它监听来自 Ble 服务类的 ble 更新。当设备不在附近时断开连接时,当设备在区域内并连接到设备时,我正在使用 AltBeacon 启动我的应用程序。但是广播接收器没有启动。
我的代码如下:
android - AltBeacon setLayout for Gimbal beacons on android
我希望 Android AltBeacon 库能够正确检测 Gimbal 信标。我知道云台信标具有加密标识符,因此无法直接读取这些标识符。但我至少想分享可以检测到周围存在的代码。
这是我所拥有的:
检测 Gimbal 信标的代码(不读取加密标识符):
我确实在这里找到了 Gimbal 布局Estimote 和 Gimbal 信标的正确 BeaconLayout 是什么
但是布局缺少 i 和 p 键。
这是 Estimote 信标的工作布局示例
有没有人(尤其是来自 Gimbal 的人)有关于正确的 Gimbal 布局的任何信息。我很想知道完整的服务 UUID 以及广告中发送的任何其他可读字段。
ios - iOS 下 altBeacons 上的 Major 和 Minor
有没有办法找出 altBeacon 的主要和次要值?我正在使用这个库(https://github.com/CharruaLab/AltBeacon)来检测附近的 BLE 设备(无论它是否是信标)。检测到信标,我知道它们的 uuid。我可以使用 iOS CoreBluetooth 框架提取主要和次要值吗?
更新:代码看起来不错。看起来找出主要或次要的唯一方法是请求信标的数据,因为它在下面接受的答案中完成。但信标本身并不一定会在这种情况下回复您。
android - RegionBootstrap 的后期初始化
在参考应用程序中,RegionBootstrap在其onCreate 方法的自定义应用程序类中初始化,当然,在调用任何活动之前调用应用程序类。
有没有办法在活动中初始化 RegionBootstrap?我已经尝试过制作 RegionBootstrap 的静态变量,以便我可以在不同的活动中调用它,但不幸的是,它不起作用。
我需要初始化的区域将来自服务器,因此 RegionBootstrap 的初始化不能来自应用程序类。
* 编辑 *
这是我实施的地方BeaconConsumer
实施BeaconNotifier