【问题标题】:Detect stationary device using GPS使用 GPS 检测固定设备
【发布时间】:2012-06-27 01:22:26
【问题描述】:

我正在创建一个应用程序,它会在用户静止几分钟(比如 10 分钟)时提醒用户。

我发现很容易检测运动,使用 LocationListener 如果设备移动了一定距离就会触发一个函数。

但是,我想要一些不同的东西。如果设备在一定时间内没有移动,我希望调用一个函数。

我如何做到这一点?

【问题讨论】:

  • 他们需要保持多稳定?您可以更精确地使用加速度计。
  • 它很粗糙。比如说,不到 100 米被认为是静止的。

标签: android gps


【解决方案1】:

您可以轻松设置计时器,当 LocationListener 触发时,将计时器重置为零。如果计时器达到 10 分钟,那么您就知道用户没有移动。这种方法的缺点是计时器必须继续运行,因此您需要安装为服务。

http://developer.android.com/reference/java/util/Timer.html

【讨论】:

  • 但是 LocationListener 会在有一些移动时触发。所以在这种情况下,它永远不会触发。
  • 没错。您只需在计时器触发时重置计时器,因此,当它不触发时,您的计时器将达到 10 分钟并且您知道它们没有移动。
【解决方案2】:

这样的事情可能会起作用我不确定这段代码是否有效,我没有测试它,但通常你需要做的是获取当前位置。然后使用计时器在 10 分钟内检查它是否仍在同一位置。如果不使用意图来启动新活动。

private double locationcheck;

locationcheck = this.getcurrentlocation();

public double[] getcurrentlocation(){
double[] locations= new String[2];
l = lm.getLastKnownLocation(providers.get(i));
locations[0] = l.getLatitude();
locations[0] = l.getLongitude();
return 
}

那就用这个方法检查一下吧:

 final Handler handler = new Handler(); 
           Timer t = new Timer(); 
            t.schedule(new TimerTask() { 
                    public void run() { 
                            handler.post(new Runnable() { 
                                    public void run() { 

                                        if (locationcheck!=this.getcurrentlocation()) {

    Intent i=new Intent(ctxt, YourActivity.class);
        StartActivity(i);

                                        }   
                                    } 
                            }); 
                    } 
            }, 3000,10000); 

【讨论】:

  • 但是记住计时器会一直运行并且会使用这么多内存,所以最好在服务中使用它并从 MapActivity 调用服务
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
  • 2019-01-07
  • 1970-01-01
  • 2012-10-06
  • 2016-07-07
相关资源
最近更新 更多