后台位置跟踪以计算他们走过的距离和路线图

时间:2019-04-03 06:57:36

标签: android xamarin.android android-gps

我正在Xamarin.Android平台中实现一个android应用程序,该应用程序用于跟踪行进的距离和行进路线。通过在Android OS的较低和较高版本中使用后台位置服务和前景位置服务。

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

在不使用Google或其他方向API的情况下,请给我其他解决方法。

1 个答案:

答案 0 :(得分:0)

原因:

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

这些更改会影响以下API:

  • 融合位置提供者(FLP)
  • 地理围栏
  • GNSS测量
  • 位置管理器
  • Wi-Fi管理器

解决方案:

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

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);
}