/react-native-system-setting

A library to access system setting, and change it easily. eg: volume, brightness, wifi

Primary LanguageJavaMIT LicenseMIT

react-native-system-setting

It provides some system setting APIs for you. Support iOS and Android both.

Support

  • Volume ( with listener)
  • Brightness
  • Wifi switch
  • Location
  • Bluetooth

Next

  • System info

Note

Example only work in the real device

Change Log

Change Log

Look like

I really want to show the .gif, while it has no difference with .jpg for some system limit.

I strongly recommend you to run the example in real device to see how it works.

   

Install

Run npm i -S react-native-system-setting

iOS

Run react-native link to link this library.

Android

Run react-native link to link this library.

That's all.

If link does not work, you can do it manually. Just follow this way:

android/settings.gradle

include ':react-native-system-setting'
project(':react-native-system-setting').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-system-setting/android')

android/app/build.gradle

dependencies {
   ...
   compile project(':react-native-system-setting')
}

MainApplication.java

On top, where imports are:

import com.ninty.system.setting.SystemSettingPackage;

Add the SystemSettingPackage class to your list of exported packages.

@Override
protected List<ReactPackage> getPackages() {
    return Arrays.asList(
            new MainReactPackage(),
            new SystemSettingPackage()
    );
}

Usage

Common import

import SystemSetting from 'react-native-system-setting'

volume

//get the current volume
SystemSetting.getVolume().then((volume)=>{
    console.log('Current volume is ' + volume);
});

// change the volume
SystemSetting.setVolume(0.5);

// listen the volume changing if you need
const volumeListener = SystemSetting.addVolumeListener((data) => {
    const volume = data.value;
    console.log(volume);
});

//remove listener when you need it no more
SystemSetting.removeVolumeListener(volumeListener)       

brightness

//get the current brightness
SystemSetting.getBrightness().then((brightness)=>{
    console.log('Current brightness is ' + brightness);
});

//change the brightness
SystemSetting.setBrightnessForce(0.5);

// save the value of  brightness and screen mode.
SystemSetting.saveBrightness();
// restore the brightness and screen mode. you can get the old brightness value.
SystemSetting.restoreBrightness().then((oldVal)=>{
    //if you need
})

Wifi

SystemSetting.isWifiEnabled().then((enable)=>{
    const state = enable ? 'On' : 'Off';
    console.log('Current wifi is ' + state);
})

SystemSetting.switchWifi(()=>{
    console.log('switch wifi successfully');
})

Location

SystemSetting.isLocationEnabled().then((enable)=>{
    const state = enable ? 'On' : 'Off';
    console.log('Current location is ' + state);
})

SystemSetting.switchLocation(()=>{
    console.log('switch location successfully');
})

Bluetooth

SystemSetting.isBluetoothEnabled().then((enable)=>{
    const state = enable ? 'On' : 'Off';
    console.log('Current bluetooth is ' + state);
})

SystemSetting.switchBluetooth(()=>{
    console.log('switch bluetooth successfully');
})

API

API

Run example

$ cd example/SystemSettingExample
$ npm install
// if android
$ react-native run-android
// else
$ react-native run-ios

Android permission

To simplify using, I have declared all permission in AndroidManifest.xml.

And you can delete the permission safely if it's useless for you app.

You can find the file in yourProject/node_modules/react-native-system-setting/android/src/main/AndroidManifest.xml. (Be sure that you have run npm install)

These permissions are transparent in iOS, so it's ok for iOS app.

In the end

Feel free to open issue or pull request

License

MIT