V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liyafe1997
V2EX  ›  Android

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

  •  
  •   liyafe1997 · 247 天前 · 5447 次点击
    这是一个创建于 247 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先考虑 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 有没有更好的方法?

    感谢各位!

    3 条回复    2024-04-11 10:32:40 +08:00
    liyafe1997
        1
    liyafe1997  
    OP
       247 天前
    找到一个叫 Android beacon library 的东西,不知道效果怎么样,看起来用的人不多,有没有踩过坑的朋友?
    https://altbeacon.github.io/android-beacon-library/index.html
    jojo0830
        2
    jojo0830  
       247 天前
    这套方案一个致命的问题就是后台保活。也许你该换一套方案,比如说,开发一个蓝牙设备,当发现手机的蓝牙信号后就发出信号,但是还有一个问题,就是,蓝牙的定位一般都不太准。
    snowflake007
        3
    snowflake007  
       245 天前
    我们搞过蓝牙定位很不准,信号不稳定。现在扫描 Wi-Fi ,可是干扰项很多也不准。。。 搞🧶
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5066 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 07:40 · PVG 15:40 · LAX 23:40 · JFK 02:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.