I am developig mobile application using react native.Application has to connect iot device using ble.I used react-native-ble-plx library.In this library i used startDeviceScan function of this library.But function does not work.I will share my code.Can anyone help my quesiton?
HomeScreen.js
import React, { useState, useEffect } from 'react';
import { Text, View, Button, StyleSheet, SafeAreaView, TouchableOpacity } from 'react-native';
import useBLE from '../../connections/BLE/useBle';
import { Device,BleManager } from 'react-native-ble-plx';
import DeviceModal from '../../../DeviceConnectionModal';
const HomeScreen = () => {
const _BleManager = new BleManager();
const startScan = () => {
console.log("clicked scan button");
_BleManager.startDeviceScan(null, {
allowDuplicates: false,
},
async (error, device) => {
console.log("scanning....");
if (error) {
_BleManager.stopDeviceScan();
}
console.log(device.localName, device.name);
if (device.localName == 'Test' || device.name == 'Test') {
// setDevices([...devices, device]);
_BleManager.stopDeviceScan();} }, );};
return (
<SafeAreaView style={styles.container}>
<View style={styles.heartRateTitleWrapper}>
<Text style={styles.heartRateTitleText}>
Please Connect to a Heart Rate Monitor
</Text>
</View>
<TouchableOpacity
onPress={startScan}
style={styles.ctaButton}
>
<Text style={styles.ctaButtonText}>
{"Scan Devices"}
</Text>
</TouchableOpacity>
</SafeAreaView>
)
}
export default HomeScreen
And also I added my android manifes file to these lines:
AndroidManifest.xml
<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.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation"/>
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>