android - 如何将外部传感器连接到 Android 设备?

标签 android android-sensors

我的智能手机没有气压计,我想使用通过 USB 或蓝牙连接到我的智能手机的外部气压计。我希望每个已安装的应用程序都可以以标准方式使用此 baromter,但我不知道这是否可能。按照标准方式,我的意思是从 google play 下载的每个需要气压计的应用程序都可以使用我的外部气压计。因此,存在读取测量值并通过 Intent 共享的应用程序的解决方案不让我满意。

添加外部 GPS 更容易,因为有 android.location.LocationManager具有方法的类 addTestProvider所以我可以开发应用程序来创建 TestProvider 并设置由 setTestProviderLocation 从 USB/蓝牙读取的位置方法。问题是 SensorManager不提供 API 来添加模拟传感器。

可以将外部气压计连接到 Android 设备并将测量值共享到所有应用程序。

最佳答案

外部 USB 传感器在插入时需要 Android 支持该设备。然后您需要一根 OTG 电缆来反转 USB 从属/主控。无需进入内核构建等...在您的 android 设备上安装终端应用程序,插入 OTG 和传感器,然后运行 ​​dmesg 以查看是否检测到设备并加载驱动程序。从那里您必须弄清楚 Linux 对您的 USB 传感器的支持,并努力将这种支持纳入 Android 内核。

如果您最终不得不构建一个新内核,您不妨完全切换到一个全新的 ROM。 CyanogenMod 提供了完整的源代码、构建脚本和关于从头开始构建 ROM 的 wiki。一旦安装了新的 ROM zip,您就可以安全地调整内核和安装软件。

Android 内核非常接近支持几乎所有在 Linux 上运行的 Linux 内核,只要您的传感器驱动程序的源代码可用,或者它的预编译二进制文件是可用的。 (也称为专有 blob)

最后,假设您有一个带有 OTG 电缆的设备并且传感器似乎被检测到并且驱动程序已加载,您将需要一些工具或应用程序才能实际使用传感器。如果有可用的 Linux 工具可以执行您想要的操作,请查看是否有它们的预编译 ARM 版本,或者如果源代码可用,您将必须使用 Android NDK 从源代码编译它们。

我为什么要费心解释所有这些?蓝牙在 Android 中总体上非常不可靠。此外,您至少需要 Android 5.1。谷歌最初的蓝牙堆栈是垃圾。 (Bluez 的包装器存在各种问题,它在某些用途上工作正常,但总体上存在稳定性问题)你只需要在非三星设备上使用心率监测器就知道它不会保持连接超过 10秒。三星在早期设备中引入了自己的蓝牙堆栈。我开发了使用心率监测器和心电图阅读器的身份验证应用程序,两者都使用蓝牙。一旦我的 Nexus5 设备升级到 5.1,一切都稳定了。谷歌的蓝牙问题众所周知。仅 Google android 和蓝牙堆栈实现。

除非您需要无线,否则有线总是更好。

您确实有一些替代 USB 选项。

1) 使用通过 USB 连接的 Arduino 或 RPi。不需要特殊的 Linux 驱动程序或内核,但您需要 breakout 设备,它必须连接您的传感器。例如传感器 -> Arduino -> android。如果它是一个 RPi,你将有 4 个 USB 端口和一个完整的 Linux 内核可以使用,但电源将是一个问题,具体取决于你的需要。这是来自应用程序的关于 Arduino 网络共享的精彩教程:http://www.allaboutcircuits.com/projects/communicate-with-your-arduino-through-android/

2) 使用 IOIO OTG 分线单元将您自己的传感器转入其各种输入。您将能够从 Java 访问传感器。他们甚至提供了一个应用程序来测试一切。该装置本身还为任何有线传感器提供电池供电和充电支持。您只需将它们连接起来,将其插入您的安卓 USB 即可。我认为他们即将发布新型号,因为当前型号已停产:https://www.sparkfun.com/news/2069

无论如何,祝你好运。

关于android - 如何将外部传感器连接到 Android 设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34698202/

相关文章:

java - Android - Facebook 是否打算访问某个 Facebook 页面?

android - bundle 在 Android 中是什么意思?

c# - 套接字 - Java 客户端,C# 服务器

android - 重置 Android 计步器

android - 光传感器收集不准确的数据

java - 想要将 Android 设备应用程序(Java 编程)连接到 NetBeans 8.0

android - 集成google plus时发生内部错误

android - 如何在 Android Graph 中绘制实时传感器值?

android - 运动检测与节省电池

android - Activity 识别 API 不可靠?