如果Google Play服务无法获得位置修复,我该如何收到通知?

时间:2013-08-30 14:02:27

标签: android gps google-play-services location-client

我有一个Android应用程序,需要确定其当前位置(使用Google Play服务LocationClient),然后将该位置发送回服务器。这需要定期在后台进行,例如每5分钟

此代码运行良好,通常在几秒钟的容差范围内每隔5分钟提供一次位置。当android无法修复时会出现问题。在这些条件下,我期望在5分钟后使用NULL位置对象运行回调,但是这不会发生。应用程序只是继续寻找位置,而不会调用回调。

我使用如下创建的locationRequest对象调用LocationClient的requestLocationUpdates方法

locationrequest = LocationRequest.create();
locationrequest.setInterval(5 * 60 * 1000);  
locationrequest.setFastestInterval(3 * 60 * 1000);
locationrequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationrequest.setExpirationDuration(45 *1000);
locationclient.requestLocationUpdates(locationrequest, mPendingIntent);

我看不到让LocationClient每5分钟给我打电话的合适方法,即使它无法获取位置。我很欣赏我可以每隔5分钟发出一次警报,然后将最近的位置发送回服务器,但我希望能够在回调中处理发送。

是否有其他人必须处理这种情况,或者知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我不知道你在其余的代码中做了什么,但我认为你只需管理LocationRequestLocationClient与{{1的生命周期方法有关的方法您正在调用它们或Activity

来自android开发人员博客的receiving location updates教程和this post就是很好的例子。

如果您在FragmentLocationClientonResume()期间开启和关闭这些更新,您的应用必须与onCreate()相关联才能收到更新,因此您只能有效地运行应用程序在前台时的计时器。然后,正如开发人员博客文章建议的那样,当您的应用程序在后台时,您可以切换到仍然可以接收更新的被动位置监听器,但不会使用相同的基于计时器的方法。当您的应用程序返回到前台时,您可以关闭被动侦听器,重新连接到onStop()并再次启动5分钟计时器。