如何在Android中检测设备是移动还是在一个位置?
实际上我不想在设备位于1处时插入位置。
我尝试过使用Accelerometer&活动识别。但它没有帮助。任何好的例子都会有所帮助。
答案 0 :(得分:1)
使用Fused Locaiton api来检测设备的速度但请记住,永远不要通过位置变化来计算速度,只需使用location.getSpeed()
即可。原因是GPS芯片在内部通过物理多普勒效应计算速度,而不是通过位置变化。虽然静止不动,或者速度非常低,但效果不佳,所以你必须滤除非常低的速度和不良的GPS信号。 (通过水平准确度估计)
答案 1 :(得分:1)
如果新位置位于 - 比方说 - 100m旧位置,请不要将其添加到数据库中。
private static final float SIGNIFICANT_DISTANCE = 100f;
public void onLocationChanged(final Location newLocation) {
if (newLocation != null) {
final Location oldLocation = ; // Get last location from DB / field.
if (oldLocation == null ) {
// If this is first measurement
// Add to DB.
} else if (oldLocation.distanceTo(newLocation) > SIGNIFICANT_DISTANCE) {
// If user has moved significantly
// Add to DB.
} else {
// If user hasn't moved significantly
// Ignore it or implement some sort of precision refinement logic and update entry in DB.
}
}
}
此外,只有当“活动识别”报告用户正在移动时,您才会启用收听位置。