diff --git a/CampusAppWP8/CampusAppWP8/App.xaml.cs b/CampusAppWP8/CampusAppWP8/App.xaml.cs index 9d7a8955..891f1230 100644 --- a/CampusAppWP8/CampusAppWP8/App.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/App.xaml.cs @@ -1,15 +1,18 @@ -using System; +using CampusAppWP8.File.Setting; +using CampusAppWP8.Model.Setting; +using CampusAppWP8.Resources; +using CampusAppWP8.Utility; +using Microsoft.Phone.Controls; +using Microsoft.Phone.Shell; +using System; using System.Diagnostics; -using System.Resources; +using System.Globalization; +using System.IO.IsolatedStorage; +using System.Threading; using System.Windows; using System.Windows.Markup; using System.Windows.Navigation; -using Microsoft.Phone.Controls; -using Microsoft.Phone.Shell; -using CampusAppWP8.Resources; -using System.IO.IsolatedStorage; -using CampusAppWP8.File.Setting; -using CampusAppWP8.Model.Setting; +using Windows.Devices.Geolocation; namespace CampusAppWP8 @@ -134,6 +137,9 @@ namespace CampusAppWP8 this.LoadSettings(); } + /// + /// Load the appsettings from the store + /// private void LoadSettings() { UserProfilFile userFile; @@ -147,7 +153,14 @@ namespace CampusAppWP8 { this.UserSettingsLoaded(); } + + Thread thread = new Thread(new ThreadStart(Utilities.DetermineAndStoreCurrentPosition)); + thread.Start(); } + + /// + /// Load the usersettings from the store + /// private void UserSettingsLoaded() { if (Settings.UserProfil.Model == null) @@ -161,6 +174,7 @@ namespace CampusAppWP8 private void Application_Activated(object sender, ActivatedEventArgs e) { this.LoadSettings(); + } // Code, der ausgeführt werden soll, wenn die Anwendung deaktiviert wird (in den Hintergrund gebracht wird) diff --git a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj index fae411f5..c2bee0e0 100644 --- a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj +++ b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj @@ -424,10 +424,25 @@ + + ..\packages\BuiltToRoam.Core.Agent.1.0.1.5\lib\sl4-wp71\AsyncCtpLibrary_Phone.dll + + + ..\packages\BuiltToRoam.Core.Agent.1.0.1.5\lib\sl4-wp71\BuiltToRoam.Core.Agent.dll + + + ..\packages\BuiltToRoam.GeoWatcher.1.0.1.5\lib\sl4-wp71\BuiltToRoam.GeoWatcher.dll + ..\packages\WPtoolkit.4.2012.10.30\lib\wp8\Microsoft.Phone.Controls.Toolkit.dll + + ..\packages\Newtonsoft.Json.4.5.11\lib\sl4-windowsphone71\Newtonsoft.Json.dll + + + ..\packages\SharpZipLib-WP7.0.86.0.518\lib\sl4-windowsphone71\SharpZipLib.WindowsPhone7.dll + diff --git a/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml.cs index 6100b8ae..a28f78f2 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml.cs @@ -17,6 +17,7 @@ namespace CampusAppWP8.Pages.Mensa using Windows.Devices.Geolocation; using System.Threading.Tasks; using System.Globalization; + using CampusAppWP8.Utility; /// /// Class for the MensaPage @@ -79,34 +80,16 @@ namespace CampusAppWP8.Pages.Mensa } this.ProgressBar.Visibility = System.Windows.Visibility.Visible; - //this.feed.LoadData(); + this.feed.LoadData(); this.determinCurrentPosition(); } - private async void determinCurrentPosition() + private void determinCurrentPosition() { - Geolocator geolocator = new Geolocator(); - geolocator.DesiredAccuracyInMeters = 50; - string lat = string.Empty; - string log = string.Empty; - try - { - Geoposition geoposition = await geolocator.GetGeopositionAsync( - maximumAge: TimeSpan.FromMinutes(15), - timeout: TimeSpan.FromSeconds(10) - ); + Utilities.DetermineAndStoreCurrentPosition(); + string lat = App.LoadFromAppState("CurrentPosition.Lat"); + string log = App.LoadFromAppState("CurrentPosition.Long"); - lat = geoposition.Coordinate.Latitude.ToString(CultureInfo.InvariantCulture); - log = geoposition.Coordinate.Longitude.ToString(CultureInfo.InvariantCulture); - } - catch (Exception ex) - { - if ((uint)ex.HResult == 0x80004004) - { - - } - - } this.spsApi = new SpsApi(); this.spsApi.onLoaded += new SpsApi.OnLoaded(this.ApiIsReady); List parameterList = new List(); diff --git a/CampusAppWP8/CampusAppWP8/Pages/StartPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/StartPage.xaml.cs index c6f84e3c..79325c14 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/StartPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/StartPage.xaml.cs @@ -14,6 +14,11 @@ namespace CampusAppWP8.Pages using CampusAppWP8.Resources; using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; + using Windows.Devices.Geolocation; + using CampusAppWP8.Utility; + using System.Globalization; + using System.Threading.Tasks; + using System.Device.Location; /// /// Class for the StartPage @@ -25,14 +30,14 @@ namespace CampusAppWP8.Pages /// public StartPage() { - this.InitializeComponent(); + this.InitializeComponent(); ApplicationBarMenuItem menuItem1 = ApplicationBar.MenuItems[0] as ApplicationBarMenuItem; if (menuItem1 != null) { menuItem1.Text = AppResources.Setting_UserProfilAppBarTitle; } } - + /// /// Method handle OrientationPage /// @@ -78,12 +83,14 @@ namespace CampusAppWP8.Pages ContentPanel.RowDefinitions[3].Height = new GridLength(1,GridUnitType.Star); ContentPanel.ColumnDefinitions[3].Width = GridLength.Auto; } + } private void ApplicationBarMenuItem_Click(object sender, EventArgs e) { - Uri url = new Uri(Constants.PathSetting_User, UriKind.Relative); - NavigationService.Navigate(url); + //Uri url = new Uri(Constants.PathSetting_User, UriKind.Relative); + //NavigationService.Navigate(url); + Utilities.DetermineAndStoreCurrentPosition(); } private void ApplicationBar_StateChanged(object sender, ApplicationBarStateChangedEventArgs e) diff --git a/CampusAppWP8/CampusAppWP8/Utility/Utilities.cs b/CampusAppWP8/CampusAppWP8/Utility/Utilities.cs index 243929ed..afb542e1 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/Utilities.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/Utilities.cs @@ -9,6 +9,8 @@ namespace CampusAppWP8.Utility { using System; using System.Collections.Generic; + using System.Device.Location; + using System.Globalization; using System.Linq; using System.Windows; using System.Windows.Controls; @@ -191,5 +193,71 @@ namespace CampusAppWP8.Utility return retValue; } + + /// + /// Method determine the current position of the phone + /// + /// accuracy of the position in meters + /// the position of the phone + public static GeoPosition DetermineCurrentPosition(uint accuracy = 50) + { + //Utilities.DetermineAndStoreCurrentPosition(); + GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High); + bool success = watcher.TryStart(false, TimeSpan.FromMilliseconds(1000)); + GeoPosition geoposition = null; + if (success) + { + geoposition = watcher.Position; + } + watcher.Stop(); + return geoposition; + } + + /// + /// Method determine and store the current position of the phone + /// + public static void DetermineAndStoreCurrentPositionForce() + { + GeoPosition geoposition = Utilities.DetermineCurrentPosition(); + if (geoposition != null) + { + string lat = geoposition.Location.Latitude.ToString(CultureInfo.InvariantCulture); + string log = geoposition.Location.Longitude.ToString(CultureInfo.InvariantCulture); + string time = geoposition.Timestamp.Ticks.ToString(); + App.SaveToAppState("CurrentPosition.Lat", lat); + App.SaveToAppState("CurrentPosition.Long", log); + App.SaveToAppState("CurrentPosition.Time", time); + } + } + + /// + /// Method determine and store the current position of the phone, in 15 min intcavv + /// + public static void DetermineAndStoreCurrentPosition() + { + string lat = App.LoadFromAppState("CurrentPosition.Lat"); + string log = App.LoadFromAppState("CurrentPosition.Long"); + string time = App.LoadFromAppState("CurrentPosition.Time"); + if (lat == null || log == null || time == null || lat.Equals(string.Empty) || log.Equals(string.Empty) || time.Equals(string.Empty)) + { + Utilities.DetermineAndStoreCurrentPositionForce(); + } + else + { + long longTime = 0; + if(!long.TryParse(time, out longTime)) + { + return; + } + + DateTime expired = new DateTime(longTime).AddMinutes(15); + if (DateTime.Now.Ticks > expired.Ticks) + { + + Utilities.DetermineAndStoreCurrentPositionForce(); + + } + } + } } } \ No newline at end of file diff --git a/CampusAppWP8/CampusAppWP8/packages.config b/CampusAppWP8/CampusAppWP8/packages.config index a6c4d07d..dbbe5283 100644 --- a/CampusAppWP8/CampusAppWP8/packages.config +++ b/CampusAppWP8/CampusAppWP8/packages.config @@ -1,4 +1,8 @@  + + + + \ No newline at end of file