@ -1,5 +1,5 @@
/ *
* Copyright 2013 - 2014 Wolfgang Koller
* Copyright 2013 Wolfgang Koller
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -18,20 +18,13 @@
* Cordova ( Android ) plugin for accessing the power - management functions of the device
* @author Wolfgang Koller < viras @users.sourceforge.net >
* /
package org.apache.cordova.powermanagement ;
package at.gofg.sportscomputer ;
import org.json.JSONArray ;
import org.json.JSONException ;
import android.content.Context ;
import android.os.PowerManager ;
import android.os.Build ;
import android.os.Handler ;
import android.app.PendingIntent ;
import android.content.Intent ;
import java.lang.Runnable ;
import android.view.View ;
import android.util.Log ;
import org.apache.cordova.CordovaWebView ;
@ -48,72 +41,20 @@ 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 ;
private Handler handler ;
private PendingIntent wakeupIntent ;
private CordovaWebView webView ;
private final Runnable heartbeat = new Runnable ( ) {
public void run ( ) {
try {
//Log.d("PowerManagementPlugin", "About to declare ourselves VISIBLE");
webView . getView ( ) . dispatchWindowVisibilityChanged ( View . VISIBLE ) ;
// if sdk is 23 (android 6) or greater
if ( android . os . Build . VERSION . SDK_INT > 22 ) {
if ( wakeLock ! = null & & powerManager ! = null & & powerManager . isDeviceIdleMode ( ) ) {
//Log.d("PowerManagementPlugin", "Poking location service");
try {
wakeupIntent . send ( ) ;
} catch ( SecurityException e ) {
Log . d ( "PowerManagementPlugin" , "SecurityException : Heartbeat location manager keep-alive failed" ) ;
} catch ( PendingIntent . CanceledException e ) {
Log . d ( "PowerManagementPlugin" , "PendingIntent.CanceledException : Heartbeat location manager keep-alive failed" ) ;
}
}
}
} finally {
if ( handler ! = null ) {
handler . postDelayed ( this , 10000 ) ;
}
}
}
} ;
/ * *
* Fetch a reference to the power - service when the plugin is initialized
* /
@Override
public void initialize ( CordovaInterface cordova , CordovaWebView webViewPara ) {
Context context = cordova . getActivity ( ) . getApplicationContext ( ) ;
this . webView = webViewPara ;
super . initialize ( cordova , webViewPara ) ;
public void initialize ( CordovaInterface cordova , CordovaWebView webView ) {
super . initialize ( cordova , webView ) ;
this . powerManager = ( PowerManager ) cordova . getActivity ( ) . getSystemService ( Context . POWER_SERVICE ) ;
handler = new Handler ( ) ;
wakeupIntent = PendingIntent . getBroadcast ( context , 0 ,
new Intent ( "com.android.internal.location.ALARM_WAKEUP" ) , 0 ) ;
}
public PluginResult partialWakeLock ( ) {
Log . d ( "PowerManagementPlugin" , "Partial wake lock" ) ;
PluginResult result = this . acquire ( PowerManager . PARTIAL_WAKE_LOCK ) ;
handler . postDelayed ( heartbeat , 10000 ) ;
return result ;
}
@Override
public boolean execute ( String action , JSONArray args ,
CallbackContext callbackContext ) throws JSONException {
CallbackContext callbackContext ) throws JSONException {
PluginResult result = null ;
Log . d ( "PowerManagementPlugin" , "Plugin execute called - " + this . toString ( ) ) ;
@ -121,20 +62,16 @@ public class PowerManagement extends CordovaPlugin {
try {
if ( action . equals ( "acquire" ) ) {
if ( args . length ( ) > 0 & & args . getBoolean ( 0 ) ) {
result = partialWakeLock ( ) ;
} else {
result = partialWakeLock ( ) ;
}
} 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 ) {
@ -179,15 +116,10 @@ public class PowerManagement extends CordovaPlugin {
PluginResult result = null ;
if ( this . wakeLock ! = null ) {
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 . release ( ) ;
this . wakeLock = null ;
result = new PluginResult ( PluginResult . Status . OK , "OK" ) ;
}
else {
result = new PluginResult ( PluginResult . Status . ILLEGAL_ACCESS_EXCEPTION , "No WakeLock active - acquire first" ) ;
@ -201,9 +133,7 @@ public class PowerManagement extends CordovaPlugin {
* /
@Override
public void onPause ( boolean multitasking ) {
if ( this . releaseOnPause & & this . wakeLock ! = null ) {
this . wakeLock . release ( ) ;
}
if ( this . wakeLock ! = null ) this . wakeLock . release ( ) ;
super . onPause ( multitasking ) ;
}
@ -213,9 +143,7 @@ public class PowerManagement extends CordovaPlugin {
* /
@Override
public void onResume ( boolean multitasking ) {
if ( this . releaseOnPause & & this . wakeLock ! = null ) {
this . wakeLock . acquire ( ) ;
}
if ( this . wakeLock ! = null ) this . wakeLock . acquire ( ) ;
super . onResume ( multitasking ) ;
}