react-native-wakeful
v0.1.0
Published
React Native module for holding the android's `PowerManager.WakeLock` and `WifiManager.WifiLock`.
Downloads
13
Maintainers
Readme
react-native-wakeful
React Native module for holding the android's PowerManager.WakeLock
and WifiManager.WifiLock
.
Installation
First install the npm package from your app directory:
npm install react-native-wakeful --save
Then link it automatically using:
react-native link react-native-wakeful
Manual Installation on Android
This is not necessary if you have used react-native link
Edit android/settings.gradle
to declare the project directory:
include ':react-native-wakeful'
project(':react-native-wakeful').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-wakeful/android')
Edit android/app/build.gradle
to declare the project dependency:
dependencies {
...
compile project(':react-native-wakeful')
}
Edit android/app/src/main/java/.../MainApplication.java
to register the native module:
...
import com.ironsmile.RNWakeful.RNWakefulPackage; // <-- New
...
public class MainApplication extends Application implements ReactApplication {
...
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new RNWakefulPackage() // <-- New
);
}
For older versions of React Native you need to edit MainActivity.java
instead:
...
import com.ironsmile.RNWakeful.RNWakefulPackage; // <-- New
...
public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler {
...
@Override
protected void onCreate(Bundle savedInstanceState){
...
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
...
.addPackage(new MainReactPackage())
.addPackage(new RNWakefulPackage()) // <-- New
...
}
Basic usage
Make sure you request the android.permission.WAKE_LOCK permission in an element of the application's manifest. In your project's android/app/src/main/AndroidManifest.xml
add the following:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
Then you can use the Wakeful module this way:
import Wakeful from 'react-native-wakeful';
let wakeful = new Wakeful();
wakeful.acquire();
// Do your stuff
wakeful.release();
API
The wakeful class has the following methods:
void acquire()
- will acquire both the WifiLock and WakeLockvoid release()
- will release both the WifiLock and WakeLockbool isHeld()
-true
when the locks are held andfalse
otherwise
Double-acquires and double-releases are not a problem. They are considered as no-ops.
Non Android platforms
This module can be installed to non Android platforms and then all of its operations would be simulated. So you can safely install it in a multi-platform project and it would not cause you build or runtime errors.