React Native library to monitor and manage bluetooth state. Monitoring the bluetooth state works cross-plaform (iOS & Android).
V2 introduced new Hooks API!
$ npm install react-native-bluetooth-status --save
On RN 0.60+ with autolinking run pod install
in your ios/
folder.
$ react-native link react-native-bluetooth-status
Manual installation on older RN versions
- In XCode, in the project navigator, right click
Libraries
➜Add Files to [your project's name]
- Go to
node_modules
➜react-native-bluetooth-status
and addRNBluetoothManager.xcodeproj
- In XCode, in the project navigator, select your project. Add
libRNBluetoothManager.a
to your project'sBuild Phases
➜Link Binary With Libraries
- Run your project (
Cmd+R
)<
- Open up
android/app/src/main/java/[...]/MainApplication.java
1.1 Add import com.solinor.bluetoothstatus.RNBluetoothManagerPackage;
to the imports at the top of the file
1.2 Add new RNBluetoothManagerPackage()
to the list returned by the getPackages()
method in that file
Note: If you add it to the end of the list it should look something like this:
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(), // Note the addtional comma needed for the original last item in the list
new RNBluetoothManagerPackage() // For https://github.com/solinor/react-native-bluetooth-status
);
}
- Append the following lines to
android/settings.gradle
:include ':react-native-bluetooth-status' project(':react-native-bluetooth-status').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-bluetooth-status/android')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:compile project(':react-native-bluetooth-status')
import { useBluetoothStatus } from 'react-native-bluetooth-status';
...
const [btStatus, btGranted, isPending, setBluetooth] = useBluetoothStatus();
return (
{!isPending && <Text>{btStatus ? 'On' : 'Off'}</Text>}
{!isPending && <Text>{btGranted ? 'Granted' : 'Denied'}</Text>}
<Button title="Toggle BT" onPress={() => setBluetooth(!btStatus)} />
)
Variable | Description |
---|---|
btStatus | Current bluetooth status. Starts undefined, but updated asynchronously right away. Updated automatically if status changes. |
btGranted | Current bluetooth permission granted status. Starts undefined, but updated asynchronously right away. Updated automatically if status changes. |
isPending | Starts at true and after getting first Bluetooth status, is set to false. Helps to know when btStatus is not undefined anymore. |
setBluetooth | Function to set the bluetooth status. On android it can be toggled on / off using a boolean parameter. On iOS this method can be used to prompt for permission and/or enable bluetooth. |
import { BluetoothStatus } from 'react-native-bluetooth-status';
...
async getBluetoothState() {
const isEnabled = await BluetoothStatus.state();
}
For further usage examples, see the example project using this library.
Method | Description |
---|---|
state | Returns a promise, which will return a boolean value, true if bluetooth is available, false if unavailable. |
addListener | Takes function parameter, which will be run when BT status changes, with the new BT on/off status (true / false). |
removeListener | Removes listener. |
enable | Function to set the bluetooth status. On android it can be toggled on / off using a boolean parameter. On iOS this method can be used to prompt for permission and/or enable bluetooth. |
disable | Android only Disables bluetooth, same end result as calling enable(false) . |