Android Xamarin 后台服务 - 每 x 分钟获取一次 GPS 位置?

Posted

技术标签:

【中文标题】Android Xamarin 后台服务 - 每 x 分钟获取一次 GPS 位置?【英文标题】:Android Xamarin Background service - Get GPS Location every x minutes? 【发布时间】:2018-05-25 09:33:05 【问题描述】:

我正在使用 Xamarin 开发一个应用程序,我需要一个后台服务,该服务可以定期(例如,每 15 分钟)获取用户的 GPS 位置。

这个项目 (https://github.com/xamarin/mobile-samples/tree/master/BackgroundLocationDemo) 是我能找到的最接近示例代码的项目,它声称该位置会继续更新,即使应用程序在后台运行也是如此。开箱即用,情况似乎并非如此。

这是应用程序进入后台后停止更新 GPS 后的日志。我只是想知道这是否是正常行为,正如项目描述中所说的那样。

12-12 08:19:12.324 D/MainActivity(10254): Foreground updating
12-12 08:19:12.345 D/LocationService(10254): Latitude is -44.40749468
12-12 08:19:12.345 D/LocationService(10254): Longitude is 171.25077323
12-12 08:19:12.345 D/LocationService(10254): Altitude is 4
12-12 08:19:12.346 D/LocationService(10254): Speed is 2.37
12-12 08:19:12.346 D/LocationService(10254): Accuracy is 39.664
12-12 08:19:12.346 D/LocationService(10254): Bearing is 350.9
12-12 08:19:12.348 D/MainActivity(10254): Location status changed, event raised
12-12 08:19:12.917 D/AppTracker(10254): App Event: stop
12-12 08:19:12.931 D/MainActivity(10254): OnPause: Location app is moving to background

一旦发生“应用事件:停止”,应用就会进入后台,GPS 服务将不再运行。另外,我使用的是 android 8.0 - 不确定这是否与它有关。

谁能提供见解(甚至更好的示例代码/项目)来为我指明正确的方向?

【问题讨论】:

使其成为前台服务:developer.xamarin.com/guides/android/application_fundamentals/… 谢谢@SushiHangover,我不知道这一点。我试试看。 感谢@SushiHangover,但是在 API 29 中,由于权限不足,它似乎崩溃了。我已将 添加到我的 AndroidManifest.xml 中,但它仍然崩溃。在 API 【参考方案1】:

感谢@SushiHangover,我创建了一个前台服务。现在效果很好。

【讨论】:

嗨@Rhonage 我已经尝试过前台服务来访问设备位置。但它不适合我。

以上是关于Android Xamarin 后台服务 - 每 x 分钟获取一次 GPS 位置?的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Forms - 每 10 秒获取一次设备位置(当应用程序在前台/后台运行时)

Xamarin.Android 中的后台执行

对于Xamarin Android,我无法处理点击事件的后台通知

Xamarin iOS 后台应用程序终止

重复服务呼叫 - Xamarin 表单

Google Play 服务 - 位置 Xamarin Android