Release v1.0.0

pull/1/merge
Viras- 11 years ago
commit 19af5c6361

@ -7,6 +7,8 @@ It should be used for applications which keep running for a long time without an
For details on power functionality see:
* Android: [PowerManager](http://developer.android.com/reference/android/os/PowerManager.html)
* iOS: [idleTimerDisabled](http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/Reference/Reference.html#//apple_ref/occ/instp/UIApplication/idleTimerDisabled)
* WindowsPhone: [UserIdleDetectionMode](http://msdn.microsoft.com/en-US/library/windowsphone/develop/microsoft.phone.shell.phoneapplicationservice.useridledetectionmode%28v=vs.105%29.aspx)
Installation

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://cordova.apache.org/ns/plugins/1.0"
id="at.gofg.sportscomputer.powermanagement"
version="1.0.0">
version="1.1.0">
<name>PowerManagement</name>
<description>PowerManagement plugin for Cordova</description>
<license>GPL</license>
@ -32,4 +32,31 @@
<source-file src="src/wp/PowerManagement.cs" />
</platform>
<!-- ios -->
<platform name="ios">
<config-file target="config.xml" parent="/widget">
<feature name="PowerManagement">
<param name="ios-package" value="PowerManagement" />
</feature>
</config-file>
<header-file src="src/ios/PowerManagement.h" />
<source-file src="src/ios/PowerManagement.m" />
</platform>
<!-- android -->
<platform name="android">
<config-file target="res/xml/config.xml" parent="/*">
<feature name="PowerManagement" >
<param name="android-package" value="org.apache.cordova.plugin.PowerManagement"/>
</feature>
</config-file>
<config-file target="AndroidManifest.xml" parent="/*">
<uses-permission android:name="android.permission.WAKE_LOCK" />
</config-file>
<source-file src="src/android/PowerManagement.java" target-dir="src/at/gofg/sportscomputer/" />
</platform>
</plugin>

@ -0,0 +1,150 @@
/*
Copyright 2011-2013 Wolfgang Koller - http://www.gofg.at/
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.
See the License for the specific language governing permissions and
limitations under the License.
*/
/**
* Cordova (Android) plugin for accessing the power-management functions of the device
* @author Wolfgang Koller <viras@users.sourceforge.net>
*/
package at.gofg.sportscomputer;
import org.json.JSONArray;
import org.json.JSONException;
import android.content.Context;
import android.os.PowerManager;
import android.util.Log;
import org.apache.cordova.CordovaWebView;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaInterface;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.PluginResult;
import org.apache.cordova.PluginResult.Status;
/**
* Plugin class which does the actual handling
*/
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;
/**
* Fetch a reference to the power-service when the plugin is initialized
*/
@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 {
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") ) {
result = this.release();
}
}
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
* @return PluginResult containing the status of the acquire process
*/
private PluginResult acquire( int p_flags ) {
PluginResult result = null;
if (this.wakeLock == null) {
this.wakeLock = this.powerManager.newWakeLock(p_flags, "PowerManagementPlugin");
try {
this.wakeLock.acquire();
result = new PluginResult(PluginResult.Status.OK);
}
catch( Exception e ) {
this.wakeLock = null;
result = new PluginResult(PluginResult.Status.ERROR,"Can't acquire wake-lock - check your permissions!");
}
}
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();
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();
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();
super.onResume(multitasking);
}
}

@ -0,0 +1,45 @@
/*
* Copyright (C) 2011-2012 Wolfgang Koller
*
* This file is part of GOFG Sports Computer - http://www.gofg.at/.
*
* GOFG Sports Computer is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GOFG Sports Computer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GOFG Sports Computer. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* Cordova (iOS) plugin for accessing the power-management functions of the device
*/
#ifdef CORDOVA_FRAMEWORK
#import <CORDOVA/CDVPlugin.h>
#else
#import "CORDOVA/CDVPlugin.h"
#endif
/**
* Interface which does the actual handling
*/
@interface PowerManagement :CDVPlugin {
}
/**
* Sets the idleTimerDisable property to true so that the idle timeout is disabled
*/
- (void) acquire:(CDVInvokedUrlCommand*)command;
/**
* Sets the idleTimerDisable property to false so that the idle timeout is enabled
*/
- (void) release:(CDVInvokedUrlCommand*)command;
@end

@ -0,0 +1,75 @@
/*
* Copyright (C) 2011-2012 Wolfgang Koller
*
* This file is part of GOFG Sports Computer - http://www.gofg.at/.
*
* GOFG Sports Computer is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GOFG Sports Computer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GOFG Sports Computer. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* Cordova (iOS) plugin for accessing the power-management functions of the device
*/
#import "PowerManagement.h"
/**
* Actual implementation of the interface
*/
@implementation PowerManagement
- (void) acquire:(CDVInvokedUrlCommand*)command
{
CDVPluginResult* result = nil;
NSString* jsString = nil;
NSString* callbackId = command.callbackId;
// Acquire a reference to the local UIApplication singleton
UIApplication* app = [UIApplication sharedApplication];
if( ![app isIdleTimerDisabled] ) {
[app setIdleTimerDisabled:true];
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
jsString = [result toSuccessCallbackString:callbackId];
}
else {
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ILLEGAL_ACCESS_EXCEPTION messageAsString:@"IdleTimer already disabled"];
jsString = [result toErrorCallbackString:callbackId];
}
[self writeJavascript:jsString];
}
- (void) release:(CDVInvokedUrlCommand*)command
{
CDVPluginResult* result = nil;
NSString* jsString = nil;
NSString* callbackId = command.callbackId;
// Acquire a reference to the local UIApplication singleton
UIApplication* app = [UIApplication sharedApplication];
if( [app isIdleTimerDisabled] ) {
[app setIdleTimerDisabled:false];
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
jsString = [result toSuccessCallbackString:callbackId];
}
else {
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ILLEGAL_ACCESS_EXCEPTION messageAsString:@"IdleTimer not disabled"];
jsString = [result toErrorCallbackString:callbackId];
}
[self writeJavascript:jsString];
}
@end
Loading…
Cancel
Save