如何使用蓝牙监控 Danalock 的存在?
How can I monitor the presence of a Danalock, using bluetooth?
我有一个Danalock V3 Smart Lock。它像宣传的那样工作,但我希望我自己的 Android 应用程序能够检测到我何时进入该设备的范围。因此,我的应用程序需要“持续了解”设备是否在范围内。我的问题是:这可行吗?如果是,如何?
据我所知,该设备未绑定到phone。如果我遍历绑定设备列表,它不会显示:
// example code
for (dev in btAdapter.bondedDevices) {
val string = "${dev.name}: ${dev.address}"
println(string) // <-- All my bonded devices are listed, not the Danalock device
}
该设备通过 Danalocks 自己的专有应用程序进行管理(如前所述,这是有效的)。但它是一个蓝牙设备,所以我想我应该能够以某种方式检测到它在我的应用程序中的存在。
这有点棘手,因为从理论上讲,它应该是可行的。正如 Michael Kotzjan 所说,只要你知道你的设备名称(例如使用 nRF Connect),你就可以在后台模式下持续扫描这个名称,然后一旦你检测到它,你就可以在你的 Android 应用程序。整个 BLE 信标技术都是这样工作的,所以它肯定是可行的。
实际上,当涉及到 BLE 后台模式时,您将面临一些挑战。由于 Android P,OS 具有自适应电池优化功能,可能会在后台关闭某些应用程序。有几种解决方法,但不会完全 straight-forward。查看下面的链接,其中更详细地介绍了该主题:-
我有一个Danalock V3 Smart Lock。它像宣传的那样工作,但我希望我自己的 Android 应用程序能够检测到我何时进入该设备的范围。因此,我的应用程序需要“持续了解”设备是否在范围内。我的问题是:这可行吗?如果是,如何?
据我所知,该设备未绑定到phone。如果我遍历绑定设备列表,它不会显示:
// example code
for (dev in btAdapter.bondedDevices) {
val string = "${dev.name}: ${dev.address}"
println(string) // <-- All my bonded devices are listed, not the Danalock device
}
该设备通过 Danalocks 自己的专有应用程序进行管理(如前所述,这是有效的)。但它是一个蓝牙设备,所以我想我应该能够以某种方式检测到它在我的应用程序中的存在。
这有点棘手,因为从理论上讲,它应该是可行的。正如 Michael Kotzjan 所说,只要你知道你的设备名称(例如使用 nRF Connect),你就可以在后台模式下持续扫描这个名称,然后一旦你检测到它,你就可以在你的 Android 应用程序。整个 BLE 信标技术都是这样工作的,所以它肯定是可行的。
实际上,当涉及到 BLE 后台模式时,您将面临一些挑战。由于 Android P,OS 具有自适应电池优化功能,可能会在后台关闭某些应用程序。有几种解决方法,但不会完全 straight-forward。查看下面的链接,其中更详细地介绍了该主题:-