背景位置跟踪以计算他们行进的距离和路线图

Posted

技术标签:

【中文标题】背景位置跟踪以计算他们行进的距离和路线图【英文标题】:Background Location Tracking to Calculate the Distance and Route Map They Traveled 【发布时间】:2019-08-24 14:43:59 【问题描述】:

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

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

请在不使用 Google 或其他方向 API 的情况下给我任何其他方法来解决我的问题。

【问题讨论】:

由于打瞌睡和省电模式而发生此问题,任何人都可以为您提供的最大帮助是要求您使用电源管理器或唤醒管理器 【参考方案1】:

原因:

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

这些更改会影响以下 API:

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

解决方案:

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

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

【讨论】:

您好,谢谢(Lucas Zhang - MSFT)您能否提供在 xamarin 中获取后台位置的示例项目或代码链接。 docs.microsoft.com/en-us/xamarin/android/app-fundamentals/…

以上是关于背景位置跟踪以计算他们行进的距离和路线图的主要内容,如果未能解决你的问题,请参考以下文章

01迷宫

计算路线长度

location Points:到指定路线的距离

通过PHP的行车路线[关闭]

如何计算百度地图上两点的距离

如何在android中的谷歌地图上绘制路线并计算多个标记之间的距离