先考虑 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 有没有更好的方法?
感谢各位!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.