求问一个 Android (iOS) App 检测用户是否靠近某个 BLE 设备的最佳实践?

227 天前
 liyafe1997

先考虑 Android 平台

大概用来做类似于室内定位,当设备靠近某个 BLE 设备时执行相应动作(比如发出通知等)

要求能长时间后台运行,对后台友好并且不过多消耗电量/资源,所以基于 foreground service 的方案不考虑了。(国产安卓杀后台的情况不考虑,不在本贴讨论范围内,只考虑原生安卓的行为,即原生安装默认电池优化的情况下能正常运行即可)。

用 Geofence 来触发不考虑,范围太大。

有什么好的解决方案呢?用 JobScheduler 定时触发 BLE Scan ?

或是把外部 BLE 设备作 Central ,安卓 App 做 peripheral ?然后外部 BLE 设备不断地尝试连接安卓 App 的 BLE peripheral ?我搜了下,安卓 App 也可以实现 peripheral ,但是似乎也挺依赖后台机制,网上给的方案都是做成 foreground service 的。

或是外部 BLE 设备发送 ibeacon?网上逛了下,似乎只有 iOS 能被动的触发(这里似乎有个完美方案: https://developer.estimote.com/ibeacon/tutorial/part-2-background-monitoring/ ),安卓端似乎还是要主动执行 BLE Scan ?那么问题又回到了上面,如何/何时在后台触发 BLE Scan 。

安卓端除了主动 BLE Scan 有没有更好的方法?

感谢各位!

5069 次点击
所在节点    Android
3 条回复
liyafe1997
227 天前
找到一个叫 Android beacon library 的东西,不知道效果怎么样,看起来用的人不多,有没有踩过坑的朋友?
https://altbeacon.github.io/android-beacon-library/index.html
jojo0830
226 天前
这套方案一个致命的问题就是后台保活。也许你该换一套方案,比如说,开发一个蓝牙设备,当发现手机的蓝牙信号后就发出信号,但是还有一个问题,就是,蓝牙的定位一般都不太准。
snowflake007
224 天前
我们搞过蓝牙定位很不准,信号不稳定。现在扫描 Wi-Fi ,可是干扰项很多也不准。。。 搞🧶

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1030717

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX