Android 如何在范围内自动连接可扩展设备?

Android 如何在范围内自动连接可扩展设备?,android,ios,cordova,angular,ionic2,Android,Ios,Cordova,Angular,Ionic2,我正在为爱奥尼亚2开发应用程序。我有一个要求,当我的BLE设备在范围内时,自动连接到它。情况是我的应用程序是在后台还是在前台,我想自动连接我的BLE设备,如果断开连接,则继续搜索我的设备,并在范围内重新连接。有办法做到这一点吗?我已经提到:https://github.com/don/cordova-plugin-ble-central。此外,我还提出了有关检测BLE连接的问题:。但没有任何解决方案与此相关。但我什么也没发现。请建议做这件事的任何方法。我想要一个可以在ios和android上运行

我正在为爱奥尼亚2开发应用程序。我有一个要求,当我的BLE设备在范围内时,自动连接到它。情况是我的应用程序是在后台还是在前台,我想自动连接我的BLE设备,如果断开连接,则继续搜索我的设备,并在范围内重新连接。有办法做到这一点吗?我已经提到:
https://github.com/don/cordova-plugin-ble-central
。此外,我还提出了有关检测BLE连接的问题:。但没有任何解决方案与此相关。但我什么也没发现。请建议做这件事的任何方法。我想要一个可以在ios和android上运行的解决方案。

我自己只知道android部分。 我认为这不是一个好的尝试,因为要实现这一点,蓝牙必须始终处于打开状态,并且设备应该始终在范围内查找设备

有一些方法可以做到这一点,比如
Alarm Manager
Job Scheduler
(无论你的应用程序是在前台还是后台,甚至是重新启动,都可以做你想做的事情),但我不推荐它,因为它可以让手机保持活力(屏幕和硬件)并耗尽电池电量

如果要这样做,请将搜索间隔设置为尽可能小。 您可以使用下面的文章和页面等进行更多说明


在Android中,使用以下属性设置长时间运行连接的正确方法:

  • 如果设备不在范围内,则当设备最终进入范围内时,应自动连接(无超时)
  • 当设备因任何原因断开连接时,Android应在其进入范围时自动重新连接
  • 是用

    其中自动连接参数设置为true。如果设置为false,则超时时间为30秒,并且在设备断开连接时也不会自动重新连接

    不幸的是,你提到的cordova插件硬代码自动连接为false。因此,您可以更改插件,使“自动连接”设置为true,也可以设置一个扫描,在该扫描中,您可以永远扫描,并在设备出现时连接到您感兴趣的设备。但cordova插件使用了最大扫描间隔(即100%的扫描时间),通常设置为平均扫描5-10%的时间,这样既不占用Wi-Fi带宽,又能节省电池。。。我要说的是,cordova插件似乎不是为了让你有长时间运行的后台连接而创建的,这可能需要一些时间来连接

    为了确保你的应用程序不会在后台被杀死,你需要在连接到BLE设备的同一进程中运行一个“前台服务”()