Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
a5e880c121 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
.idea
|
|
51
README.md
51
README.md
@ -2,9 +2,6 @@ PowerManagement
|
|||||||
===============
|
===============
|
||||||
Plugin for Cordova (3.0+)
|
Plugin for Cordova (3.0+)
|
||||||
|
|
||||||
changed SCREEN_DIM_WAKE_LOCK to PARTIAL_WAKE_LOCK
|
|
||||||
=================================================
|
|
||||||
|
|
||||||
The PowerManagement plugin offers access to the devices power-management functionality.
|
The PowerManagement plugin offers access to the devices power-management functionality.
|
||||||
It should be used for applications which keep running for a long time without any user interaction.
|
It should be used for applications which keep running for a long time without any user interaction.
|
||||||
|
|
||||||
@ -18,53 +15,7 @@ Installation
|
|||||||
---------
|
---------
|
||||||
Install the plugin using the cordova command line utility:
|
Install the plugin using the cordova command line utility:
|
||||||
|
|
||||||
`$ cordova plugin add https://github.com/boltex/cordova-plugin-powermanagement.git`
|
`$ cordova plugin add https://github.com/Viras-/cordova-plugin-powermanagement.git`
|
||||||
|
|
||||||
OR
|
|
||||||
---
|
|
||||||
|
|
||||||
`npm i cordova-plugin-powermanagement2`
|
|
||||||
|
|
||||||
Usage
|
|
||||||
-----
|
|
||||||
|
|
||||||
### window.powerManagement.acquire(successCallback, failureCallback)
|
|
||||||
Acquire a wakelock by calling this.
|
|
||||||
|
|
||||||
window.powerManagement.acquire(function() {
|
|
||||||
console.log('Wakelock acquired');
|
|
||||||
}, function() {
|
|
||||||
console.log('Failed to acquire wakelock');
|
|
||||||
});
|
|
||||||
|
|
||||||
### window.powerManagement.dim(successCallback, failureCallback)
|
|
||||||
This acquires a partial wakelock, allowing the screen to be dimmed.
|
|
||||||
|
|
||||||
window.powerManagement.dim(function() {
|
|
||||||
console.log('Wakelock acquired');
|
|
||||||
}, function() {
|
|
||||||
console.log('Failed to acquire wakelock');
|
|
||||||
});
|
|
||||||
|
|
||||||
### window.powerManagement.release(successCallback, failureCallback)
|
|
||||||
Release the wakelock. It's important to do this when you're finished with the wakelock, to avoid unnecessary battery drain.
|
|
||||||
|
|
||||||
window.powerManagement.release(function() {
|
|
||||||
console.log('Wakelock released');
|
|
||||||
}, function() {
|
|
||||||
console.log('Failed to release wakelock');
|
|
||||||
});
|
|
||||||
|
|
||||||
### [Android Only] window.powerManagement.setReleaseOnPause(enabled, successCallback, failureCallback)
|
|
||||||
By default, the plugin will automatically release a wakelock when your app is paused (e.g. when the screen is turned off, or the user switches to another app). It will reacquire the wakelock upon app resume. If you would prefer to disable this behaviour, you can use this function.
|
|
||||||
|
|
||||||
window.powerManagement.setReleaseOnPause(false, function() {
|
|
||||||
console.log('Set successfully');
|
|
||||||
}, function() {
|
|
||||||
console.log('Failed to set');
|
|
||||||
});
|
|
||||||
|
|
||||||
Note that in all the above examples, all callbacks are optional.
|
|
||||||
|
|
||||||
License
|
License
|
||||||
=======
|
=======
|
||||||
|
24
package.json
24
package.json
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@netsyms/cordova-plugin-powermanagement",
|
|
||||||
"version": "1.1.3",
|
|
||||||
"description": "Plugin for managing the power state (i.e. idle switching) for cordova",
|
|
||||||
"scripts": {
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://source.netsyms.com/Netsyms/cordova-plugin-powermanagement.git"
|
|
||||||
},
|
|
||||||
"contributors": ["Netsyms Technologies", "Viras-", "Sitronik"],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://source.netsyms.com/Netsyms/cordova-plugin-powermanagement/issues"
|
|
||||||
},
|
|
||||||
"homepage": "https://source.netsyms.com/Netsyms/cordova-plugin-powermanagement#readme",
|
|
||||||
"keywords": [
|
|
||||||
"ecosystem:cordova",
|
|
||||||
"cordova-android",
|
|
||||||
"cordova-ios"
|
|
||||||
],
|
|
||||||
"main": "index.js"
|
|
||||||
}
|
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<plugin xmlns="http://cordova.apache.org/ns/plugins/1.0"
|
<plugin xmlns="http://cordova.apache.org/ns/plugins/1.0"
|
||||||
id="@netsyms/cordova-plugin-powermanagement"
|
id="at.gofg.sportscomputer.powermanagement"
|
||||||
version="1.1.3">
|
version="1.0.0">
|
||||||
<name>PowerManagement</name>
|
<name>PowerManagement</name>
|
||||||
<description>PowerManagement plugin for Cordova</description>
|
<description>PowerManagement plugin for Cordova</description>
|
||||||
<license>Apache 2.0</license>
|
<license>Apache 2.0</license>
|
||||||
@ -49,7 +49,7 @@
|
|||||||
<platform name="android">
|
<platform name="android">
|
||||||
<config-file target="res/xml/config.xml" parent="/*">
|
<config-file target="res/xml/config.xml" parent="/*">
|
||||||
<feature name="PowerManagement" >
|
<feature name="PowerManagement" >
|
||||||
<param name="android-package" value="org.apache.cordova.powermanagement.PowerManagement"/>
|
<param name="android-package" value="org.apache.cordova.powermanagement.PowerManagement" />
|
||||||
</feature>
|
</feature>
|
||||||
</config-file>
|
</config-file>
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013-2014 Wolfgang Koller
|
* Copyright 2013 Wolfgang Koller
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with 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
|
* Cordova (Android) plugin for accessing the power-management functions of the device
|
||||||
* @author Wolfgang Koller <viras@users.sourceforge.net>
|
* @author Wolfgang Koller <viras@users.sourceforge.net>
|
||||||
*/
|
*/
|
||||||
package org.apache.cordova.powermanagement;
|
package at.gofg.sportscomputer;
|
||||||
|
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.PowerManager;
|
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 android.util.Log;
|
||||||
|
|
||||||
import org.apache.cordova.CordovaWebView;
|
import org.apache.cordova.CordovaWebView;
|
||||||
@ -48,67 +41,15 @@ public class PowerManagement extends CordovaPlugin {
|
|||||||
// As we only allow one wake-lock, we keep a reference to it here
|
// As we only allow one wake-lock, we keep a reference to it here
|
||||||
private PowerManager.WakeLock wakeLock = null;
|
private PowerManager.WakeLock wakeLock = null;
|
||||||
private PowerManager powerManager = 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
|
* Fetch a reference to the power-service when the plugin is initialized
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void initialize(CordovaInterface cordova, CordovaWebView webViewPara) {
|
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
|
||||||
|
super.initialize(cordova, webView);
|
||||||
Context context = cordova.getActivity().getApplicationContext();
|
|
||||||
|
|
||||||
this.webView = webViewPara;
|
|
||||||
|
|
||||||
super.initialize(cordova, webViewPara);
|
|
||||||
|
|
||||||
this.powerManager = (PowerManager) cordova.getActivity().getSystemService(Context.POWER_SERVICE);
|
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
|
@Override
|
||||||
@ -122,19 +63,15 @@ public class PowerManagement extends CordovaPlugin {
|
|||||||
try {
|
try {
|
||||||
if( action.equals("acquire") ) {
|
if( action.equals("acquire") ) {
|
||||||
if( args.length() > 0 && args.getBoolean(0) ) {
|
if( args.length() > 0 && args.getBoolean(0) ) {
|
||||||
result = partialWakeLock();
|
Log.d("PowerManagementPlugin", "Only dim lock" );
|
||||||
} else {
|
result = this.acquire( PowerManager.SCREEN_DIM_WAKE_LOCK );
|
||||||
result = partialWakeLock();
|
|
||||||
}
|
}
|
||||||
} else if( action.equals("release") ) {
|
else {
|
||||||
|
result = this.acquire( PowerManager.FULL_WAKE_LOCK );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( action.equals("release") ) {
|
||||||
result = this.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 ) {
|
catch( JSONException e ) {
|
||||||
@ -179,15 +116,10 @@ public class PowerManagement extends CordovaPlugin {
|
|||||||
PluginResult result = null;
|
PluginResult result = null;
|
||||||
|
|
||||||
if( this.wakeLock != null ) {
|
if( this.wakeLock != null ) {
|
||||||
try {
|
|
||||||
this.wakeLock.release();
|
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;
|
this.wakeLock = null;
|
||||||
|
|
||||||
|
result = new PluginResult(PluginResult.Status.OK, "OK");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
result = new PluginResult(PluginResult.Status.ILLEGAL_ACCESS_EXCEPTION, "No WakeLock active - acquire first");
|
result = new PluginResult(PluginResult.Status.ILLEGAL_ACCESS_EXCEPTION, "No WakeLock active - acquire first");
|
||||||
@ -201,9 +133,7 @@ public class PowerManagement extends CordovaPlugin {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onPause(boolean multitasking) {
|
public void onPause(boolean multitasking) {
|
||||||
if( this.releaseOnPause && this.wakeLock != null ) {
|
if( this.wakeLock != null ) this.wakeLock.release();
|
||||||
this.wakeLock.release();
|
|
||||||
}
|
|
||||||
|
|
||||||
super.onPause(multitasking);
|
super.onPause(multitasking);
|
||||||
}
|
}
|
||||||
@ -213,9 +143,7 @@ public class PowerManagement extends CordovaPlugin {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onResume(boolean multitasking) {
|
public void onResume(boolean multitasking) {
|
||||||
if( this.releaseOnPause && this.wakeLock != null ) {
|
if( this.wakeLock != null ) this.wakeLock.acquire();
|
||||||
this.wakeLock.acquire();
|
|
||||||
}
|
|
||||||
|
|
||||||
super.onResume(multitasking);
|
super.onResume(multitasking);
|
||||||
}
|
}
|
||||||
|
@ -25,29 +25,48 @@
|
|||||||
@implementation PowerManagement
|
@implementation PowerManagement
|
||||||
- (void) acquire:(CDVInvokedUrlCommand*)command
|
- (void) acquire:(CDVInvokedUrlCommand*)command
|
||||||
{
|
{
|
||||||
|
CDVPluginResult* result = nil;
|
||||||
|
NSString* jsString = nil;
|
||||||
|
NSString* callbackId = command.callbackId;
|
||||||
|
|
||||||
// Acquire a reference to the local UIApplication singleton
|
// Acquire a reference to the local UIApplication singleton
|
||||||
UIApplication* app = [UIApplication sharedApplication];
|
UIApplication* app = [UIApplication sharedApplication];
|
||||||
|
|
||||||
CDVPluginResult *pluginResult = nil;
|
|
||||||
if( ![app isIdleTimerDisabled] ) {
|
if( ![app isIdleTimerDisabled] ) {
|
||||||
[app setIdleTimerDisabled:true];
|
[app setIdleTimerDisabled:true];
|
||||||
|
|
||||||
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
|
||||||
|
jsString = [result toSuccessCallbackString:callbackId];
|
||||||
}
|
}
|
||||||
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
|
else {
|
||||||
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ILLEGAL_ACCESS_EXCEPTION messageAsString:@"IdleTimer already disabled"];
|
||||||
|
jsString = [result toErrorCallbackString:callbackId];
|
||||||
|
}
|
||||||
|
|
||||||
|
[self writeJavascript:jsString];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (void) release:(CDVInvokedUrlCommand*)command
|
- (void) release:(CDVInvokedUrlCommand*)command
|
||||||
{
|
{
|
||||||
|
CDVPluginResult* result = nil;
|
||||||
|
NSString* jsString = nil;
|
||||||
|
NSString* callbackId = command.callbackId;
|
||||||
|
|
||||||
// Acquire a reference to the local UIApplication singleton
|
// Acquire a reference to the local UIApplication singleton
|
||||||
UIApplication* app = [UIApplication sharedApplication];
|
UIApplication* app = [UIApplication sharedApplication];
|
||||||
|
|
||||||
|
|
||||||
CDVPluginResult *pluginResult = nil;
|
|
||||||
if( [app isIdleTimerDisabled] ) {
|
if( [app isIdleTimerDisabled] ) {
|
||||||
[app setIdleTimerDisabled:false];
|
[app setIdleTimerDisabled:false];
|
||||||
|
|
||||||
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
|
||||||
|
jsString = [result toSuccessCallbackString:callbackId];
|
||||||
}
|
}
|
||||||
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
|
else {
|
||||||
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ILLEGAL_ACCESS_EXCEPTION messageAsString:@"IdleTimer not disabled"];
|
||||||
|
jsString = [result toErrorCallbackString:callbackId];
|
||||||
|
}
|
||||||
|
|
||||||
|
[self writeJavascript:jsString];
|
||||||
}
|
}
|
||||||
@end
|
@end
|
||||||
|
@ -37,17 +37,6 @@ PowerManagement.prototype.release = function(successCallback,failureCallback) {
|
|||||||
cordova.exec(successCallback, failureCallback, 'PowerManagement', 'release', []);
|
cordova.exec(successCallback, failureCallback, 'PowerManagement', 'release', []);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Enable or disable releasing of the wakelock on pause
|
|
||||||
*
|
|
||||||
* @param enabled boolean - true to enable releasing of wakelock on pause, or false to disable
|
|
||||||
* @param successCallback
|
|
||||||
* @param errorCallback
|
|
||||||
*/
|
|
||||||
PowerManagement.prototype.setReleaseOnPause = function(enabled, successCallback, failureCallback) {
|
|
||||||
cordova.exec(successCallback, failureCallback, 'PowerManagement', 'setReleaseOnPause', [enabled]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Acquire a partial wake-lock, allowing the device to dim the screen
|
* Acquire a partial wake-lock, allowing the device to dim the screen
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user