@ -1,12 +1,12 @@
/ *
* Copyright 2013 - 2014 Wolfgang Koller
*
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an "AS IS" BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
@ -41,6 +41,7 @@ public class PowerManagement extends CordovaPlugin {
// As we only allow one wake-lock, we keep a reference to it here
private PowerManager . WakeLock wakeLock = null ;
private PowerManager powerManager = null ;
private boolean releaseOnPause = true ;
/ * *
* Fetch a reference to the power - service when the plugin is initialized
@ -48,10 +49,10 @@ public class PowerManagement extends CordovaPlugin {
@Override
public void initialize ( CordovaInterface cordova , CordovaWebView webView ) {
super . initialize ( cordova , webView ) ;
this . powerManager = ( PowerManager ) cordova . getActivity ( ) . getSystemService ( Context . POWER_SERVICE ) ;
}
@Override
public boolean execute ( String action , JSONArray args ,
CallbackContext callbackContext ) throws JSONException {
@ -59,29 +60,35 @@ public class PowerManagement extends CordovaPlugin {
PluginResult result = null ;
Log . d ( "PowerManagementPlugin" , "Plugin execute called - " + this . toString ( ) ) ;
Log . d ( "PowerManagementPlugin" , "Action is " + action ) ;
try {
if ( action . equals ( "acquire" ) ) {
if ( args . length ( ) > 0 & & args . getBoolean ( 0 ) ) {
Log . d ( "PowerManagementPlugin" , "Only dim lock" ) ;
result = this . acquire ( PowerManager . SCREEN_DIM_WAKE_LOCK ) ;
}
else {
result = this . acquire ( PowerManager . FULL_WAKE_LOCK ) ;
}
}
else if ( action . equals ( "release" ) ) {
if ( args . length ( ) > 0 & & args . getBoolean ( 0 ) ) {
Log . d ( "PowerManagementPlugin" , "Only dim lock" ) ;
result = this . acquire ( PowerManager . SCREEN_DIM_WAKE_LOCK ) ;
}
else {
result = this . acquire ( PowerManager . FULL_WAKE_LOCK ) ;
}
} else if ( action . equals ( "release" ) ) {
result = this . release ( ) ;
} else if ( action . equals ( "setReleaseOnPause" ) ) {
try {
this . releaseOnPause = args . getBoolean ( 0 ) ;
result = new PluginResult ( PluginResult . Status . OK ) ;
} catch ( Exception e ) {
result = new PluginResult ( PluginResult . Status . ERROR , "Could not set releaseOnPause" ) ;
}
}
}
catch ( JSONException e ) {
result = new PluginResult ( Status . JSON_EXCEPTION , e . getMessage ( ) ) ;
}
callbackContext . sendPluginResult ( result ) ;
return true ;
}
/ * *
* Acquire a wake - lock
* @param p_flags Type of wake - lock to acquire
@ -89,7 +96,7 @@ public class PowerManagement extends CordovaPlugin {
* /
private PluginResult acquire ( int p_flags ) {
PluginResult result = null ;
if ( this . wakeLock = = null ) {
this . wakeLock = this . powerManager . newWakeLock ( p_flags , "PowerManagementPlugin" ) ;
try {
@ -104,46 +111,55 @@ public class PowerManagement extends CordovaPlugin {
else {
result = new PluginResult ( PluginResult . Status . ILLEGAL_ACCESS_EXCEPTION , "WakeLock already active - release first" ) ;
}
return result ;
}
/ * *
* Release an active wake - lock
* @return PluginResult containing the status of the release process
* /
private PluginResult release ( ) {
PluginResult result = null ;
if ( this . wakeLock ! = null ) {
this . wakeLock . release ( ) ;
try {
this . wakeLock . release ( ) ;
result = new PluginResult ( PluginResult . Status . OK , "OK" ) ;
}
catch ( Exception e ) {
result = new PluginResult ( PluginResult . Status . ILLEGAL_ACCESS_EXCEPTION , "WakeLock already released" ) ;
}
this . wakeLock = null ;
result = new PluginResult ( PluginResult . Status . OK , "OK" ) ;
}
else {
result = new PluginResult ( PluginResult . Status . ILLEGAL_ACCESS_EXCEPTION , "No WakeLock active - acquire first" ) ;
}
return result ;
}
/ * *
* Make sure any wakelock is released if the app goes into pause
* /
@Override
public void onPause ( boolean multitasking ) {
if ( this . wakeLock ! = null ) this . wakeLock . release ( ) ;
if ( this . releaseOnPause & & this . wakeLock ! = null ) {
this . wakeLock . release ( ) ;
}
super . onPause ( multitasking ) ;
}
/ * *
* Make sure any wakelock is acquired again once we resume
* /
@Override
public void onResume ( boolean multitasking ) {
if ( this . wakeLock ! = null ) this . wakeLock . acquire ( ) ;
if ( this . releaseOnPause & & this . wakeLock ! = null ) {
this . wakeLock . acquire ( ) ;
}
super . onResume ( multitasking ) ;
}