我正在开发一款与蓝牙LE设备对话的应用。对于iOS和Android,我想要一些避免开发两次的方法。是否有一个跨平台的应用程序框架,对蓝牙LE有很好的支持?
我已经快速了解了Cordova(PhoneGap),Appcelerator,Xamarin等框架(通常的嫌疑人:例如this list),但我无法弄清楚他们是否(a)支持蓝牙LE每个平台,和(b)如果他们这样做,是否通过本机调用(访问如何?)或本机API的某种包装(包装器看起来是什么样的?),以及(c)如果是包装器,它是多么完整,以及它是多么稳定。
如果您有这些经验,可以在不同的框架中总结蓝牙LE支持的状态吗?
编辑从挖掘各种选项和以下答案中获得的一些信息:
Cordova:几个开源插件,例如https://github.com/evothings/cordova-ble https://github.com/don/cordova-plugin-ble-central https://github.com/randdusing/BluetoothLE(不完整列表)。 Evothings是一个很好的Cordova +蓝牙设置。这些是否适用于其他基于Cordova的应用程序框架,如Appery.io,Telerik AppBuilder,Ionic Creator?
Xamarin:这只是通过MonoTouch.CoreBluetooth和Android.Bluetooth使用原生API。这意味着使用它们的代码实际上并不是跨平台的,但它们可能与本机API相同(因为它们本质上是本机API)。
Appcelerator拥有蓝牙的第三方商业插件(https://marketplace.appcelerator.com/apps/3834和 https://marketplace.appcelerator.com/apps/6611),没有内置支持。这些工作吗?
P.S。除了蓝牙,我的需求是非常小的:这个应用程序将有很多UI元素,但不是一个复杂的类型,只是在一堆不同的屏幕上的一堆按钮/复选框/滑块(这在两个平台上维护将是非常繁琐的)。我还需要调用一些REST API。速度并不是非常重要,没有那么多应用程序逻辑(它现在主要用C语言编写),而本机UI外观并不重要。但是,在平台的旧版本上工作非常重要,最好是回到Android 4.3和iOS 7.0。
答案 0 :(得分:8)
我一直在为BluetoothLE使用Randdusing的Cordova插件,它适用于Android和iOS(Windows手机仍在开发中)。作为Cordova,它设计用于HTML5 / JavaScript应用程序,但插件本身(所有Cordova插件?)都是用本机代码编写的。 在我的项目早期,我尝试了Evothings,它也有BLE插件,但我发现了一些问题,而且我不知道这些问题是否已经解决。 我的应用程序在UI要求方面与您的应用程序非常相似,如果您愿意,我可以帮助您集成BLE代码 - 但是您需要重写您的应用程序'先进入javascript。 顺便说一句,你要求使用较旧的Android,但只有Android 4.3 or higher支持AFAIK BLE。
答案 1 :(得分:3)
我正在使用Qt框架开发支持BLE的跨平台应用程序: http://doc.qt.io/qt-5/qtbluetooth-lowenergyscanner-example.html
目前支持的平台是Andriod,iOS,OSX,Linux。据说Windows平台在即将推出的Qt 5.6版本中支持BLE(真的很期待它)。 BLE相关类易于使用,Qt在示例/文档中提供了两个示例项目。我不确定的是在扫描期间获取制造商特定数据。现在我正在连接设备以获取某些信息,如果我可以阅读制造商特定数据则不需要这些信息。 Qt的BLE目前只支持中心角色。
Qt基于C ++,如果这对你很重要。