BtlePlug es una biblioteca Async Rust BLE, que admite Windows 10, MacOS, Linux, iOS y Android (incluido Flutter, vea a continuación para obtener más información).
Creció de varias bibliotecas anteriores abandonadas para varias plataformas (Rumble, Blurmac, etc.), con el objetivo de construir una biblioteca de plataforma completamente cruzada. Si tiene curiosidad sobre cómo creció la biblioteca, puede leer más sobre eso en esta publicación de blog.
BtlePlug está destinado a ser solo el modo host/central . Si está interesado en BTLE periférico (es decir, actuar como un dispositivo Bluetooth LE en lugar de conectarse a uno), consulte la bluster o la raya periférica.
Esta biblioteca no admite Bluetooth 2/Classic . No hay planes para agregar soporte BT2/clásico.
| Característica | Windows | MacOS / iOS | Linux | Androide |
|---|---|---|---|---|
| Atar adaptador | incógnita | incógnita | incógnita | incógnita |
| Manejar múltiples adaptadores | incógnita | |||
| Descubrir dispositivos | incógnita | incógnita | incógnita | incógnita |
| └ Descubre servicios | incógnita | incógnita | incógnita | incógnita |
| └ Descubre características | incógnita | incógnita | incógnita | incógnita |
| └ Descubre descriptores | incógnita | incógnita | incógnita | incógnita |
| └ Descubre el nombre | incógnita | incógnita | incógnita | incógnita |
| └ Descubra datos del fabricante | incógnita | incógnita | incógnita | incógnita |
| └ Descubra datos de servicio | incógnita | incógnita | incógnita | incógnita |
| └ Descubra la dirección MAC | incógnita | incógnita | incógnita | |
| Connect de servidor GATT | incógnita | incógnita | incógnita | incógnita |
| Evento de conexión del servidor GATT | incógnita | incógnita | incógnita | incógnita |
| Desconectación del servidor GATT | incógnita | incógnita | incógnita | incógnita |
| Evento de desconexión del servidor GATT | incógnita | incógnita | incógnita | incógnita |
| Escribir a la característica | incógnita | incógnita | incógnita | incógnita |
| Leer de características | incógnita | incógnita | incógnita | incógnita |
| Suscribirse a la característica | incógnita | incógnita | incógnita | incógnita |
| Dar la baja de la característica | incógnita | incógnita | incógnita | incógnita |
| Obtener evento de notificación característica | incógnita | incógnita | incógnita | incógnita |
| Leer descriptor | incógnita | incógnita | incógnita | incógnita |
| Escribir descriptor | incógnita | incógnita | incógnita | incógnita |
| Recuperar MTU | ||||
| Recuperar el intervalo de conexión |
Para habilitar la implementación de Serialize y Deserialize de Serde en algunos tipos comunes en el módulo api , use la función serde .
[ dependencies ]
btleplug = { version = " 0.11 " , features = [ " serde " ] } Para usar Bluetooth en MacOS Big Sur (11) o posterior, debe empaquetar su binario en un paquete de aplicaciones con una Info.plist . La placa, incluida NSBluetoothAlwaysUsageDescription , o (para una aplicación de línea de comandos, como los ejemplos incluidos con btleplug ), habilite el Permiso Bluetooth para su terminal. Puede hacer esto último yendo a preferencias del sistema → Seguridad y privacidad → Privacidad → Bluetooth , haciendo clic en el botón '+' y seleccionando 'Terminal' (o ITerm o cualquier aplicación de terminal que use).
Debido a requerir una construcción de óxido híbrido/Java, BtlePlug para Android requiere una configuración algo complicada.
Alguna información sobre cómo realizar la compilación está disponible en el tema original para el soporte de Android en BTLPLUG.
Una visión general rápida del proceso de compilación:
src/droidplug/java , utilizando los archivos de Gradle incluidos, y ellos a un repositorio maven, o que la parte Java de su aplicación Android apunte a eso como una implementación local.cargo-ndk para construir. Extiende los jnilibs y asegúrese de que terminen en el lugar correcto en su aplicación.La optimización de proguard puede ser un problema cuando se usa BTlePlug, ya que el archivo .aar generado por el código Java en BtlePlug solo se accede por código nativo, y puede optimizarse como parte de la eliminación del código muerto y la reducción de recursos. Para solucionar esto, deberán realizarse cambios en su archivo Build.gradle, y las reglas Proguard deberán definirse.
Para construir.gradle:
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs . debug
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile( ' proguard-android-optimize.txt ' ), ' proguard-rules.pro '
}
}proguard-rules.pro:
#Flutter Wrapper - Only needed if using flutter
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
#btleplug resources
-keep class com.nonpolynomial.** { *; }
-keep class io.github.gedgygedgy.** { *; }
Como la implementación de CoreBluetooth se comparte entre macOS e iOS, Btleplug en iOS debería "solo funcionar", y parece ser estable. La forma en que esto se construye puede variar según la configuración de su aplicación y a qué idioma está vinculante, pero las instrucciones de muestra son las siguientes (tomadas desde aquí):
También hay algunos ejemplos en la cuña Flutter que se enumeran a continuación.
Si bien no admitimos específicamente Flutter, hay un repositorio de plantilla disponible en https://github.com/trobanga/flutter_btleplug. Esta plantilla tiene compilaciones tanto para Android como para iOS usando BtlePlug.
Como la compilación de Flutter tiende a ser compleja en todas las plataformas, no podemos evitar que Flutter construya problemas.
Si bien no admitimos específicamente Tauri, hay un complemento disponible en https://github.com/mnlphlp/tauri-plugin-lec. Tenga en cuenta que todas las preguntas de Tauri deben ir al repositorio de complementos antes de venir aquí, no podemos evitar problemas de Tauri, ya que ninguno de los desarrolladores de este proyecto usa Tauri.
Todos tienen diferentes necesidades de Bluetooth, por lo que si Btleplug no se ajusta a las suyas, ¡pruebe estas otras bibliotecas por la comunidad de Rust!
BtlePlug está cubierto por una licencia BSD 3 Cláusula, con algunas partes de Rumble/Blurmac cubiertos por la licencia Dual MIT/Apache, y las licencias de 3 cláusulas BSD, respectivamente. Consulte License.md para obtener más información e información de derechos de autor.