Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Xamarin中终止应用程序时获取位置?_C#_Xamarin_Xamarin.ios_Xamarin.android - Fatal编程技术网

C# 在Xamarin中终止应用程序时获取位置?

C# 在Xamarin中终止应用程序时获取位置?,c#,xamarin,xamarin.ios,xamarin.android,C#,Xamarin,Xamarin.ios,Xamarin.android,我一直在从事一个面向位置的项目,我需要能够在应用程序终止时跟踪用户的位置 我的Android项目和 仅供参考,以下是我的地理定位器设置: App.xaml.cs public static async void StartListening() { if (CrossGeolocator.Current.IsListening) return; CrossGeolocator.Current.DesiredAccuracy = 10; await Cr

我一直在从事一个面向位置的项目,我需要能够在应用程序终止时跟踪用户的位置

我的Android项目和

仅供参考,以下是我的地理定位器设置:

App.xaml.cs

public static async void StartListening()
{
    if (CrossGeolocator.Current.IsListening)
        return;

    CrossGeolocator.Current.DesiredAccuracy = 10;

    await CrossGeolocator.Current.StartListeningAsync(TimeSpan.FromSeconds(LOCATION_PING_SECONDS), 1, true, new Plugin.Geolocator.Abstractions.ListenerSettings
    {
        AllowBackgroundUpdates = true,
        PauseLocationUpdatesAutomatically = false
    });

    CrossGeolocator.Current.PositionChanged += PositionChanged;
    CrossGeolocator.Current.PositionError += PositionError;
}
public void StartLocationService()
{
    powerManager = (PowerManager) GetSystemService(PowerService);
    wakeLock = powerManager.NewWakeLock(WakeLockFlags.Full, "LocationHelper");

    // create a new service connection so we can get a binder to the service
    locationServiceConnection = new LocationServiceConnection(null);

    // this event will fire when the Service connectin in the OnServiceConnected call 
    locationServiceConnection.ServiceConnected += (object sender, ServiceConnectedEventArgs e) => {

        Console.WriteLine("Service Connected");
    };

    // Starting a service like this is blocking, so we want to do it on a background thread
    new Task(() => {

        // Start our main service
        Console.WriteLine("App", "Calling StartService");
        Android.App.Application.Context.StartService(new Intent(Android.App.Application.Context, typeof(LocationService)));

        // bind our service (Android goes and finds the running service by type, and puts a reference
        // on the binder to that service)
        // The Intent tells the OS where to find our Service (the Context) and the Type of Service
        // we're looking for (LocationService)
        Intent locationServiceIntent = new Intent(Android.App.Application.Context, typeof(LocationService));
        Console.WriteLine("App", "Calling service binding");

        // Finally, we can bind to the Service using our Intent and the ServiceConnection we
        // created in a previous step.
        Android.App.Application.Context.BindService(locationServiceIntent, locationServiceConnection, Bind.AutoCreate);
    }).Start();

    Console.WriteLine("Aquiring Wake Lock");

    wakeLock.Acquire();
}
Android+我的位置服务在应用程序运行和后台运行时非常有用,但很明显,当应用程序终止时,一切都停止了

Android/MainActivity.cs

public static async void StartListening()
{
    if (CrossGeolocator.Current.IsListening)
        return;

    CrossGeolocator.Current.DesiredAccuracy = 10;

    await CrossGeolocator.Current.StartListeningAsync(TimeSpan.FromSeconds(LOCATION_PING_SECONDS), 1, true, new Plugin.Geolocator.Abstractions.ListenerSettings
    {
        AllowBackgroundUpdates = true,
        PauseLocationUpdatesAutomatically = false
    });

    CrossGeolocator.Current.PositionChanged += PositionChanged;
    CrossGeolocator.Current.PositionError += PositionError;
}
public void StartLocationService()
{
    powerManager = (PowerManager) GetSystemService(PowerService);
    wakeLock = powerManager.NewWakeLock(WakeLockFlags.Full, "LocationHelper");

    // create a new service connection so we can get a binder to the service
    locationServiceConnection = new LocationServiceConnection(null);

    // this event will fire when the Service connectin in the OnServiceConnected call 
    locationServiceConnection.ServiceConnected += (object sender, ServiceConnectedEventArgs e) => {

        Console.WriteLine("Service Connected");
    };

    // Starting a service like this is blocking, so we want to do it on a background thread
    new Task(() => {

        // Start our main service
        Console.WriteLine("App", "Calling StartService");
        Android.App.Application.Context.StartService(new Intent(Android.App.Application.Context, typeof(LocationService)));

        // bind our service (Android goes and finds the running service by type, and puts a reference
        // on the binder to that service)
        // The Intent tells the OS where to find our Service (the Context) and the Type of Service
        // we're looking for (LocationService)
        Intent locationServiceIntent = new Intent(Android.App.Application.Context, typeof(LocationService));
        Console.WriteLine("App", "Calling service binding");

        // Finally, we can bind to the Service using our Intent and the ServiceConnection we
        // created in a previous step.
        Android.App.Application.Context.BindService(locationServiceIntent, locationServiceConnection, Bind.AutoCreate);
    }).Start();

    Console.WriteLine("Aquiring Wake Lock");

    wakeLock.Acquire();
}
是否有人知道即使在应用程序终止时也可以获得位置更新的教程?这可能吗

谢谢

还有,我发现这个。。。上一篇帖子说,他可以在应用程序从服务终止时获得更新,但我还没有得到同样的结果