O Btleplug é uma biblioteca de enferrujamento assíncrona, oferecendo suporte ao Windows 10, MacOS, Linux, iOS e Android (incluindo vibração, veja abaixo para obter mais informações).
Ele cresceu em várias bibliotecas abandonadas anteriores para várias plataformas (Rumble, Blurmac, etc ...), com o objetivo de construir uma biblioteca de plataforma totalmente cruzada. Se você está curioso sobre como a biblioteca cresceu, pode ler mais sobre isso nesta postagem do blog.
O Btleplug deve ser apenas o modo host/central . Se você estiver interessado em Btle periférico (ou seja, agindo como um dispositivo Bluetooth LE em vez de se conectar a um), confira o Bluster ou Ble-Periferal-Rust.
Esta biblioteca não suporta Bluetooth 2/Classic . Não há planos para adicionar suporte BT2/clássico.
| Recurso | Windows | MacOS / iOS | Linux | Android |
|---|---|---|---|---|
| Traga adaptador | X | X | X | X |
| Lidar com vários adaptadores | X | |||
| Descubra dispositivos | X | X | X | X |
| └ Descubra serviços | X | X | X | X |
| └ Descubra características | X | X | X | X |
| └ Descritores descritores | X | X | X | X |
| └ Descubra o nome | X | X | X | X |
| └ Descubra dados do fabricante | X | X | X | X |
| └ Descubra dados de serviço | X | X | X | X |
| └ Descubra o endereço MAC | X | X | X | |
| Gatt Server Connect | X | X | X | X |
| Evento de conexão do servidor Gatt | X | X | X | X |
| Gatt Server Desconect | X | X | X | X |
| Evento de desconexão do servidor gatt | X | X | X | X |
| Escreva para característica | X | X | X | X |
| Leia da característica | X | X | X | X |
| Assine a característica | X | X | X | X |
| Cancelar a inscrição da característica | X | X | X | X |
| Obtenha um evento de notificação característica | X | X | X | X |
| Leia o descritor | X | X | X | X |
| Escreva descritor | X | X | X | X |
| Recuperar MTU | ||||
| Recuperar o intervalo de conexão |
Para permitir a implementação da Serialize e Deserialize de Serde em alguns tipos comuns no módulo api , use o recurso serde .
[ dependencies ]
btleplug = { version = " 0.11 " , features = [ " serde " ] } Para usar o Bluetooth no MacOS Big Sur (11) ou posterior, você precisa empacotar seu binário em um pacote de aplicativos com uma Info.plist , incluindo NSBluetoothAlwaysUsageDescription ou (para um aplicativo de linha de comando, como os exemplos incluídos no btleplug ), habilite a permissão Bluetooth para o seu terminal. Você pode fazer o último indo a preferências do sistema → Segurança e privacidade → Privacidade → Bluetooth , clicando no botão '+' e selecionando 'Terminal' (ou Iterm ou qualquer aplicativo de terminal que você usar).
Devido à necessidade de uma compilação híbrida de ferrugem/java, o Btleplug para Android requer uma configuração um tanto complicada.
Algumas informações sobre como executar a compilação estão disponíveis na edição original para o suporte do Android no BTLPLUG.
Uma rápida visão geral do processo de construção:
src/droidplug/java , usando os arquivos gradle incluídos, e eles em um repositório do MAVEN, ou tenha a parte Java do seu aplicativo Android para isso como uma implementação local.cargo-ndk para construir. Saia dos jnilibs e verifique se eles acabam no lugar certo em seu aplicativo.A otimização de proGuard pode ser um problema ao usar o Btleplug, pois o arquivo .aar gerado pelo código Java no Btleplug é acessado apenas pelo código nativo e pode ser otimizado como parte da remoção do código morto e do encolhimento de recursos. Para corrigir isso, as alterações precisarão ser feitas no seu arquivo Build.gradle, e as regras do ProGuard precisarão ser definidas.
Para 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.** { *; }
Como a implementação do CoreBluetooth é compartilhada entre o MacOS e o iOS, o Btleplug no iOS deve "apenas trabalhar" e parece ser estável. Como isso é construído pode variar com base na configuração do seu aplicativo e em qual idioma você está vinculativo, mas as instruções da amostra são as seguintes (retiradas daqui):
Existem também alguns exemplos no Shim Flutter listado abaixo.
Embora não apoiemos especificamente o Flutter, há um repositório de modelo disponível em https://github.com/trobanga/flutter_btleplug. Este modelo possui compilações para Android e iOS usando o Btleplug.
Como a compilação do Flutter tende a ser complexa entre as plataformas, não podemos ajudar com os problemas de construção do vibração.
Embora não apoiemos especificamente Tauri, há um plug-in disponível em https://github.com/mnlphlp/tauri-plugin-blec. Observe que todas as perguntas de Tauri devem ir ao repositório do plug -in antes de vir aqui, não podemos ajudar com os problemas de Tauri, pois nenhum dos desenvolvedores deste projeto usa Tauri.
Todo mundo tem necessidades diferentes do Bluetooth; portanto, se o Btleplug não se encaixar no seu, tente essas outras bibliotecas da comunidade Rust!
O Btleplug é coberto por uma licença de 3-cláusulas BSD, com algumas peças da Rumble/Blurmac coberta pelo MIT/Apache Dual License e licenças de 3 cláusulas BSD, respectivamente. Consulte License.md para obter mais informações e informações de direitos autorais.