如何显示用户是否已在 android 内到达目的地?

How to show user if he has reached the destination in android?

最近开发了一个旅游领域的app。该应用程序的目的是向用户展示;从源到目的地的路径。当用户进入目的地 25 米范围内时,用户会收到通知/提醒,说明目的地就在附近。

我试图实现的目标: 在 onLocationChanged() 中,我一直在寻找目的地的范围,如果用户在范围内,notification/alert 将弹出。但是,当我测试该应用程序时,我发现当我在该范围内时,通知会可怕地淹没设备,因为显示 notification/alert 的条件是基于 onLocationChanged() 的,即随着位置的变化,循环执行完全相同的次数,用户会对应用感到厌烦。

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

这个问题困扰了我很久。请帮我解决这个问题!!

您可以检查通知显示的次数,例如在循环中

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

可能最好结合的两种可能的解决方案:一,使用静态对话框,这样您只有一个警报实例;二、一到达目的地就取消注册 onLocationChanged() 侦听器(第一次提醒用户)。

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

整数计数=0;
public void onLocationChanged(Location locFromGps) {

if(locFromGps<=30) {

如果(计数==1) {

退出(0);

}

count++;

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

}

    }