2016-03-30 16 views
1

私はWindows 10が新しく、現在位置情報ベースのアプリケーションで作業しています。私の要件は、特定の時間間隔のユーザーの場所を追跡し、10分ごとにサーバーにデータを送信することです。誰かがこれがWindows 10で可能かどうかを提案できますか?私はこれを知らない。アプリがWindows 10のバックグラウンドにあるときの位置のトラッキング?

更新

私も、私は唯一の場所の詳細を取得するには、アプリがalso.Iは、コードの下にこれらの中

protected override async void OnNavigatedTo(NavigationEventArgs e) 
    { 
     if (e.NavigationMode == NavigationMode.New) 
     { 
      var extendedSession = new ExtendedExecutionSession(); 
      extendedSession.Reason = ExtendedExecutionReason.LocationTracking; 
      extendedSession.Description = "Location tracking"; 

      ExtendedExecutionResult result = await extendedSession.RequestExtensionAsync(); 
      if (result == ExtendedExecutionResult.Allowed) 
      { 
       Debug.WriteLine("Background execution approved"); 
      } 
      else 
      { 
       Debug.WriteLine("Background execution denied"); 
      } 

      Geolocator locator = new Geolocator(); 
      locator.DesiredAccuracyInMeters = 0; 
      locator.MovementThreshold = 500; 
      locator.DesiredAccuracy = PositionAccuracy.High; 
      locator.PositionChanged += Locator_PositionChanged; 
     } 
    } 

    private void Locator_PositionChanged(Geolocator sender, PositionChangedEventArgs args) 
    { 
     Debug.WriteLine(args.Position.Coordinate.Latitude.ToString("0.00000000") + " " + args.Position.Coordinate.Longitude.ToString("0.00000000")); 
     if (MCSManager.Instance.userDetails != null && MCSManager.Instance.userDetails.LOC_TRACK_ENABLED.Equals("1") && userSettings.Values.ContainsKey(Constants.USER_ID)) 
     { 
      DatabaseManager dbManager = new DatabaseManager(); 
      Location_Tracking location_tracking = WebserviceED.StoreLocationData(args.Position.Coordinate.Latitude.ToString(), 
       args.Position.Coordinate.Longitude.ToString(), WebserviceED.getTimestamp(), args.Position.Coordinate.Accuracy.ToString()); 
      var insertSuccessfull = dbManager.insertSingleRecord(location_tracking); 
     } 
    } 

をしようとした背景にあるときに上記をしたいときアプリフォアグラウンドまたは最小化されています。私はアプリを殺すと、それは私に場所の詳細を与えることはありません。また、バックグラウンドタスクでこれを使用する方法と、ユーザーがアプリを強制終了してもサーバーにデータを送信する時間トリガーを起動する方法を教えてください。

また、複数のバックグラウンドタスクを使用できますか?私はTimeTriggerを使ってサーバーにデータを送信し、もう1つはプッシュ通知の目的で使用したいと考えています。

+0

https://msdn.microsoft.com/library/windows/apps/ windows.devices.geolocation.aspx –

+0

同様のケースがあります。[リアルタイムGPS UWP](http://stackoverflow.com/questions/36196993/real-time-gps-uwp)を参照してください。 –

+0

こんにちは、このページの他の人からアドバイスを受けてください。ジオロケーションとバックグラウンドタスクの基本を理解する必要があります。私は恐怖を感じています。 – peterincumbria

答えて

1

これは完全に可能です。しかし、ユーザーが場所を指定することを拒否すれば、あなたはできません。

バックグラウンドで追跡するための

UPDATE

、あなたが​​を使用する必要があり、ここでのサンプルコード:http://www.sharpgis.net/post/2015/03/29/Using-Windows-10s-Extended-Execution

+0

バックグラウンドでも動作しますか?私の質問が更新されました –

+0

これは基本的に必要なものです:http://www.sharpgis.net/post/2015/03/29/Using-Windows-10s-Extended-Execution – thang2410199

+0

@ thang241099これはバックグラウンドでの位置を追跡することを示していますが、10分ごとにサーバーにデータを送信できることを確認していません。 –

3

このウィンドウでは、ユーザーの場所にアクセスする完全に可能10. それはからアクセスすることができ異なるソースのような;

  • GPS:以内に約10メートル
  • のWi-Fi:約30メートルと500メートルの間
  • セルタワー:300、約間メートルと3000メートル
  • IPアドレス:約1,000メートルとの間の5,000メートル

技術的な理解のために、以下のリンクを参照することができます。

https://msdn.microsoft.com/library/windows/apps/windows.devices.geolocation.aspx

とチャネルからのビデオのために、これらが参照する良い記事です

https://channel9.msdn.com/Series/Windows-10-development-for-absolute-beginners/UWP-059-UWP-Weather-Accessing-the-GPS-Location

を参照してください。いくつかの技術的な詳細については

:例の

https://msdn.microsoft.com/en-us/library/windows/apps/mt219698.aspx

や種類、これらの中

https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/MapControl

+0

私の質問を更新してください。アプリがバックグラウンドであっても位置を追跡するかどうか、アプリがバックグラウンドのときにサーバーにデータを送信するかどうかを提案できますか? –

+0

はい、そのためのバックグラウンドサービスを作成する必要があります。 https://msdn.microsoft.com/en-us/windows/uwp/launch-resume/create-and-register-a-background-task https://msdn.microsoft.com/en-us/windows/uwp/launch-resume/run-a-background-task-on-a-timer- –

+0

私の更新された投稿に基づいて提案してください –

1

アプリがフォアグラウンドにあるとき、私は唯一の場所の詳細を取得または最小化される。私はアプリを殺すと、それは私に場所の詳細を与えることはありません。

拡張された実行では、アプリを開いて実行中であることを認識しているバックスタックに置く必要があります。ここでは、拡張実行のチュートリアルは、次のとおりです。https://docs.microsoft.com/en-us/windows/uwp/launch-resume/run-minimized-with-extended-execution

また、バックグラウンドタスクでこれを使用する方法を私を助けると、ユーザーがアプリを殺す場合でも、サーバーにデータを送信するために、時間トリガーを起動する方法をしてください?

拡張実行ロケーショントラッキングはバックグラウンドタスクでは使用できません。ただし、LocationTriggerを使用して、ユーザーがジオフェンシングエリアから移動するたびに新しい場所を記録することができます。周年記念アップデート場所トリガと時間トリガのようインプロセスとして、または外のprocのタスク登録することができます:ここでhttps://docs.microsoft.com/en-us/windows/uwp/launch-resume/create-and-register-an-inproc-background-task

は、インプロセスのバックグラウンドタスクのサンプルです:https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/BackgroundActivationまた

、複数のバックグラウンドタスクを使用できますか?私はTimeTriggerを使ってサーバーにデータを送信し、もう1つはプッシュ通知の目的で使用したいと考えています。

はい、BackgroundTaskBuilderで必要なだけ多くの種類のタスクを登録することができ、アプリケーションプロセス内で実行することも、別々のバックグラウンドタスクプロセスとして実行することもできます。ここで

はBackgroundTaskBuilderを使用してのチュートリアルです:ここでhttps://docs.microsoft.com/en-us/windows/uwp/launch-resume/create-and-register-a-background-task

は、アウトprocのバックグラウンドタスクのサンプルです:https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/BackgroundTask

関連する問題