如何将外部传感器连接到 Android 设备?
Posted
技术标签:
【中文标题】如何将外部传感器连接到 Android 设备?【英文标题】:How to connect external sensor to Android device? 【发布时间】:2016-01-09 19:55:18 【问题描述】:我有没有气压计的智能手机,我想使用通过 USB 或蓝牙连接到我的智能手机的外部气压计。我希望每个已安装的应用程序都可以以标准方式使用这个气压计,但我不知道这是否可能。通过标准方式,我的意思是从谷歌播放下载的每个需要气压计的应用程序都可以使用我的外部气压计。因此,有应用程序读取测量值并由Intent 共享的解决方案并不符合我的要求。
添加外部 GPS 更容易,因为 android.location.LocationManager 类有一个方法 addTestProvider,所以我可以开发创建 TestProvider 并通过 setTestProviderLocation 方法设置从 USB/蓝牙读取的位置的应用程序。问题是SensorManager 不提供 API 来添加模拟传感器。
可以将外部气压计连接到 Android 设备并将测量值共享给所有应用程序。
【问题讨论】:
“是否可以将外部气压计连接到 Android 设备并将测量值共享给所有应用程序”——我不知道,没有自定义 ROM 知道您的外部气压计和它所说的任何协议。 Android Fit API 包括external BLE sensors 怎么样?是否满足您的需求? 如果传感器兼容,可以使用 Arduino 硬件。看起来这很容易在android和Arduino之间进行通信allaboutcircuits.com/projects/… 【参考方案1】:外部 USB 传感器需要 Android 在插入设备时支持该设备。然后您需要一根 OTG 电缆来反转 USB 从/主。无需进入内核构建等...在您的 android 设备上安装终端应用程序,插入 OTG 和传感器,然后运行 dmesg 以查看是否检测到设备并加载驱动程序。从那里,您必须弄清楚您的 USB 传感器存在哪些 Linux 支持,并设法将这种支持纳入 Android 内核。
如果您最终不得不构建一个新内核,您不妨完全切换到一个全新的 ROM。 CyanogenMod 提供完整的源代码、构建脚本和 wiki,以从头开始构建他们的 ROM。安装新的 ROM zip 后,您可以安全地调整内核和安装的软件。
Android 内核与直接的 Linux 内核足够接近,只要传感器驱动程序的源可用,或者它的预编译二进制文件是可用的。 (也称为专有 blob)
最后,假设您有一个带有 OTG 电缆的设备,并且传感器似乎已被检测到并且驱动程序已加载,那么您将需要一些工具或应用来实际使用传感器。如果有可用的 Linux 工具可以满足您的需求,请查看它们是否有预编译的 ARM 版本,或者您必须使用 Android NDK 从源代码编译它们(如果源代码可用)。
我为什么要费心解释所有这些?蓝牙在 Android 中总体上是超级不可靠的。此外,您至少需要 Android 5.1。谷歌最初的蓝牙堆栈是垃圾。 (Bluez 的包装有各种问题,它在某些用途上运行良好,但总体上存在稳定性问题)您只需要在非三星设备上使用心率监测器就知道它不会保持连接超过 10秒。三星在早期的设备中引入了自己的蓝牙堆栈。我使用带有心电图阅读器的心率监测器开发了身份验证应用程序,两者都使用蓝牙。一旦我的 Nexus5 设备升级到 5.1,一切都稳定了。谷歌的蓝牙问题是众所周知的。只是 Google android 和蓝牙堆栈实现。
除非你需要无线,否则有线总是更好。
您确实有一些替代 USB 选项。
1) 使用通过 USB 连接的 Arduino 或 RPi。不需要特殊的 Linux 驱动程序或内核,但您将需要分线设备,它必须为您的传感器设置网关。例如传感器 -> Arduino -> 安卓。如果它是 RPi,您将拥有 4 个 USB 端口和一个完整的 Linux 内核可以使用,但根据您的需要,电源将是一个问题。这是一个关于 Arduino 网络共享应用程序的好消息:http://www.allaboutcircuits.com/projects/communicate-with-your-arduino-through-android/
2) 使用 IOIO OTG 分线单元将您自己的传感器卷入其各种输入中。您将能够从 Java 访问传感器。他们甚至提供了一个应用程序来测试一切。该装置本身也为任何有线传感器提供电池电源和充电支持。您只需将它们连接起来,将其插入您的 android USB 即可。我认为他们即将发布新型号,因为当前单位已停产:https://www.sparkfun.com/news/2069
无论如何,祝你好运。
【讨论】:
以上是关于如何将外部传感器连接到 Android 设备?的主要内容,如果未能解决你的问题,请参考以下文章
我可以使用 BLE 将 Iphone 4s 连接到最多 3 个设备(温度传感器)吗
如何将 MAX30100 脉冲传感器连接到 ESP32 的不同 i2c 引脚并读取数据?
将Raspberry PI 3与Android Things连接到Arduino [已关闭]
如何在通过WiFi热点连接的另一台设备上加载笔记本电脑的localhost网站?