Windows Phone 8.1 Standort-tracking
Ich möchte, dass eine App, die kontinuierlich senden Gerät auf die position-web-service. Suchen Sie in der Dokumentation, die ich gefunden habe, Geolocation-Klasse und einige Artikel, in denen die position-tracking wird diskutiert:
- Wie verfolgen Sie kontinuierlich den Standort des Handys für Windows Phone 8
- Wie Sie führen Standort-tracking-apps, die im hintergrund für Windows Phone 8
Umsetzung der beiden Beispiel-Projekte diskutiert, die in diesen Artikeln, ich habe bemerkt, dass die geolocator_PositionChanged () - Ereignis nicht ausgelöst wird, die auf jeder position zu aktualisieren. Es gibt eine Verzögerung (ungefähr 10/15 Minuten) zwischen 2 Durchführung der Veranstaltung. Das merkwürdige ist, dass dies geschieht, selbst wenn die App ausgeführt wird, in den Vordergrund (nicht nur im hintergrund). Ich bin mit Windows-Phone-emulator.
In meiner App habe ich eine map wo ich zeigen müssen Benutzer die position und, also, ich brauche, dass die geolocator_PositionChanged () - Ereignis werden richtig ausgelöst für jede position-update, ohne Verzögerungen.
1) Wie kann ich den Pfad (ohne Verzögerungen) die position des Gerätes mit Geolocator-Klasse?
Suche über das Netzwerk, die ich gefunden habe, die GeoCoordinateWatcher Klasse, der kontinuierlich die position-tracking des Geräts. Dies ist der code:
public MainPage()
{
InitializeComponent();
this.GetCoordinate();
}
private void GetCoordinate()
{
var watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High)
{
MovementThreshold = 1
};
watcher.PositionChanged += this.watcher_PositionChanged;
watcher.Start();
}
private void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
//Get position data
var pos = e.Position.Location;
//Update mypos object
mypos.update(pos.Latitude, pos.Longitude);
//Update data on the main interface
MainMap.SetView(mypos.getCoordinate(), MainMap.ZoomLevel, MapAnimationKind.Parabolic);
}
Funktioniert es: watcher_PositionChanged () - Ereignis ausgelöst wird, ohne Verzögerungen.
2) Warum die GeoCoordinateWatcher keine Verzögerungen? Was ist der Unterschied zwischen GeoCoordinateWatcher Klasse und Geolocator-Klasse?
Schließlich sollte die App senden-Gerät die position auf der web-service auch wenn es nicht aktiv ist. Also, ich brauche ein hintergrund-task. Wie vorgeschlagen hier von Romasz, die ich verwenden kann, Geolocator-Klasse mit einigen Einschränkungen.
3) Kann ich GeoCoordinateWhatcher im hintergrund? Wenn ja, wie?
Mein Ziel ist es zu erkennen, dass eine position-tracking-App ohne Verzögerungen, das funktioniert sogar im hintergrund. Was ist der beste Weg, dies zu tun? Sollte die App verfolgen Sie die position des Geräts und aktualisieren ständig die web-service (auch im hintergrund). Wie kann ich dies tun? Was ist der beste Ansatz? Ich weiß über die Windows-Phone-Apps lifecycle und ich kann akzeptieren, einige Einschränkungen für die Ausführung im hintergrund. Was sind die Hintergründe Grenzen?
InformationsquelleAutor smn.tino | 2014-06-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider von Windows Phone 8.1 nicht unterstützt kontinuierliches tracking in den hintergrund. Wenn Sie möchten, dass diese Funktion müssen Sie entwickeln eine app für Windows Phone 8 statt. Hoffentlich werden Sie dieses Problem beheben, für 8.2, 9 oder was auch immer als Nächstes kommt!
Ich habe tatsächlich Suche nach verbindungen zur Sicherung meiner Aussage, wenn ich diese Antwort gepostet, konnte aber nichts finden, prägnant. Erhielt ich diese info bei einem Windows Phone 8.1 Kickstart-Event hosted by Hannes Nel im April 2014. Er hatte praktisch die Folien zeigen, welche API ist, wo und nicht verfügbar in den verschiedenen 8-und 8.1 Aromen von Windows Phone-Projekten. Der Grund, ich erinnere mich an diese Tatsache so gut ist, weil ich gewonnen habe ein Lumia 820 für die Beantwortung einer Frage zu Fragen, was nur möglich war in Verbindung mit Windows Phone 8 API ' s und nicht 8.1 API. Ich war enttäuscht, wie Sie gemeint sind, kann ich nicht aktualisieren, app 8.1, weil dieser.
Es ist hier angegeben: msdn.microsoft.com/en-us/library/windowsphone/develop/... > Kontinuierliche Ausführung im hintergrund nicht unterstützt Silverlight 8.1-apps
Ich fand auch das Silverlight 8.1 info, aber es gilt nicht für den Universal-App-Seite von Windows Phone 8.1 also habe ich weiter suchen.
Kam ich in Kontakt mit Hannes Nel. Er erzählt mir, er beschafft seine Dias von dieser kostenlosen online-Kurs - microsoftvirtualacademy.com/training-courses/... - Folie 58 auf dem Abschnitt "01 | Einführung in die Windows Phone 8.1 App-Entwicklung..." Staaten "Funktionen, die Nur Verfügbar auf der Silverlight-Plattform" "Kontinuierliche hintergrund-Standort-tracking (SL 8.0)". Nur um zu klären - man kann immer noch hintergrund-tracking auf WP8.1, Sie einfach zu erstellen Sie Ihre app als WP8-Projekt zur Erreichung dieses (leider!).
InformationsquelleAutor Gavin
Es ist ein Weg, können Sie erreichen eine Ortung, aber es hat seine Grenzen. Es ist nicht genug für einer Sport-app, aber für viele andere Anwendungsfälle wird es passen. Verwenden
Geofence
und einBackgroundTask
mitLocationTrigger
Hier ein Beispiel:
Dadurch wird ein geofence Kreis mit dem Mittelpunkt in Ihrer position und einen radius von 25 meter. Wenn Sie beenden, dass die spezifizierten Bereich der hintergrund-task ausgelöst wird. Stellen Sie sicher, aktualisieren Sie die geofence zu Ihrer neuen position und Sie werden benachrichtigt, wenn jemals der Benutzer bewegt sich mehr als 25 meter.
Aber im Hinterkopf behalten, dass die
BackgroundTask
muss nicht ausgeführt werden müssen, sobald Sie verlassen die Grenzen des Zauns. Es könnte eine Verzögerung von bis zu ein paar Minuten (ich habe nie bemerkt, eine Verzögerung von mehr als einer minute, nachdem ich die Links der Kreis). Wie ich schon sagte: nicht genug für einer Sport-app, aber es kann zu Ihren Bedürfnissen passt.Für weitere detaillierte Informationen schauen Sie hier:
http://msdn.microsoft.com/en-us/library/windows.devices.geolocation.geofencing.aspx
Für ein Beispiel-Projekt sehen Sie hier:
https://code.msdn.microsoft.com/windowsapps/Geofencing-and-geolocation-d7ea0ef8
Bemerkungen:
Ich habe gelesen, dass es sehr empfehlenswert ist, nicht mit einem radius kleiner als 50. Aber in meinen tests 25 gut gearbeitet, so dass Sie besser überprüfen, die sich selbst als gut.
auch der Beispiel-code ist oben gepostet. Was fehlt dir?
ist es möglich, die Lage zu azure mobile service innerhalb diesem hintergrund Aufgabe
In der Tat mache ich das senden meiner Position zu einer azure-backend registriert mit der hintergrund-task. Es ist kein Handy-service, aber ich sehe keinen Grund, warum dies nicht funktionieren sollte, wie erwartet.
Wie hast du das "senden Lage zu azure-backend registriert mit der hintergrund-task". Ich begann hier eine Frage [stackoverflow.com/questions/34831107/...
InformationsquelleAutor christoph
Habe ich genau das gleiche wie @christoph... ich habe gerade die Eingegeben Ereignis... Meine updates erfolgt alle 2 Minuten, IMMER.
InformationsquelleAutor 130nk3r5