0
나는 정기적 인 시간에 사용자의 마지막 위치를 감지해야하는 응용 프로그램을 만들고 있습니다. 나는 구글에서 찾은 튜토리얼을 사용했지만 그 중 아무도 도움이 필요하지 않다. 여기 내 코드 샘플입니다.배경 에이전트, 마지막 사용자 위치 찾기
내 schdeuledactionservice는 app.xaml.cs. 파일 내에 만들었습니다. 그리고 WMAppManifest.xml 안에 확장 된 작업을 추가했습니다. WMAppManifest.xml
<ExtendedTask Name="BackgroundTask">
<BackgroundServiceAgent Specifier="ScheduledTaskAgent" Name="ToDoSchedulerAgent" Source="ToDoSchedulerAgent" Type="ToDoSchedulerAgent.TaskScheduler" />
</ExtendedTask>
스케줄러 에이전트 코드에서
: 모든 "ScheduledActionService.LaunchForTest"최종 응용 프로그램에 사용하지 말아야의public class TaskScheduler : ScheduledTaskAgent
{
public const string Name = "ToDoLocator";
public static Location location;
protected override void OnInvoke(ScheduledTask task)
{
if (task is PeriodicTask)
{
GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High)
{
MovementThreshold = 10
};
watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);
watcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(watcher_StatusChanged);
ScheduledActionService.LaunchForTest(task.Name, TimeSpan.FromSeconds(3));
watcher.Start();
}
NotifyComplete();
}
void watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
{
throw new NotImplementedException();
}
void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
Deployment.Current.Dispatcher.BeginInvoke(() => PositionChanged(e));
}
void PositionChanged(GeoPositionChangedEventArgs<GeoCoordinate> e)
{
location = new Location();
location.Latitude = e.Position.Location.Latitude;
location.Longitude = e.Position.Location.Longitude;
}
}
내 또 다른 질문은 초기화하는 데 걸리는 시간입니다 이. 왜냐하면 아직도이 방법을 사용하여 프로그램 내 위치 값을 읽을 수 없기 때문입니다. –
나는 1 초 이내에 값을 얻었다. 또한 앱 메인 페이지에 위치 기능을 추가 했습니까? –
네이티브 맵 앱을 실행 한 후, 나는 지금 일하는 에이전트를 얻었지만 어쨌든 매 30 분마다 라이브 결과를 얻을 수 있습니까? –