android - 限制 android GPS 跟踪,但将数据收集限制在非常特定的地理区域以及手机处于运动状态时

标签 android gps geolocation battery

我正在创建一个 Android 应用程序,用于跟踪用户在特定区域的移动以用于研究目的(是的,用户将特别同意这种公开跟踪,并且可以根据需要将其关闭)。我需要非常高分辨率的空间数据,因此我需要经常使用 GPS 传感器。

我要在其中收集数据的区域大致呈矩形,大约 1 公里(0.6 英里)x 1.5 公里(0.9 英里)。当用户在此区域内运动时,我希望空间数据的最佳分辨率(可能是 10 m 空间数据,每 20 秒左右采样一次)。因为我关心研究站点边缘的空间行为,所以我正在考虑在站点周围添加 0.5 公里的缓冲区。

当然,我想尽量减少应用程序的电池使用。特别是,有两种情况我根本不想存储任何位置数据:

  1. 当用户静止不动时(在现场或不在现场);或
  2. 当用户不在现场时

不幸的是,检测用户是否不在现场需要轮询位置服务!我想在无采集(固定)、不频繁的低分辨率采集(场外)和频繁的高分辨率采集(现场)模式之间进行模式切换(参见图片)。

我应该如何在使用 Android API 节省电池生命周期的同时实现此协议(protocol)?我应该针对哪些 API?

Data collection modes

最佳答案

您是否已经考虑过检查 com.google.android.gms.location.Geofence 是否会给您足够好的电池使用量?

关于android - 限制 android GPS 跟踪,但将数据收集限制在非常特定的地理区域以及手机处于运动状态时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22445457/

相关文章:

ios - 在 iOS 中实现基于位置的服务的最佳实践

javascript - 使用 Google Maps API JS 访问标记和地点的位置

java - 增加 MPAndroidChart 百分比值的大小

android - 什么是 Smali Code Android

android - getRealPathFromURI() 不适用于基于 ICS 和 Picasa 的图像

javascript - 确定经度和纬度坐标是否在以英里和公里为单位的半径内

php - 通过 SQL/PHP 回显计算出的距离

android - 数据库更新后刷新 Listfragment 中的 ListView

node.js - 通过mongoose在MongoDB中使用RAM

Android 最初使用网络提供商获取纬度和经度,然后使用 GPS