相关疑难解决方法(0)

在Android上为蓝牙低功耗创建后台服务

背景:

理想情况下,我希望我的Android设备能够一直扫描蓝牙低功耗设备,以便在出现具有特定属性的新设备时启动应用程序.

因此,BLE中的广播分组将例如枚举由广播设备提供的一组服务.然后,应用程序可以注册某些服务的兴趣,并在具有此服务的设备进入范围时自动启动.

根据我的理解,这不是Android BLE API的工作原理吗?那我怎么能得到类似的东西呢?

最简单的例子:

我有一个BLE传感器可以记录环境温度.每当我的Android手机足够接近时,我想连接并下载所有数据,并将其发送到某些云存储解决方案.这个应用程序不需要任何GUI(至少在配置完成后不需要).但是如何在没有耗尽电池的情况下在后台运行,但是一旦它在范围内,我仍然可以很快地连接设备?

问题:

我是否需要设置计时器并偶尔唤醒应用程序,然后手动开始扫描?我应该选择什么样的间隔.我可以在不对电池产生不利影响的情况下让扫描仪运行多长时间?

可能的方法:

这是我到目前为止所提出的.

  • 用于设置要扫描的间隔和设备的配置活动
  • 配置活动将设置类似于Scheduler示例的WakefulBroadcastReceiver
  • 当接收器获得onReceive事件时,我启动了一个BLE扫描服务(我已经写过)作为一个唤醒服务.
  • 扫描服务开始扫描(使用已注册的回调).
  • 该服务可能会获得可以采取行动的报告
  • 超时后,服务将停止扫描仪并结束唤醒服务.

这有效,但我不确定这是最好的方法.我也不知道我可以有多小间隔,仍然可以避免破坏电池寿命.我想要的是每两分钟开始扫描一次,扫描10-20秒.但我担心唤醒设备的频率会相当高吗?

android bluetooth-lowenergy

47
推荐指数
1
解决办法
3万
查看次数

标签 统计

android ×1

bluetooth-lowenergy ×1