From 79a13277765e24a286481f8b66224aeeca584f5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastia=CC=81n=20Katzer?= Date: Thu, 10 Oct 2013 12:19:50 +0200 Subject: [PATCH] Added WP8 support --- README.md | 2 +- plugin.xml | 2 +- src/wp8/BackgroundMode.cs | 102 +++++++++++++++++++++++++++++++++++--- 3 files changed, 96 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9860735..1745710 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ cordova plugin rm de.appplant.cordova.plugin.background-mode ## Using the plugin Simply add the plugin to your project and the app will run while in background. -The plugin creates the object ```window.plugin.notification.backgroundMode``` with two methods: +The plugin creates the object ```window.plugin.backgroundMode``` with two methods: ### enable() The method enables the background mode. The mode is activated once the app has entered the background and will be deactivated after the app has entered the foreground.
diff --git a/plugin.xml b/plugin.xml index 503a7b2..53e9a07 100644 --- a/plugin.xml +++ b/plugin.xml @@ -2,7 +2,7 @@ + version="0.4.0dev"> BackgroundMode diff --git a/src/wp8/BackgroundMode.cs b/src/wp8/BackgroundMode.cs index 20b83bc..7f1cf67 100644 --- a/src/wp8/BackgroundMode.cs +++ b/src/wp8/BackgroundMode.cs @@ -7,21 +7,107 @@ * GPL v2 licensed */ -using System; -using System.Linq; - -using Microsoft.Phone.Shell; - -using WPCordovaClassLib.Cordova; using WPCordovaClassLib.Cordova.Commands; +using Windows.Devices.Geolocation; -namespace APPPlant.Cordova.Plugin +namespace Cordova.Extension.Commands { + /// + /// Ermöglicht, dass eine Anwendung im Hintergrund läuft ohne pausiert zu werden + /// public class BackgroundMode : BaseCommand { + /// + /// Flag gibt an, ob die App im Hintergrund wach gehalten werden soll + /// + private static bool isEnabled = true; + + /// + /// Lokalisiert das Smartphone + /// + private static Geolocator Geolocator { get; set; } + + /// + /// Registriert die Listener für die (sleep/resume) Events und startet + /// bzw. stoppt die Geo-Lokalisierung + /// public BackgroundMode () { - + Activate(); } + + /// + /// @js-interface + /// Setzt den Flag, dass die App im Hintergrund wach gehalten werden soll + /// + public void enable (string args) + { + Enable(); + } + + /// + /// @js-interface + /// Entfernt den Flag, sodass die App im Hintergrund pausiert wird + /// + public void disable (string args) + { + Disable(); + } + + /// + /// Setzt den Flag, dass die App im Hintergrund wach gehalten werden soll + /// + public static void Enable () + { + isEnabled = true; + } + + /// + /// Entfernt den Flag, sodass die App im Hintergrund pausiert wird + /// + public static void Disable () + { + isEnabled = false; + + Deactivate(); + } + + /// + /// @js-interface + /// Registriert die Listener für die (sleep/resume) Events + /// + public void observeLifeCycle (string args) + { + // Konstruktor wird aufgerufen, falls Instanz erstellt wurde + } + + /// + /// Startet das Aktualisieren des Standpunktes + /// + public static void Activate () + { + if (Geolocator == null && isEnabled) + { + Geolocator = new Geolocator(); + + Geolocator.DesiredAccuracy = PositionAccuracy.Default; + Geolocator.MovementThreshold = 100000; + Geolocator.PositionChanged += geolocator_PositionChanged; + } + } + + /// + /// Beendet das Aktualisieren des Standpunktes + /// + public static void Deactivate () + { + if (Geolocator != null) + { + Geolocator.PositionChanged -= geolocator_PositionChanged; + Geolocator = null; + } + } + + private static void geolocator_PositionChanged (Geolocator sender, PositionChangedEventArgs args) {} } }