如何向用户显示他是否已到达android中的目的地?

时间:2015-02-20 06:21:16

标签: android geolocation

最近,我开发了一个关于旅游领域的应用程序。这个程序的目的是向用户展示;从源到目的地的路径。当用户进入目的地25米范围的范围时,用户会收到通知/警报,表明目的地在附近。

我试图实现的目标: 在onLocationChanged()中,我保留了目的地的范围&如果用户在范围内,则会弹出通知/警报。然而,当我测试应用程序时,我发现当我在该范围内时,通知会大量涌入设备,因为显示通知/警报的条件基于onLocationChanged(),即当位置发生变化时,循环执行完全相同的次数和用户对应用程序感到恼火。

此外,当我搜索其他位置时,该应用程序无法运行。它不显示目标标记。第一次看到目标标记,但后来的搜索没有显示目标标记;我想知道为什么?!

这个问题长期以来一直困扰着我。请帮帮我!

3 个答案:

答案 0 :(得分:1)

您可以检查通知显示的时间,例如循环

boolean notification_shown = false;

    for(...) 
    {
      if(!notification_shown)
      {
        //show notification
        notification_shown = true;
      }
      else
      {
        //rest of your coding
      }

    }

这只会显示通知一次。如果您想显示通知的次数比使用计数器少几倍。像

int counter = 0;
//increment it till you want and than stop

答案 1 :(得分:1)

可能最佳组合的两种可能的解决方案:一,使用静态对话框,以便您只有一个警报实例; 2,一到达目的地就会注销onLocationChanged()监听器(第一次提醒用户)。

答案 2 :(得分:1)

当你在onLocationChange()方法中使用循环时,在你的循环中取一个变量说“count”然后检查条件的距离。在特定条件成立后,增加计数。如果计数器得到1然后弹出一个警报,然后从循环退出。

int count = 0;
public void onLocationChanged(Location locFromGps){

如果(locFromGps< = 30) {

如果(计数== 1) {

出口(0);

}

计数++;

Toast.makeText(getApplicationContext(),“Location is near”,0).show();

}

    }