React Native i bluetooth
La revisió el 06:58, 2 juny 2022 per Joan (discussió | contribucions)
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 (el AndroidManifest.xml és dins de src/main/):
<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