后台位置跟踪,以计算他们行进的距离和路线图



我正在Xamarin.Android平台中实现一个Android应用程序,该应用程序用于跟踪他旅行的距离和路线。 通过使用后台定位服务和前台定位服务,适用于较低版本和较高版本的 Android 操作系统。

当用户关闭应用程序时,我在更高版本的Android设备(高于8.0操作系统版本)中遇到问题,我的前台服务正在停止,无法跟踪距离和路线。 它只给了我与Arial路线的起点和终点距离。

请给我任何其他方法来解决我的问题,而无需使用谷歌或其他方向API。

原因:

为了保持电池电量、用户体验和系统运行状况,在运行 Android 8.0 的设备上使用后台应用时,接收位置更新的频率较低。此行为更改会影响接收位置信息更新的所有应用,包括 Google Play 服务。

这些更改会影响以下 API:

  • 融合位置提供程序 (FLP)
  • 地理围栏
  • 全球导航卫星系统测量
  • 位置管理器
  • 无线网络管理器

溶液:

Android 8.0 引入了一种称为上下文的新方法。StartForegroundService (),在前台启动一项新服务。系统创建服务应用后有五秒钟的时间调用服务startForeground可见()方法显示用户新服务的通知。如果在此时间限制内未调用应用程序

StartForeground (),则系统将停止此ANR服务和声明的应用程序。

Intent service = new Intent(TheApplication.getInstance().getApplicationContext(), MyBackgroundService.class);
service.putExtra("startType", 1);
if (Build.VERSION.SDK_INT >= 26) {
TheApplication.getInstance().startForegroundService(service);
} else {
TheApplication.getInstance().startService(service);
}

最新更新