2017-10-12 7 views
1

Je crée un UWP pour suivre l'emplacement GPS, pour l'instant mon idée est de tirer parti de IBackgroundTask puisque je ne peux pas compter sur l'utilisateur pour avoir l'écran tout le temps.Suivi de fond GPS Windows 10 UWP plus fréquent

Et je pense que je dois utiliser TimeTrigger pour se réveiller à certains intervalles puis obtenir les données de localisation GPS actuelles. Mais selon le document de TimeTrigger l'intervalle minimal que je peux définir est de 15 minutes, ce qui provoque 2 problème pour moi:

  • 15 minutes est probablement OK pour quelqu'un qui marche, mais assez mauvais pour faire du vélo. J'ai besoin de plus interne interne.
  • Pour des tests réels en utilisant mon téléphone, je dois marcher dehors pendant 30 minutes pour obtenir 2 données? Cela semble un peu ridicule et très inefficace.

Une idée, quelle est une meilleure option?

Répondre

3

J'ai des expériences à propos de l'application de l'histoire de l'emplacement UWP en 2016, alors je peux partager ma pensée à ce sujet. J'espère que ceci vous aide.

1) Contexte Tâche

Essentiellement, je belive que cette façon est pas bon pour le suivi de l'emplacement. La raison est .. 1) Oui, 15min d'intervalle est trop long pour le suivi de localisation et 2) OS peut révoquer et supprimer la tâche d'arrière-plan avec ou sans préavis pour l'application. Gérer cette situation à partir de l'application est trop difficile.

2) Exécution étendue

Avec cette fonctionnalité, vous pouvez empêcher que votre application entrer suspendre lorsque l'application est fond ou réduite au minimum. App continue de fonctionner - cela signifie que vous pouvez utiliser la solution de temporisateur de répartition ordinale pour obtenir l'emplacement avec vos intervalles préférés comme 1min, 45sec, etc. Et, Extended Execution ont une option pour utiliser "ExtendedExecutionReason.LocationTracking" enum.

Mais cette caractéristique a aussi un point d'attention. OS peut révoquer - terminer votre session à tout moment - la pénurie de batterie, le manque de temps CPU, l'application drainer la ressource, etc Lorsque la session est révoquée, nous ne pouvons rien faire - nous ne pouvons pas relancer la session parce que la situation de révocation n'est pas résolu - révoqué à nouveau immédiatement. Cela signifie la perte de données de localisation. Dans mon cas, cette - perte de données de localisation - n'est pas acceptable pour mon scénario App. J'ai réalisé que l'exécution prolongée n'est pas adaptée à mon application. Mais, si c'est acceptable - comme une application de fitness ou quelque chose comme une application de loisir -, l'exécution prolongée est une bonne option.

Remarques

  • Si vous avez l'alimentation secteur, le Révoquer sera rare. L'exécution prolongée est une bonne option.
  • Vous pouvez utiliser la fonctionnalité restreinte pour empêcher la révocation de l'exécution étendue. Mais, si vous utilisez cette fonctionnalité, vous ne pouvez pas utiliser le magasin pour déployer votre application.

3) GetGeopositionHistoryAsync

Je crois que c'est le meilleur pour le régime d'application UWP - ne repose pas sur BackgroundTask ni exécution prolongée. OS lui-même conserve l'historique des positions - nous pouvons simplement le récupérer avec cette API.Nous n'avons pas à obtenir les données de localisation périodiquement par nous-mêmes.

Mais il y a un obstacle: pour utiliser cette API, vous devez obtenir l'autorisation de Microsoft. Parce que cette fonctionnalité est un type de capacités restreintes. Je n'ai pas essayé d'obtenir l'autorisation, donc je ne peux pas vous dire que c'est difficile ou non.

App capability declarations

+0

pnp0a03 demande sans vergogne ... vous avez peut-être un certain temps pour aider une autre victoire dev MVP? ;) Dans notre application de passe-temps, nous avons essayé d'ajouter cette extension d'exécution et nous recevons des erreurs de la part des utilisateurs. Peut-être que vous pouvez nous dire un peu ce que nous pouvons ajuster pour mieux cela? Code est ici: https://github.com/AppCreativity/Kliva/blob/master/src/Kliva/ViewModels/RecordViewModel.cs#L176 – Depechie

+0

@Depechie Excusez-moi mais je ne peux pas aider votre projet - je veux passer mon temps pour mon projet. En fait, je n'ai pas pu surmonter la difficulté de l'exécution prolongée et le comportement étrange de Win10M imprementation sur mon projet 2016 et j'ai arrêté le projet. Après cela, j'ai remarqué que l'existence de l'histoire de l'emplacement api mais il était trop tard. – pnp0a03

+0

Bien joué pas avec l'histoire de Geo moi-même. Mais pour une application de suivi de vélo qui ne serait pas idéale je suppose:/ – Depechie