BtlePlug adalah perpustakaan Async Rust BLE, mendukung Windows 10, MacOS, Linux, iOS, dan Android (termasuk Flutter, lihat di bawah untuk info lebih lanjut).
Itu tumbuh dari beberapa perpustakaan sebelumnya yang ditinggalkan untuk berbagai platform (Rumble, Blurmac, dll ...), dengan tujuan membangun perpustakaan platform yang sepenuhnya. Jika Anda ingin tahu tentang bagaimana perpustakaan tumbuh, Anda dapat membaca lebih lanjut tentang itu di posting blog ini.
BtlePlug dimaksudkan untuk menjadi host/mode pusat saja . Jika Anda tertarik pada BLTE periferal (yaitu bertindak seperti perangkat Bluetooth LE alih-alih menghubungkan ke satu), lihat bluster atau ble-peripheral-rust.
Perpustakaan ini tidak mendukung Bluetooth 2/Classic . Tidak ada rencana untuk menambahkan dukungan BT2/klasik.
| Fitur | Windows | MacOS / iOS | Linux | Android |
|---|---|---|---|---|
| Bawa adaptor | X | X | X | X |
| Menangani banyak adaptor | X | |||
| Temukan perangkat | X | X | X | X |
| └ Temukan layanan | X | X | X | X |
| └ Temukan karakteristik | X | X | X | X |
| └ Temukan deskriptor | X | X | X | X |
| └ Temukan nama | X | X | X | X |
| └ Temukan data pabrikan | X | X | X | X |
| └ Temukan Data Layanan | X | X | X | X |
| └ Temukan alamat MAC | X | X | X | |
| Gatt Server Connect | X | X | X | X |
| Acara Gatt Server Connect | X | X | X | X |
| Gatt Server memutuskan | X | X | X | X |
| Acara Putus Server Gatt | X | X | X | X |
| Menulis ke karakteristik | X | X | X | X |
| Baca dari karakteristik | X | X | X | X |
| Berlangganan karakteristik | X | X | X | X |
| Berhenti berlangganan dari karakteristik | X | X | X | X |
| Dapatkan Acara Pemberitahuan Karakteristik | X | X | X | X |
| Baca deskriptor | X | X | X | X |
| Tulis deskriptor | X | X | X | X |
| Ambil MTU | ||||
| Mengambil interval koneksi |
Untuk mengaktifkan implementasi SERDE's Serialize dan Deserialize di beberapa jenis umum dalam modul api , gunakan fitur serde .
[ dependencies ]
btleplug = { version = " 0.11 " , features = [ " serde " ] } Untuk menggunakan Bluetooth pada MacOS Big Sur (11) atau lebih baru, Anda perlu mengemas biner Anda ke dalam bundel aplikasi dengan Info.plist termasuk NSBluetoothAlwaysUsageDescription , atau (untuk aplikasi baris perintah seperti contoh yang disertakan dengan btleplug ) memungkinkan izin Bluetooth untuk terminal Anda. Anda dapat melakukan yang terakhir dengan pergi ke preferensi sistem → Keamanan & Privasi → Privasi → Bluetooth , mengklik tombol '+', dan memilih 'Terminal' (atau ITERM atau aplikasi terminal mana pun yang Anda gunakan).
Karena membutuhkan build karat/java hibrida, BtlePlug untuk Android membutuhkan pengaturan yang agak rumit.
Beberapa informasi tentang melakukan build tersedia dalam edisi asli untuk dukungan Android di BTLPLUG.
Tinjauan cepat proses pembangunan:
src/droidplug/java , menggunakan file gradle yang disertakan, dan mereka ke repo Maven, atau memiliki bagian Java dari aplikasi Android Anda menunjukkan sebagai implementasi lokal.cargo-ndk untuk membangun. Keluaran Jnilibs dan pastikan mereka berakhir di tempat yang tepat di aplikasi Anda.Optimalisasi Proguard dapat menjadi masalah saat menggunakan BtlePlug, karena file .aar yang dihasilkan oleh kode Java di BtlePlug hanya diakses oleh kode asli, dan dapat dioptimalkan sebagai bagian dari penghapusan kode mati dan penyusutan sumber daya. Untuk memperbaikinya, perubahan perlu dilakukan pada file build.gradle Anda, dan aturan proguard perlu ditentukan.
Untuk 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.** { *; }
Karena implementasi CoreBluetooth dibagi antara macOS dan iOS, BtlePlug di iOS harus "hanya bekerja", dan tampaknya stabil. Bagaimana ini dibangun dapat bervariasi berdasarkan pengaturan aplikasi Anda dan bahasa apa yang Anda ikat, tetapi instruksi sampel adalah sebagai berikut (diambil dari sini):
Ada juga beberapa contoh dalam shim flutter yang tercantum di bawah ini.
Meskipun kami tidak secara khusus mendukung Flutter, ada repo template yang tersedia di https://github.com/trobanga/flutter_btleplug. Template ini memiliki build untuk Android dan iOS menggunakan BtlePlug.
Karena kompilasi flutter cenderung rumit di seluruh platform, kami tidak dapat membantu dengan masalah pembuatan flutter.
Meskipun kami tidak secara khusus mendukung Tauri, ada plugin yang tersedia di https://github.com/mnlphlp/tauri-plugin-blec. Harap dicatat bahwa semua pertanyaan Tauri harus masuk ke repo plugin sebelum datang ke sini, kami tidak dapat membantu dengan masalah Tauri karena tidak ada pengembang proyek ini yang menggunakan Tauri.
Setiap orang memiliki kebutuhan Bluetooth yang berbeda, jadi jika BtlePlug tidak cocok dengan Anda, cobalah perpustakaan lain oleh komunitas karat!
BtlePlug dicakup dalam lisensi BSD 3-Clause, dengan beberapa bagian dari Rumble/Blurmac yang dibahas dalam lisensi MIT/Apache Dual, dan lisensi BSD 3-Clause, masing-masing. Lihat lisensi.md untuk info lebih lanjut dan informasi hak cipta.