Skip to content

Device power save mode monitoring for React Native iOS and Android

License

Notifications You must be signed in to change notification settings

xforcarlos/react-native-power-save-mode

Repository files navigation

react-native-power-save-mode

React Native module for detecting and monitoring power save mode on Android & ios devices.

Installation

Install the package using npm or yarn:

npm install react-native-power-save-mode

or

yarn add react-native-power-save-mode

Linking Automatic linking (React Native 0.60 and higher) The package should link automatically after installation. If not, run:

npx react-native link react-native-power-save-mode

Manual linking (React Native lower than 0.60) In android/app/build.gradle, make sure to include:

dependencies {
    implementation project(':react-native-power-save-mode')
    // Other dependencies
}

Update the settings.gradle file to include the following:

include ':react-native-power-save-mode'
project(':react-native-power-save-mode').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-power-save-mode/android')

In your MainApplication.java, register the package:

import com.powersavemode.PowerSaveModePackage; // Import the package

// Add `new PowerSaveModePackage()` to the list of packages
@Override
protected List<ReactPackage> getPackages() {
    return Arrays.asList(
        new MainReactPackage(),
        new PowerSaveModePackage() // Add this line
    );
}

Example usage in a React component

import * as React from 'react';
import { useEffect, useState } from 'react';
import { StyleSheet, View, Text } from 'react-native';
import { isPowerSaveModeEnabled, addPowerSaveModeListener } from 'react-native-power-save-mode';

export default function App() {
  const [powerSaveMode, setPowerSaveMode] = useState(false);

  useEffect(() => {
    const checkPowerSaveMode = async () => {
      const isEnabled = await isPowerSaveModeEnabled();
      setPowerSaveMode(isEnabled);
    };

    checkPowerSaveMode();

    const subscription = addPowerSaveModeListener((data) => {
      setPowerSaveMode(data?.isPowerSaveMode);
    });

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

  return (
    <View style={[styles.container, { backgroundColor: powerSaveMode ? 'blue' : 'red' }]}>
      <Text>Power Save Mode: {powerSaveMode ? 'Enabled' : 'Disabled'}</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
  },
});

License MIT License. See the LICENSE file for details.

About

Device power save mode monitoring for React Native iOS and Android

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published