react-native-ble-manager
react-native-ble-manager copied to clipboard
Cant find device
Hello This is not as much an issue as it is a request of assistance.
I am trying to create a simple react native app which scans and displays any BLE devices. my ble device is an arduino type device - seeed xiao nrf52840.
the problem is I cant seem to find it (at least according to my understanding) when I use the scan function. since im new to all this it might be an error in the display code however if possible it would mean a lot for me if you guys would take a look and perhaps give some insights.
thx in advance :)
`import React, { useEffect, useState } from 'react'; import { View, Text, FlatList, Button, PermissionsAndroid } from 'react-native'; import BleManager from 'react-native-ble-manager';
const BleScanner: React.FC = () => { const [bleDevices, setBleDevices] = useState<string[]>([]);
useEffect(() => { requestPermissions(); BleManager.enableBluetooth() BleManager.start({ showAlert: false }); return () => { BleManager.stopScan(); }; }, []);
/* const requestPermissions = async () => { try { const granted = await PermissionsAndroid.requestMultiple([ PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION, PermissionsAndroid.PERMISSIONS.BLUETOOTH_ADMIN, PermissionsAndroid.PERMISSIONS.BLUETOOTH, PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT, PermissionsAndroid.PERMISSIONS.BLUETOOTH_SCAN, ]); if ( granted['android.permission.ACCESS_FINE_LOCATION'] === PermissionsAndroid.RESULTS.GRANTED && granted['android.permission.BLUETOOTH_CONNECT'] === PermissionsAndroid.RESULTS.GRANTED && granted['android.permission.BLUETOOTH_SCAN'] === PermissionsAndroid.RESULTS.GRANTED ) { console.log('All permissions granted'); startScan(); } else { console.log('Permission denied'); } } catch (err) { console.warn(err); } }; */
const requestPermissions = async () => { try {
const grantedLocation = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION
);
const grantedBluetoothConnect = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT
);
const grantedBluetoothAdvertise = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.BLUETOOTH_ADVERTISE
);
const grantedBluetoothScan = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.BLUETOOTH_SCAN
);
/*
const grantedLocation = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION
);
const grantedBluetoothAdmin = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.BLUETOOTH_ADMIN
);
const grantedBluetooth = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.BLUETOOTH
);
const grantedBluetoothConnect = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT
);
const grantedBluetoothAdvertise = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.BLUETOOTH_ADVERTISE
);
const grantedBluetoothCoarseLocation = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.BLUETOOTH_COARSE_LOCATION
);
const grantedBluetoothScan = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.BLUETOOTH_SCAN
);
*/
if (
grantedLocation === PermissionsAndroid.RESULTS.GRANTED &&
grantedBluetoothConnect === PermissionsAndroid.RESULTS.GRANTED &&
//grantedBluetoothAdvertise === PermissionsAndroid.RESULTS.GRANTED &&
grantedBluetoothScan === PermissionsAndroid.RESULTS.GRANTED
/*
grantedLocation === PermissionsAndroid.RESULTS.GRANTED &&
grantedBluetoothAdmin === PermissionsAndroid.RESULTS.GRANTED
grantedBluetooth === PermissionsAndroid.RESULTS.GRANTED &&
grantedBluetoothConnect === PermissionsAndroid.RESULTS.GRANTED &&
grantedBluetoothAdvertise === PermissionsAndroid.RESULTS.GRANTED &&
grantedBluetoothCoarseLocation === PermissionsAndroid.RESULTS.GRANTED &&
grantedBluetoothScan === PermissionsAndroid.RESULTS.GRANTED
*/
) {
console.log('All permissions granted');
startScan();
} else {
console.log('Permission denied');
}
} catch (err) {
console.warn(err);
}
};
const startScan = () => { BleManager.scan([], 10, true).then(() => { console.log('Scan Started'); console.log(bleDevices[0]) }); };
const renderItem = ({ item }: { item: string }) => { return ( <View style={{ padding: 10 }}> <Text>{item}</Text> </View> ); };
return ( <View style={{ flex: 1, padding: 20 }}> <Button title="Start Scan" onPress={startScan} /> <FlatList data={bleDevices} renderItem={renderItem} keyExtractor={(item, index) => index.toString()} /> </View> ); };
export default BleScanner; `
note: there are a lot of notations because experimentation.