Control Screen Brightness
This is an Example to Control Device Brightness from React Native App using react-native-screen-brightness for Android and IOS. You generally do it in your day-to-day life but what if you can control the brightness from your own application? Yes, you can do that with the help of the react-native-screen-brightness library.
You can see the use of a screen control feature if you have ever used any UPI or payment transaction app, where you need to scan the QR code for the payment. While scanning the QR code the brightness should be high so that the QR code will become more clear other to scan. In this case, you need a screen brightness control feature to provide a better user experience.
To Set the Brightness of the Screen
While using react-native-screen-brightness
you can change the screen brightness using
DeviceBrightness.setBrightnessLevel(0.2);
Note:
- In the case of IOS, the Min brightness value is 0, and the Max brightness value is 1.
- In the case of Android, the Min brightness value is 0, and the Max brightness value is 255.
To Get the Brightness of the Device
To get the Screen brightness at any point you can use
const brightness = await DeviceBrightness.getBrightnessLevel();
For this example, We are going to use a Slider component which will change the brightness value, and a button to get the brightness value. So let’s get started.
To Make a React Native App
Getting started with React Native will help you to know more about the way you can make a React Native project. We are going to use react native command line interface to make our React Native App.
If you have previously installed a global react-native-cli package, please remove it as it may cause unexpected issues:
npm uninstall -g react-native-cli @react-native-community/cli
Run the following commands to create a new React Native project
npx react-native init ProjectName
If you want to start a new project with a specific React Native version, you can use the --version argument:
npx react-native init ProjectName --version X.XX.X
Note If the above command is failing, you may have old version of react-native
or react-native-cli
installed globally on your pc. Try uninstalling the cli and run the cli using npx.
This will make a project structure with an index file named App.js in your project directory.
Installation of Dependencies
To use Slider
and DeviceBrightness
component we need to install react-native-community/slider
and @adrianso/react-native-device-brightness
dependencies.
To install this open the terminal and jump into your project using
cd ProjectName
Run the following command to install
npm install --save @adrianso/react-native-device-brightness
npm install --save @react-native-community/slider
This command will copy all the dependencies into your node_module directory.
CocoaPods Installation
Please use the following command to install CocoaPods
npx pod-install
Android Runtime Permission
Open the manifest file of your Android project and add
<uses-permission
android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions"
/>
Also, update your manifest params and include xmlns:tools
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.baseproject"
xmlns:tools="http://schemas.android.com/tools">
Code
Now Open App.js in any code editor and replace the code with the following code
App.js
// Control Device Brightness from React Native App
// https://aboutreact.com/react-native-screen-brightness/
// import React in our code
import React, {useState, useEffect} from 'react';
// import all the components we are going to use
import {
SafeAreaView,
StyleSheet,
Text,
View,
TouchableOpacity,
} from 'react-native';
//Import Screen brightness control library
import DeviceBrightness from '@adrianso/react-native-device-brightness';
//Import Slider to change the brightness
import Slider from '@react-native-community/slider';
const App = () => {
const [brightness, setBrightness] = useState(0.2);
useEffect(() => {
DeviceBrightness.setBrightnessLevel(brightness);
}, []);
const getBrightness = async () => {
const brightness = await DeviceBrightness.getBrightnessLevel();
alert('brightness ' + brightness);
};
return (
<SafeAreaView style={styles.container}>
<View>
<Text style={styles.titleText}>
Control Device Brightness from React Native App
</Text>
<Text style={styles.textStyle}>
Current Brightness: {'\n'} {brightness}
</Text>
{/*Slider with max, min, step and initial value*/}
<Slider
maximumValue={1}
minimumValue={0}
minimumTrackTintColor="#307ecc"
maximumTrackTintColor="#000000"
step={0.1}
value={brightness}
onValueChange={(brightness) => {
setBrightness(brightness);
DeviceBrightness.setBrightnessLevel(brightness);
}}
/>
<TouchableOpacity
activeOpacity={0.7}
style={styles.buttonStyle}
onPress={getBrightness}>
<Text style={styles.buttonTextStyle}>
Get Current Brightness Value
</Text>
</TouchableOpacity>
</View>
</SafeAreaView>
);
};
export default App;
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: 'white',
padding: 10,
},
titleText: {
fontSize: 22,
textAlign: 'center',
fontWeight: 'bold',
},
textStyle: {
fontSize: 16,
color: 'black',
padding: 10,
},
buttonStyle: {
justifyContent: 'center',
marginTop: 15,
padding: 10,
backgroundColor: '#8ad24e',
marginRight: 2,
marginLeft: 2,
},
buttonTextStyle: {
color: '#fff',
textAlign: 'center',
},
});
To Run the React Native App
Open the terminal again and jump into your project using.
cd ProjectName
1. Start Metro Bundler
First, you will need to start Metro, the JavaScript bundler that ships with React Native. To start Metro bundler run following command:
npx react-native start
Once you start Metro Bundler it will run forever on your terminal until you close it. Let Metro Bundler run in its own terminal. Open a new terminal and run the application.
2. Start React Native Application
To run the project on an Android Virtual Device or on real debugging device:
npx react-native run-android
or on the iOS Simulator by running (macOS only)
npx react-native run-ios
Output Screenshots
IOS
Android
Known issue with Android devices
If you run the app on your android device you will see this yellow box.
which shows “Unable to set system brightness” because you have no permission to change the system settings. To solve this issue Open the Settings option of your device > Apps & Notifications > App > Search for the YourApplicationName and open the app info by clicking on it.
In the last of the Info, you will see Write system settings click on it and switch it on. Now you are good to go. Open your App again and try, It should work now. 🙂
This is how you can Control Device Brightness from React Native App using react-native-screen-brightness for Android and IOS. If you have any doubts or you want to share something about the topic you can comment below or contact us here. There will be more posts coming soon. Stay tuned!
Hope you liked it. 🙂