Btleplug เป็นไลบรารี Rust Rust Async สนับสนุน Windows 10, MacOS, Linux, iOS และ Android (รวมถึง Flutter ดูด้านล่างสำหรับข้อมูลเพิ่มเติม)
มันเติบโตขึ้นมาจากห้องสมุดที่ถูกทิ้งร้างก่อนหน้านี้หลายแห่งสำหรับแพลตฟอร์มต่าง ๆ (Rumble, Blurmac ฯลฯ ... ) โดยมีเป้าหมายในการสร้างห้องสมุดแพลตฟอร์มข้ามเต็มรูปแบบ หากคุณอยากรู้ว่าห้องสมุดเติบโตคุณสามารถอ่านเพิ่มเติมได้ในโพสต์บล็อกนี้
Btleplug มีความหมายว่าเป็น โฮสต์/โหมดกลางเท่านั้น หากคุณมีความสนใจในอุปกรณ์ต่อพ่วง (เช่นทำหน้าที่เหมือนอุปกรณ์ Bluetooth LE แทนที่จะเชื่อมต่อกับหนึ่ง) ลองดูที่ bluster หรือ bluster-peripheral-rop
ไลบรารีนี้ ไม่รองรับ Bluetooth 2/Classic ไม่มีแผนที่จะเพิ่มการสนับสนุน BT2/คลาสสิก
| คุณสมบัติ | หน้าต่าง | macOS / iOS | ลินเวกซ์ | Android |
|---|---|---|---|---|
| นำอะแดปเตอร์ขึ้นมา | x | x | x | x |
| จัดการอะแดปเตอร์หลายตัว | x | |||
| ค้นพบอุปกรณ์ | x | x | x | x |
| └ค้นหาบริการ | x | x | x | x |
| └ค้นพบลักษณะ | x | x | x | x |
| └ค้นพบคำอธิบาย | x | x | x | x |
| └ค้นพบชื่อ | x | x | x | x |
| └ค้นหาข้อมูลผู้ผลิต | x | x | x | x |
| └ค้นหาข้อมูลบริการ | x | x | x | x |
| └ค้นพบที่อยู่ MAC | x | x | x | |
| Gatt Server เชื่อมต่อ | x | x | x | x |
| เหตุการณ์ Gatt Server Connect | x | x | x | x |
| เซิร์ฟเวอร์ Gatt ตัดการเชื่อมต่อ | x | x | x | x |
| เซิร์ฟเวอร์ Gatt ตัดการเชื่อมต่อเหตุการณ์ | x | x | x | x |
| เขียนถึงลักษณะ | x | x | x | x |
| อ่านจากลักษณะเฉพาะ | x | x | x | x |
| สมัครสมาชิกลักษณะ | x | x | x | x |
| ยกเลิกการสมัครจากลักษณะเฉพาะ | x | x | x | x |
| รับเหตุการณ์การแจ้งเตือนลักษณะ | x | x | x | x |
| อ่าน descriptor | x | x | x | x |
| เขียนคำอธิบาย | x | x | x | x |
| ดึง MTU | ||||
| ดึงช่วงเวลาการเชื่อมต่อ |
ในการเปิดใช้งานการใช้ Serialize ของ Serde ของ Serde และ Deserialize ในบางประเภททั่วไปในโมดูล api ให้ใช้คุณสมบัติ serde
[ dependencies ]
btleplug = { version = " 0.11 " , features = [ " serde " ] } ในการใช้บลูทู ธ บน MacOS Big Sur (11) หรือใหม่กว่าคุณจะต้องจัดทำแพ็คเกจไบนารีของคุณลงในชุดแอปพลิเคชันที่มี Info.plist รวมถึง NSBluetoothAlwaysUsageDescription หรือ (สำหรับแอปพลิเคชันบรรทัดคำสั่งเช่นตัวอย่างที่รวมกับ btleplug ) เปิดใช้งานบลูทู ธ สำหรับเทอร์มินัลของคุณ คุณสามารถทำหลังได้โดยไปที่ การตั้งค่าระบบ → ความปลอดภัยและความเป็นส่วนตัว → ความเป็นส่วนตัว → บลูทู ธ คลิกปุ่ม '+' และเลือก 'เทอร์มินัล' (หรือ iTerm หรือแอปพลิเคชันเทอร์มินัลที่คุณใช้)
เนื่องจากต้องการการสร้าง Rust/Java แบบไฮบริด Btleplug สำหรับ Android ต้องมีการตั้งค่าที่ค่อนข้างซับซ้อน
ข้อมูลบางอย่างเกี่ยวกับการดำเนินการบิลด์มีอยู่ในฉบับดั้งเดิมสำหรับการสนับสนุน Android ใน BTLPlug
ภาพรวมอย่างรวดเร็วของกระบวนการสร้าง:
src/droidplug/java โดยใช้ไฟล์ Gradle ที่รวมอยู่และพวกเขาไปยัง repo maven หรือมีส่วน Java ของแอพ Android ของคุณชี้ไปที่การใช้งานในท้องถิ่นcargo-ndk เพื่อสร้าง ส่งออก jnilibs และตรวจสอบให้แน่ใจว่าพวกเขาลงเอยในสถานที่ที่เหมาะสมในแอปของคุณการเพิ่มประสิทธิภาพ Proguard อาจเป็นปัญหาเมื่อใช้ btleplug เนื่องจากไฟล์. AAR ที่สร้างขึ้นโดยรหัส Java ใน btleplug สามารถเข้าถึงได้ด้วยรหัสดั้งเดิมเท่านั้นและสามารถปรับให้เหมาะสมเป็นส่วนหนึ่งของการกำจัดรหัสตายและการหดตัวของทรัพยากร ในการแก้ไขปัญหานี้จะต้องมีการเปลี่ยนแปลงในไฟล์ build.gradle ของคุณและกฎ Proguard จะต้องมีการกำหนด
สำหรับ 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.** { *; }
เนื่องจากการใช้งาน CoreBluetooth ถูกใช้ร่วมกันระหว่าง macOS และ iOS, btleplug บน iOS ควร "แค่ทำงาน" และดูเหมือนว่าจะมีเสถียรภาพ วิธีการสร้างสิ่งนี้สามารถแตกต่างกันไปตามการตั้งค่าแอปของคุณและภาษาที่คุณมีผลผูกพัน แต่คำแนะนำตัวอย่างมีดังนี้ (นำมาจากที่นี่):
นอกจากนี้ยังมีตัวอย่างบางส่วนใน Shim Flutter ที่อยู่ด้านล่าง
ในขณะที่เราไม่สนับสนุนการกระพือโดยเฉพาะ แต่ก็มีการซื้อใหม่ของแม่แบบที่ https://github.com/trobanga/flutter_btleplug เทมเพลตนี้มีการสร้างสำหรับทั้ง Android และ iOS โดยใช้ btleplug
เนื่องจากการรวบรวมกระพือมีแนวโน้มที่จะซับซ้อนข้ามแพลตฟอร์มเราไม่สามารถช่วยแก้ไขปัญหาการสร้าง Flutter ได้
แม้ว่าเราจะไม่สนับสนุน Tauri โดยเฉพาะ แต่ก็มีปลั๊กอินที่ https://github.com/mnlphlp/tauri-plugin-lec โปรดทราบว่าคำถาม Tauri ทั้งหมดควรไปที่ปลั๊กอิน repo ก่อนที่จะมาที่นี่เราไม่สามารถช่วยแก้ไขปัญหา Tauri ได้เนื่องจากไม่มีนักพัฒนาโครงการนี้ใช้ Tauri
ทุกคนมีความต้องการบลูทู ธ ที่แตกต่างกันดังนั้นหาก btleplug ไม่พอดีกับคุณลองใช้ห้องสมุดอื่น ๆ เหล่านี้โดยชุมชนสนิม!
Btleplug ได้รับการคุ้มครองภายใต้ใบอนุญาต BSD 3 ข้อโดยมีบางส่วนจาก Rumble/Blurmac ครอบคลุมภายใต้ใบอนุญาต MIT/Apache Dual และใบอนุญาต BSD 3 ข้อตามลำดับ ดู License.MD สำหรับข้อมูลเพิ่มเติมและข้อมูลลิขสิทธิ์