BlePlug ist eine asynchronisierte Rostbibliothek, die Windows 10, MacOS, Linux, iOS und Android unterstützt (einschließlich Flutter, siehe unten für weitere Informationen).
Es ist aus mehreren früheren verlassenen Bibliotheken für verschiedene Plattformen (Rumble, Blurmac usw.) hervorgegangen, mit dem Ziel, eine vollständig Kreuzplattformbibliothek aufzubauen. Wenn Sie neugierig sind, wie die Bibliothek gewachsen ist, können Sie in diesem Blog -Beitrag mehr darüber lesen.
Bleplug soll nur Host/Central -Modus sein. Wenn Sie an peripheren BTLE interessiert sind (dh sich wie ein Bluetooth-LE-Gerät, anstatt sich mit einem zu verbinden), lesen Sie den Stürmer oder die Ble-Peripheral-Rust.
Diese Bibliothek unterstützt Bluetooth 2/Classic nicht . Es gibt keine Pläne, BT2/Classic Support hinzuzufügen.
| Besonderheit | Fenster | MacOS / iOS | Linux | Android |
|---|---|---|---|---|
| Adapter ansprechen | X | X | X | X |
| Handeln Sie mehrere Adapter | X | |||
| Geräte entdecken | X | X | X | X |
| └ Dienste entdecken | X | X | X | X |
| └ Merkmale entdecken | X | X | X | X |
| └ Deskriptoren entdecken | X | X | X | X |
| └ Name entdecken | X | X | X | X |
| └ Herstellerdaten entdecken | X | X | X | X |
| └ Servicedaten entdecken | X | X | X | X |
| └ MAC -Adresse entdecken | X | X | X | |
| Gatt Server Connect | X | X | X | X |
| Gatt Server Connect -Ereignis | X | X | X | X |
| Gatt Server trennen Sie | X | X | X | X |
| GATT Server -Ereignis trennen | X | X | X | X |
| Schreiben Sie auf charakteristisch | X | X | X | X |
| Aus charakteristisch lesen | X | X | X | X |
| Merkmal abonnieren | X | X | X | X |
| Abbestellen von charakteristisch | X | X | X | X |
| Holen Sie sich eine charakteristische Benachrichtigungsereignis | X | X | X | X |
| Deskriptor lesen | X | X | X | X |
| Schreiben Sie Deskriptor | X | X | X | X |
| MTU abrufen | ||||
| Abrufen des Verbindungsintervalls |
Verwenden Sie die serde -Funktion, um die Implementierung der Serialize und der Deserialisierung der Serialisierung und Deserialize von SERDE über einige gemeinsame Typen im api -Modul zu ermöglichen.
[ dependencies ]
btleplug = { version = " 0.11 " , features = [ " serde " ] } Um Bluetooth auf MacOS Big Sur (11) oder später zu NSBluetoothAlwaysUsageDescription , müssen Sie Ihre Binärdatei entweder in ein Anwendungsbündel mit btleplug Info.plist packen. Letztere können Sie durch die Systemeinstellungen → Sicherheit und Privatsphäre → Privatsphäre → Bluetooth , Klicken auf die Schaltfläche '+' und die Auswahl von 'Terminal' (oder ITERM oder je nachdem, welche Terminalanwendung), anklicken.
Aufgrund eines hybriden Rost/Java -Builds benötigt Btleplug für Android ein etwas kompliziertes Setup.
Einige Informationen zur Ausführung des Builds finden Sie in der ursprünglichen Ausgabe für Android -Unterstützung in BTLPLUG.
Ein kurzer Überblick über den Build -Prozess:
src/droidplug/java unter Verwendung der mitgelieferten Gradle -Dateien und sie in ein Maven -Repo, oder lassen Sie den Java -Teil Ihrer Android -App als lokale Implementierung darauf hinweisen.cargo-ndk zum Bau zu verwenden. Wenn Sie die JNilibs ausgeben und sicherstellen, dass sie an der richtigen Stelle in Ihrer App enden.Die Proguard -Optimierung kann bei der Verwendung von BtlePlug ein Problem sein, da die vom Java -Code in BtlePlug generierte .AAR -Datei nur vom nativen Code zugegriffen werden und kann als Teil des Abtasters und der Ressourcenschrumpfung optimiert werden. Um dies zu beheben, müssen Änderungen an Ihrer BUST.Dgrode -Datei vorgenommen werden, und die Proguard -Regeln müssen definiert werden.
Für Build.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.** { *; }
Da die CoreBluetooth -Implementierung zwischen macOS und iOS geteilt wird, sollte Btleplug auf iOS "nur funktionieren" und scheint stabil zu sein. Wie dies erstellt wird, kann je nach App -Setup variieren und auf welche Sprache Sie sich verbinden. Beispielanweisungen sind jedoch wie folgt (von hier aus genommen):
Es gibt auch einige Beispiele in der unten aufgeführten Flutterscheibe.
Obwohl wir Flutter nicht speziell unterstützen, gibt es ein Vorlagen -Repo unter https://github.com/trobanga/flutter_Bleplug. Diese Vorlage enthält BTLeplug -Erstellungen für Android und iOS.
Da die Flutter -Zusammenstellung über Plattformen hinweg komplex ist, können wir nicht bei Problemen mit Flattern bauen.
Obwohl wir Tauri nicht speziell unterstützen, gibt es ein Plugin unter https://github.com/mnlplp/tauri-plugin-blec. Bitte beachten Sie, dass alle Tauri -Fragen an das Plugin -Repo gehen sollten, bevor wir hierher kommen. Wir können nicht bei Tauri -Problemen helfen, da keiner der Entwickler dieses Projekts Tauri verwenden.
Jeder hat unterschiedliche Bluetooth -Anforderungen. Wenn Bleplug nicht zu Ihrem passt, probieren Sie diese anderen Bibliotheken von der Rust -Community aus!
BTLEPLUG ist unter eine BSD-3-Klausel-Lizenz mit einigen Teilen von Rumble/Blurmac unter MIT/Apache-Dual-Lizenz bzw. BSD-3-Klausel-Lizenzen abgedeckt. Weitere Informationen und Copyright -Informationen finden Sie unter Lizenz.MD.