Skip to content

Helps to find your surrounding's light value (for android only) using device light sensor

License

Notifications You must be signed in to change notification settings

Cshayan/react-native-ambient-light-sensor

Repository files navigation

react-native-ambient-light-sensor

Helps to find your surrounding's light value (in lux unit) (for android only) using device light sensor

Installation

npm install react-native-ambient-light-sensor

Usage

import { hasLightSensor, startLightSensor, stopLightSensor } from 'react-native-ambient-light-sensor';
import { View, Text, DeviceEventEmitter } from 'react-native';

// ...

export default function App() {
  const [result, setResult] = React.useState<number | undefined>();
  const [hasSensor, setHasSensor] = React.useState<boolean>();

  useEffect(() => {
      hasLightSensor().then(setHasSensor);
      startLightSensor();
      
      const subscription = DeviceEventEmitter.addListener(
        'LightSensor',
        (data: { lightValue: number }) => {
            setResult(data.lightValue);
        },
    );

    return () => {
        stopLightSensor();
        subscription?.remove();
    };
  }, []);

  return (
    <View>
      <Text>Device has sensor: {hasSensor ? 'YES' : 'NO'}. Light Result Value: {result}</Text>
    </View>
  );
}

Use case

You can apply any logic of your own based on the surrounding's light condition. For example, to auto turn on your device's flash/torch light if the surrounding environment is dark/dim.

Important Note

The primary sensor data type for ambient light sensors is illuminance in lux (lumens per square meter). Use the data from below table to find and apply logic to your application accordingly.

The following example data set represents rough thresholds for common lighting conditions, and the corresponding lighting step. Here, each lighting step represents a change in lighting environment.

Lighting condition From (lux) To (lux)
Pitch Black 0 10
Very Dark 11 50
Dark Indoors 51 200
Dim Indoors 201 400
Normal Indoors 401 1000
Bright Indoors 1001 5000
Dim Outdoors 5001 10,000
Cloudy Outdoors 10,001 30,000
Direct Sunlight 30,001 100,000
Note: This data set is for illustration and may not be completely accurate for all users or situations.

Want to know more about its implementation

Check out the article - https://medium.com/@shayanchatterjee7/creating-a-surrounding-light-sensor-module-for-android-device-in-react-native-6a0f9fa7d13e

NPM Package

Checkout the npm package of it - https://www.npmjs.com/package/react-native-ambient-light-sensor

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT


Made with create-react-native-library