【问题标题】:Automatically have an Android device connect & receive advertised data from BLE device自动让 Android 设备连接并从 BLE 设备接收广告数据
【发布时间】:2015-12-29 00:47:30
【问题描述】:

我使用 android studio API 21 创建了一个 android 应用程序来扫描并连接到 BLE 设备并订阅以接收广告数据。这很好用,但现在我想自动执行此操作,而无需用户手动运行 android 应用程序。有没有办法让我的 android 设备知道它何时在 BLE 设备的范围内,并在可用时自动连接和接收数据?对于广播接收器类中需要什么代码以及广播接收器类是否需要在服务中,我只是有点困惑?

【问题讨论】:

    标签: android


    【解决方案1】:

    AFAIK,没有找到通知 BLE 设备的此类系统广播。
    我认为您将不得不自己通过服务来完成

    要在后台扫描 BLE 设备,您必须在服务中运行扫描。

    您可能想要的一些要求。

    1. 在应用启动时启动服务
      这是您的服务首次运行的起点。 只需在您的活动 onCreate 中调用 startService。

    2. 保持服务运行
      看,how to keep service running

    3. 在蓝牙禁用时停止 BLE 扫描
      用户禁用蓝牙时继续扫描是没有意义的。
      因此,您可能需要此检查。看,detecting bluetooth change

    4. 在设备启动时启动服务
      看,start service at boot

    5. 在服务中实施 BLE 扫描
      将所有代码从您的扫描活动(或片段)移至服务。类似的,

      BLEScanningService extends Service {
      
          @Override
          public int onStartCommand (Intent intent, int flags, int startId) {
              if (/*Bluetooth is available*/) {
                 /*
                  Do BLE scan
                  */
              } else {
                 // Stop BLE scanning and stop this service
              }
          }
      }
      

    然后,您的 BLE 扫描服务将始终在后台运行 :)

    也许您还想从服务中广播一些事件,以便应用 UI 和通知可以相应地更新。

    【讨论】:

    • 感谢您的反馈。我将进一步研究两台设备何时配对 - 绑定,看看当它们进入和超出范围时是否触发了任何事情。
    猜你喜欢
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多