【问题标题】:Android application to detect when Google maps direction is finished用于检测 Google 地图方向何时完成的 Android 应用程序
【发布时间】:2018-06-12 15:02:55
【问题描述】:

我正在构建一个 android 应用程序,它将在谷歌地图上显示某些点,我有 (lat,lang) 与我一起显示的所有点。每当用户点击谷歌地图上的这些位置之一时,我就会开始一个新的谷歌地图意图,该意图向用户显示导航并且应该将用户带到那个(纬度,语言)。

//suppose this function is called on onclick of google maps event
    function onclick(){
            Uri gmmIntentUri = Uri.parse("google.navigation:q=32.885240,-96.763475");
            Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
            mapIntent.setPackage("com.google.android.apps.maps");
            if (mapIntent.resolveActivity(getPackageManager()) != null) {
                startActivity(mapIntent);
            }
    }

这将为用户启动导航。现在我想要实现的是 - 每当导航完成时,我希望将某种标志传递给我的 android 应用程序,以便我的应用程序知道导航已经完成。

如果可以在导航完成后自动关闭谷歌地图应用程序,那就太好了。

【问题讨论】:

  • 路线完成后,谷歌地图应用不返回任何内容
  • 我认为你能做的最好的事情是使用startActivityForResult(mapIntent, num),然后检测onActivityResult()何时被请求代码为num,这可能有助于检测用户是否点击返回返回到你的应用程序。
  • 所以为了确认我对您的回答的理解,这只会检测到用户是否点击回我的应用程序,对吧?不是当谷歌地图意图完成导航时。如果有人在导航期间点击我的应用程序,它也会检测到这不是我想要的。但是,谢谢,这些信息可能会在其他地方派上用场。我不知道这个。

标签: android google-maps


【解决方案1】:

正如@Daniel 提到的,您可以使用onActivityResult() 来检测用户何时回来。但是,如果您真的想检测 Google 地图方向是否已完成...您可以查看通知。

所以这里的问题是,当 Google 地图方向是一项服务时,当它运行时,它会将更新发布到通知中心。

这意味着您可以继续查看正在运行的服务,或者.. 获得通知中心的许可并继续检查 Google 地图是否存在。

【讨论】:

  • 谢谢,这种方法可能对我有用。让我尝试实现它。但是,如果我在实现它时发现一些困难,我会在这里发表评论寻求更多帮助。
  • @NalinAgrawal 你试过这个吗?如果您这样做了,请提供反馈。谢谢!
  • 不,我没有。我停止开发该项目。但是,如果没有其他方法,我只会使用此解决方案。因为这意味着不断的轮询,每一秒都需要大量的 CPU 周期和电池消耗。另外,它依赖于地图提供的功能。不是通过他们的 API。
【解决方案2】:

我认为,由于您建立了导航意图并拥有坐标,因此我认为更好的答案是为目的地或您在旅途中想要的任何里程碑设置地理围栏。之后,您可以使用 IntentService 在适当的活动中检索您的应用程序。

https://developer.android.com/training/location/geofencing#java

【讨论】:

  • 我就是这么做的。
猜你喜欢
  • 2017-08-08
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
相关资源
最近更新 更多