[Android]:关于GoogleFusedLocation API的一些问题

[Android]:关于GoogleFusedLocation API的一些问题,android,gps,google-play-services,fusedlocationproviderapi,Android,Gps,Google Play Services,Fusedlocationproviderapi,我目前正在开发一款Android应用程序,它使用位置来操作。想象一下,当您运行应用程序时,它将显示所有酒店附近的内容 阅读互联网后,我将Google Fused Location应用于我的应用程序,但出现了一些问题,我不知道如何解决 以下是我的方法: 当SplashActivity启动时,我运行LocationService来创建位置请求和请求位置更新。我使用高精度选项,同时使用GPS和网络提供商 在onLocationChanged()中,我调用地理代码意图服务来解析lat lng到地址 当G

我目前正在开发一款Android应用程序,它使用位置来操作。想象一下,当您运行应用程序时,它将显示所有酒店附近的内容

阅读互联网后,我将Google Fused Location应用于我的应用程序,但出现了一些问题,我不知道如何解决

以下是我的方法:

  • 当SplashActivity启动时,我运行LocationService来创建位置请求和请求位置更新。我使用高精度选项,同时使用GPS和网络提供商
  • 在onLocationChanged()中,我调用地理代码意图服务来解析lat lng到地址
  • 当Geocode Intent服务完成时,我会收到ResultReceiver的结果(我的做法与Google教程完全相同),并向SplashActivity发送广播
  • 当SplashActivity接收广播时,我开始我的MainActivity

    • 请让我知道我的方法是否正确使用FusedLocationService,这是我第一次制作基于位置的应用程序

    • 有时,onLocationChanged()需要很长时间才能响应(大约3分钟,有时是永远)。我注意到这个问题只发生在安卓操作系统5、6、7上(我确实请求权限),但有时速度非常快(1-2秒)。这个问题快把我累死了,我不知道怎么解决这个问题

    • 我正在考虑应用最后一个已知位置来解决上述问题,但我想知道是否有办法为requestLocationUpdate()设置超时。我的应用程序需要用户当前位置来显示数据,所以我认为最后一个已知位置不是一个好主意。不管怎样,很高兴听到你对这件事的看法


  • 感谢阅读。

    首先,考虑一个位置是新的还是旧的可能取决于您的场景。我的意思是,10分钟前的位置可能对天气应用程序有用,但听起来不适合跟踪意图

    IMHO,整个过程似乎有点糟糕,即使在启动屏幕后,您也可以给用户提供接收位置的机会

    无论如何,我有一个方案给你

    • 定义超时值,例如10秒
    • 使用立即值发出位置请求(设置间隔和最快间隔0)
    • 如果您收到位置,请删除位置更新,停止超时并使用位置(适用于地理编码器)
    • 我们无法接收位置,超时已完成,请参阅最后一个已知位置
    • 如果最后一个已知的位置对我们来说很好(在第一段中提到),请使用位置(对于地理编码器)

    这不是一个好主意,启动屏幕是为了给您的应用程序打上品牌,要做少量的工作,如检查新版本或检查是否有可用的连接,我建议您将代码移动到“MainActivity”并显示进度指示,如果你不舒服地使用<代码>谷歌融合位置<代码>尝试使用它将简化位置服务的实现,祝你好运:@ MohamedRa谢谢你的建议,我会考虑移动位置代码。但是长时间的接收位置怎么样,你知道为什么吗?谢谢你的场景,这也是我的想法。你知道为什么有时候接收地点需要这么长时间才能回复吗。当我在测试时,什么也不会发生,但当用户使用我的应用程序时,他们会不断报告此问题,因为您在设备上测试了很多次应用程序,并且您的设备已经收到第一次修复(TTFF),并且您的设备可能接近屋顶或窗户。对我来说,我的设备无法在墙与墙之间的办公室中接收位置更新。