检测设备是否在Android中处于运动状态

时间:2016-06-02 10:09:18

标签: android

如何在Android中检测设备是移动还是在一个位置?

实际上我不想在设备位于1处时插入位置。

我尝试过使用Accelerometer&活动识别。但它没有帮助。任何好的例子都会有所帮助。

2 个答案:

答案 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.
        }
    }
}

此外,只有当“活动识别”报告用户正在移动时,您才会启用收听位置。