2016-01-09 50 views
3

我有没有气压计的智能手机,我想通过USB或蓝牙使用连接到我的智能手机的外部气压计。我希望每个已安装的应用程序都能以标准方式使用这个baromter,但我不知道这是否可能。按照标准的方式,我的意思是每个从google play下载的需要气压计的应用程序都可以使用我的外部气压计。所以如果解决方案有读取测量值并由Intent分享它的应用程序不会满足我的要求。如何将外部传感器连接到Android设备?

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

是否可以将外部气压计连接到Android设备并将测量结果分享给所有应用程序。

+1

“可以将外部气压计连接到Android设备并将测量结果分享给所有应用程序” - 不是我所知道的,没有定制ROM知道您的外部气压计以及任何它所说的协议。 – CommonsWare

+0

Android Fit API包括[外部BLE传感器](https://developers.google.com/fit/android/ble-sensors)?它是否满足您的需求? – Stan

回答

2

外部USB传感器需要Android在插入时支持该设备。然后,您需要一根OTG电缆来反转USB从设备/主设备。不用进入内核构建等...在Android设备上安装一个终端应用程序,插入OTG和传感器,然后运行dmesg以查看设备是否被检测到并且加载了驱动程序。从那里你必须弄清楚你的USB传感器有什么Linux支持,并且在一条路径上工作以获得对Android内核的支持。

如果你最终不得不建立一个新的内核,那么你可能会完全转向一个全新的ROM。 CyanogenMod提供完整的源代码,构建脚本和维基从头开始构建他们的ROM。一旦你安装了新的ROM压缩包,你可以安全地调整内核和安装软件。

Android内核足够接近直接的Linux内核,只要传感器驱动程序的源代码可用,或者它的预编译二进制文件,支持几乎所有可用于Linux的内容都可以在android上工作可用。 (也称为专有斑点)

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

我为什么要麻烦解释所有这些? Android在整体上超级不可靠。至少你还需要Android 5.1。 Google的原始蓝牙堆栈是垃圾。 (蓝牙包装有各种各样的问题,它在某些用途上工作正常,但总体上存在稳定性问题)您只需在非三星设备上使用心率监视器即可知道它不会保持连接时间超过10秒。三星在早期的设备中引入了自己的蓝牙堆栈。我已经开发了使用带有ECG阅读器的心率监测器的身份验证应用程序,均使用蓝牙。一旦我的Nexus5设备升级到5.1,一切都稳定下来。 Google的蓝牙问题众所周知。只需Google android和蓝牙堆栈实现。

除非您需要无线,否则有线将永远更好。

你确实有一些替代的USB选项。

1)使用通过USB连接的Arduino或RPi。没有特殊的Linux驱动程序或内核需要,但你需要中断设备,它将不得不网关你的传感器。例如传感器 - > Arduino - > android。如果它是一个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

反正,祝你好运。