mvvmcross.plugin.ble和plugin.ble均用于蓝牙低能(BLE)设备发现,但根据其体系结构和实现,它们以不同的方式处理此过程。
mvvmcross.plugin.ble
mvvmcross.plugin.ble旨在在MVVMCross框架内工作,提供了一种结构化方法来发现设备的发现。它将``Ibluetoothle''和`iAdapter''注册为懒惰的单例,使开发人员可以在其视图模型或其他组件中解决这些服务。该插件支持Android,iOS,MacOS和Windows平台。
要使用mvvmcross.plugin.ble发现设备,您通常使用`crossbluetoothle.current.adapter`访问适配器。但是,插件文档中未明确详细介绍扫描或发现设备的特定方法。取而代之的是,它依赖于基于Xamarin的项目中通常使用的基础“ Crossbluetoothle”实现。
该插件允许您检查蓝牙状态并收听状态更改,这对于基于当前蓝牙状态的设备发现很有用。对于实际扫描,您通常会使用类似于香草“ CrossBluetoothle”实现的方法,例如访问适配器并使用其方法开始扫描。
plugin.ble(crossbluetoothle)
Plugin.ble通常称为CrossBluetoothle,是一个更通用的插件,用于访问包括Android和iOS在内的多个平台上的BLE功能。它提供了一种直接的方法,可以使用`crossbluetoothle.current.adapter'开始扫描来发现BLE设备。
要发现具有CrossBluetoothle的设备,您通常会使用适配器的方法启动扫描。该插件支持发现所有广告设备,具有特定广告服务的设备或与自定义过滤器匹配的设备。发现设备后,您可以连接到它们,探索他们的服务和特征,并执行读/写操作或订阅通知。
在设备发现方面,与mvvmcross.plugin.ble相比,CrossBluetoothle对扫描过程提供了更直接的控制。它允许开发人员指定过滤器,以发现具有特定服务或特性的设备,从而使其对于需要与各种BLE设备进行交互的应用程序更具用途。
## 比较
- 架构:MVVMCross.plugin.ble是专门设计用于MVVMCross框架中的,提供可以注入视图模型的服务。 Plugin.ble(CrossBluetoothle)更通用,可用于任何基于Xamarin的项目。
- 设备发现:两个插件都依赖于基础BLE实现进行设备发现。但是,CrossBluetoothle可以更直接访问扫描方法和过滤器,从而更容易自定义发现过程。 mvvmcross.plugin.ble的文档未明确详细介绍扫描方法,这表明它可能依靠开发人员使用基础的CrossBluetOthle功能。
- 平台支持:两个插件都支持Android和iOS,但是mvvmcross.plugin.ble也提到了对MacOS和Windows的支持,这可能对针对这些平台的跨平台应用程序有益。
总而言之,尽管两个插件都启用了ble设备发现,但mvvmcross.plugin.ble更与MVVMCross框架集成在一起,并且可能需要其他设置或依赖扫描的CrossBluetOthle功能。 Plugin.ble(CrossBluetoothle)提供了一种更直接的方法,可以直接访问扫描方法和过滤器。
引用:[1] https://www.nuget.org/packages/mvvmcross.plugin.ble/
[2] https://github.com/don/cordova-plugin-ble-central
[3] https://github.com/xabre/xamarin-bluetooth-le/issues/524
[4] https://github.com/mrozema/xamarin-bluetooth-le
[5] https://developer.android.com/develop/connectivition/bluetooth/ble/find-ble-devices
[6] https://punchthrough.com/ble-connectivity-Architecture/
[7] https://smstuebe.de/2016/05/13/blev1.0/
[8] https://github.com/dotnet-bluetooth-le/dotnet-bluetooth-le
[9] https://stackoverflow.com/questions/38327176/xamarin-forms-plugins-ble-mvvmcross-plugins-ble