React Native i bluetooth
Salta a la navegació
Salta a la cerca
He provat dos codis.
1. Exemple que funciona però no he aconseguit veure els dispositius que tinc vinculats. https://github.com/innoveit/react-native-ble-manager https://www.npmjs.com/package/react-native-ble-manager recordar: dues pestanyes de la consola $ echo $PWD /home/joan/react-native-ble-manager en les dues pestanyes fem: $ export PATH=/home/joan/Baixades/jdk-11.0.11+9/bin:$PATH recordar que necessitem la versió 11 de java: $ java --version openjdk 11.0.11 2021-04-20 OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9) OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode) git clone https://github.com/innoveit/react-native-ble-manager.git $ cd react-native-ble-manager/ npm i --save react-native-ble-manager npx react-native link ===== npx react-native start npx react-native run-android ===== Instal·lació des de 0: npx react-native init prova2 cd prova2 copiar la carpeta example/ canviar a index.js la línia: import App from './example/App'; npm i --save react-native-ble-manager a les dues pestanyes: npx react-native start npx react-native run-android També, en el AndroidManifest.xml, donar aquests permisos: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> ja està (també he de fer la instrucció ''echo 999999 | sudo tee...'' per allò que es queda penjat...) MyESP32 Per utilitzar el mètode write(): // Import/require in the beginning of the file import { stringToBytes } from "convert-string"; // Convert data to byte array before write/writeWithoutResponse const data = stringToBytes(yourStringData); ... BleManager.write( peripheral.id, "4fafc201-1fb5-459e-8fcc-c5c9c331914b", "BEB5483E-36E1-4688-B7F5-EA07361B26A8", data ) ==== La interfície gràfica la desenvolupo en el prova3 ==== exemple4: repàs de react native i del tic-tac-toe $ find . -name 'index.html' ./node_modules/@react-native-community/cli-debugger-ui/build/ui/index.html ./node_modules/@react-native-community/cli-server-api/build/index.html ./node_modules/plist/examples/browser/index.html ./node_modules/stream-buffers/coverage/lcov-report/lib/index.html ./node_modules/stream-buffers/coverage/lcov-report/index.html npm install --save react-native -> crea la carpeta node-modules/, que ja hi era. Si cal l'esborrem i es torna a crear de nou npx react-native run-android La meva versió de la Android API és la 29 console.log(Platform.Version); ACCESS_FINE_LOCATION Per tal de què funcioni l'aplicació, només he de fer en el fitxer index.js: //import App from './App'; import App from "./example/App"; i funciona bé, però no hi ha manera de què trobi el dispositiu que tinc aparellat. recordem el que he fet. He creat un projecte react-native de zero (amb init, i comprovar que funciona), i he copiat la carpeta exemple. I en el fitxer index.js he dit que apunti a l'exemple de bluetooth Al final sí que troba els dispositius . La 'Mi Smart Band 4' sí que la troba, però els auriculars Aeropex (tot i que estan connectats) no hi ha manera que els trobi. I una cosa important: la localització ha d'estar engegada (important) I en canvi, en la configuració bluetooth del meu dispositiu, el Aeropex el veig com a connectat, i en canvi el Mi Band no m'apareix. És com una mica inestable. ======== https://blog.bam.tech/developer-news/make-your-first-iot-react-native-application-with-the-bluetooth-low-energy npm i --save react-native-ble-plx Finalment la solució: I went to Settings > Apps and notifications > App permissions > Location Permissions and my app was turned off for some reason. Turning it on resolved the problem. Aplicacions > Permisos > Permisos > Ubicació > Permet mentre s'utilitza l'aplicació i si dic <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> vol dir que el GPS també ha d'estar arrencat.
creat per Joan Quintana Compte, juny 2021