在Android中,我使用警报管理器通过GPS获取每30秒的位置.我想使用geopoints检测设备是在旅行还是在同一位置.如果设备在同一位置GPS获得一些准确数据,有时会在距离地图上显示的准确位置20或30米处获得近似数据.
因此,寻找设备旅行时遇到了问题.
如何找到设备不是旅行?
此外,在locationListener中,您可以执行以下操作:由于收到的GPS信号即使位于相同位置也会有所不同,因此您不能仅将新位置与旧位置进行比较.我会使用类似下面的代码
double venueLat =latitude // Last known lat
double venueLng = longitude // Last known lng
double latDistance = Math.toRadians(userLat - venueLat);
double lngDistance = Math.toRadians(userLng - venueLng);
double a = (Math.sin(latDistance / 2) * Math.sin(latDistance / 2)) +
(Math.cos(Math.toRadians(userLat))) *
(Math.cos(Math.toRadians(venueLat))) *
(Math.sin(lngDistance / 2)) *
(Math.sin(lngDistance / 2));
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double dist = 6371 * c;
if (dist<0.01){ (in km, you can use 0.1 for metres etc.)
/* If it's within 10m, we assume we're not moving */
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2730 次 |
| 最近记录: |