在 Android 上实现后台位置跟踪

Posted

技术标签:

【中文标题】在 Android 上实现后台位置跟踪【英文标题】:Implementing background location tracking on Android 【发布时间】:2017-04-13 17:51:15 【问题描述】:

我正在尝试使用 https://developer.android.com/training/location/index.html 在我的 Android 应用上实现位置实时跟踪。问题是我想使用后台进程来完成所有工作,我对应该使用哪种实现有几个疑问。

就我而言,Android Service 类创建了一个后台服务,可以附加到 Activity 或独立。这种实现的缺点是服务可以被系统杀死,以防它需要释放资源。我的问题是,即使应用程序关闭,服务也会运行吗?

另一方面,Android JobScheduler 类提供了一个批处理调度程序,该调度程序仅在需要完成作业时运行,从而避免了系统崩溃。但似乎即使在关闭应用程序后调度程序仍在运行(这是不希望的,因为我只想在应用程序处于活动状态或后台时运行跟踪服务)。

我会选择 JobScheduler,因为它消耗更少的资源并避免被系统杀死,但即使在应用程序关闭后它也会运行,这是不希望的。我应该使用哪一个?随意评论任何其他实现。

提前致谢。

【问题讨论】:

【参考方案1】:

可以通过集成Teliver SDK来实现位置跟踪。 Live Tracking made easier

Teliver SDK 包含一个代码,该代码运行后台服务以更新操作员设备中间隔的位置值,而在另一个充当接收器的设备中,将接收特定操作员的位置值并将位置绘制在地图。

第 1 步: 在您的应用程序中初始化 Telive...

     Teliver.init(this,"TELIVER_KEY");

“TELIVER_KEY”用于标识您从 Telive Dashboard 获得的应用程序。

第 2 步: 现在您可以通过以下代码开始在必须跟踪的设备中传输位置。

     Teliver.startTrip(new TripBuilder("Tracking_Id").build());

现在设备开始传输位置,创建了一个前台服务来更新位置,即使你的应用程序是 在后台运行..

第 3 步: 您可以通过以下代码的 sn-p 随时停止传输位置。

     Teliver.stopTrip("Tracking_Id");

Tracking_Id 是识别特定传输设备的标识符键。

第 4 步: 要跟踪正在传输位置的设备,请使用 Telive SDK 方法。

     Teliver.startTracking(new TrackingBuilder(new MarkerOption("Tracking_Id")).build());         

使用上面的代码示例,您可以轻松运行后台服务类来更新设备位置并接收位置值并在地图中显示发射器的确切位置

【讨论】:

以上是关于在 Android 上实现后台位置跟踪的主要内容,如果未能解决你的问题,请参考以下文章

Android 实时谷歌地图位置跟踪

如何定期在后台跟踪(如果可能)Android 设备(最新版本)?

Android后台执行的定时器实现

iPhone位置跟踪应用程序在后台的最佳方法是啥[关闭]

用于跟踪用户位置的高效后台服务

Android 上的定期前台位置跟踪