Bluetooth LE 应用程序,如何跨平台构建它 (iOS-Android)?
Bluetooth LE app, how to build it cross-plaftorm (iOS-Android)?
我正在开发一个与蓝牙 LE 设备对话的应用程序。我想要一些方法来避免 两次 、iOS 和 Android 的开发。是否有对低功耗蓝牙有良好支持的跨平台应用程序框架?
我快速浏览了 Cordova (PhoneGap)、Appcelerator、Xamarin 等框架(通常的嫌疑人:例如 this list),但我无法弄清楚它们是否 (a) 支持蓝牙每个平台上的 LE,以及 (b) 如果他们这样做,无论是通过本机调用(如何访问?)还是本机的某种包装器 API(包装器是什么样的?),以及(c) 如果它是一个包装器,它有多完整,它有多稳定。
如果您有这方面的经验,能否总结一下不同框架对低功耗蓝牙的支持情况?
编辑 通过深入研究各种选项和以下答案获得的一些信息:
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 and Android.Bluetooth 使用本机 APIs。这意味着使用它们的代码实际上不是跨平台的,但它们可能与原生 API 一样工作(因为它们本质上是原生 API)。
Appcelerator 有蓝牙的第三方商业插件(https://marketplace.appcelerator.com/apps/3834 和
https://marketplace.appcelerator.com/apps/6611), 没有内置支持。这些有用吗?
P.S。除了蓝牙,我的需求非常少:这个应用程序将有很多 UI 元素,但不是复杂的类型,只是一堆 buttons/checkboxes/sliders 在一堆不同的屏幕上(这将是非常乏味的在两个平台上维护)。我还需要对 REST API 进行几次调用。速度不是特别重要,没有那么多应用程序逻辑(现在大部分是用 C 编写的),原生 UI 外观并不是那么重要。然而,在旧版本的平台上工作 是 重要的,最好回到 Android 4.3 和 iOS 7.0.
我一直在使用 Randdusing 的 BluetoothLE Cordova 插件,它适用于 Android 和 iOS(Windows phone 仍在开发中).作为 Cordova,它旨在与 HTML5/JavaScript 应用程序一起使用,但插件本身(与所有 Cordova 插件一样?)是用本机代码编写的。
在我的项目的早期,我尝试了 Evothings,它也有 BLE 插件,但我发现了一些问题,我不知道这些问题是否已经解决。
就 UI 要求而言,我的应用听起来与您的应用非常相似,如果您愿意,我可能会帮助您集成 BLE 代码 - 但您需要将 'c' 重写为 javascript 第一的。
顺便说一句,您要求使用较旧的 Android,但 AFAIK BLE 仅在 Android 4.3 or higher.
中受支持
我正在使用 Qt 框架开发支持 BLE 的跨平台应用程序:
http://doc.qt.io/qt-5/qtbluetooth-lowenergyscanner-example.html
目前支持的平台有Andriod、iOS、OSX、Linux。 Windows平台据说在即将发布的Qt 5.6版本中支持BLE(非常期待)。 BLE 相关 类 易于使用,Qt 在 examples/documentation 中提供了两个示例项目。我不确定的是在扫描过程中获取制造商特定数据。现在我正在连接设备以获取某些信息,如果我可以阅读制造商特定数据则不需要这些信息。 Qt的BLE目前只支持central role
Qt 基于 C++,如果这对您很重要的话。
我正在开发一个与蓝牙 LE 设备对话的应用程序。我想要一些方法来避免 两次 、iOS 和 Android 的开发。是否有对低功耗蓝牙有良好支持的跨平台应用程序框架?
我快速浏览了 Cordova (PhoneGap)、Appcelerator、Xamarin 等框架(通常的嫌疑人:例如 this list),但我无法弄清楚它们是否 (a) 支持蓝牙每个平台上的 LE,以及 (b) 如果他们这样做,无论是通过本机调用(如何访问?)还是本机的某种包装器 API(包装器是什么样的?),以及(c) 如果它是一个包装器,它有多完整,它有多稳定。
如果您有这方面的经验,能否总结一下不同框架对低功耗蓝牙的支持情况?
编辑 通过深入研究各种选项和以下答案获得的一些信息:
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 and Android.Bluetooth 使用本机 APIs。这意味着使用它们的代码实际上不是跨平台的,但它们可能与原生 API 一样工作(因为它们本质上是原生 API)。
Appcelerator 有蓝牙的第三方商业插件(https://marketplace.appcelerator.com/apps/3834 和 https://marketplace.appcelerator.com/apps/6611), 没有内置支持。这些有用吗?
P.S。除了蓝牙,我的需求非常少:这个应用程序将有很多 UI 元素,但不是复杂的类型,只是一堆 buttons/checkboxes/sliders 在一堆不同的屏幕上(这将是非常乏味的在两个平台上维护)。我还需要对 REST API 进行几次调用。速度不是特别重要,没有那么多应用程序逻辑(现在大部分是用 C 编写的),原生 UI 外观并不是那么重要。然而,在旧版本的平台上工作 是 重要的,最好回到 Android 4.3 和 iOS 7.0.
我一直在使用 Randdusing 的 BluetoothLE Cordova 插件,它适用于 Android 和 iOS(Windows phone 仍在开发中).作为 Cordova,它旨在与 HTML5/JavaScript 应用程序一起使用,但插件本身(与所有 Cordova 插件一样?)是用本机代码编写的。 在我的项目的早期,我尝试了 Evothings,它也有 BLE 插件,但我发现了一些问题,我不知道这些问题是否已经解决。 就 UI 要求而言,我的应用听起来与您的应用非常相似,如果您愿意,我可能会帮助您集成 BLE 代码 - 但您需要将 'c' 重写为 javascript 第一的。 顺便说一句,您要求使用较旧的 Android,但 AFAIK BLE 仅在 Android 4.3 or higher.
中受支持我正在使用 Qt 框架开发支持 BLE 的跨平台应用程序: http://doc.qt.io/qt-5/qtbluetooth-lowenergyscanner-example.html
目前支持的平台有Andriod、iOS、OSX、Linux。 Windows平台据说在即将发布的Qt 5.6版本中支持BLE(非常期待)。 BLE 相关 类 易于使用,Qt 在 examples/documentation 中提供了两个示例项目。我不确定的是在扫描过程中获取制造商特定数据。现在我正在连接设备以获取某些信息,如果我可以阅读制造商特定数据则不需要这些信息。 Qt的BLE目前只支持central role
Qt 基于 C++,如果这对您很重要的话。