locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1200000, 200, ll);
我的假设是,如果变化超过200米,它每隔120000就会得到一个位置。
至少这是我正在经历的......这就是我想要的。但如果手机最终落在没有GPS接收的金属建筑中会发生什么呢???
它是否会继续每隔1200000毫秒尝试一次GPS修复永久.. ??或者这最终会消失而不再工作.. ??
如果我将手机放在我的仪表板上并开车......每隔120000毫秒,我会发送一条带有最新坐标的短信。一切正常。但是,如果手机最终在建筑物中停留3-4-5小时,并在3-4-5小时后再回到外面......我希望它会在它停止的地方重新开始并给我一个新的位置(如果变化超过200米)。但事实并非如此。它只是停止工作,即使我有一个清晰的天空视野,我也永远不会得到一个新的位置。只是想知道在经过这么多次尝试获得GPS修复后,这是否会停止搜索GPS修复......?
答案 0 :(得分:1)
听起来您正在搜索Critera课程。
您基本上定义了一组标准,然后用于获得此标准的最佳合适提供者。然后,将此条件传递给LocationManager类的getProviders()
方法,以便将最合适的提供程序作为字符串。无论是GPS,网络等。
您也可以通过执行类似
的操作手动指定修复提供程序// Get a fix from the GPS provider
LocationProvider provider = LocationManager.GPS_PROVIDER;
// Get a fix from the Network provider
LocationProvider provider = LocationManager.NETWORK_PROVIDER;
在开发者网站上有一篇关于obtaining users location您可能想要查看的内容的非常有趣的内容。特别是关于deciding when to start listening的部分可能对您有用,但我建议您阅读整篇文章。
使用网络提供商可以在没有GPS定位的情况下获得最佳位置,换言之,也可以在建筑物内部。您必须记住,在查询网络提供商时,您获得的定位可能与实际位置完全不同。
您要求requestLocationUpdates(String provider, long minTime, long minDistance, LocationListener listener)
的方法将每隔minTime毫秒或每个minDistance米从集合提供者请求位置更新,并通知听众。
希望它有所帮助。
答案 1 :(得分:0)
您检查过this site了吗?
特别是这个链接:http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates(java.lang.String,long,float,android.app.PendingIntent)
void requestLocationUpdates(String provider, long minTime, float minDistance, PendingIntent intent)
注册当前活动,由指定提供商定期通知。
void requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)
注册当前活动,由指定提供商定期通知。 /> void requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener, Looper looper)
注册当前活动,由命名提供者定期通知。
但是您显示的调用使用int作为最后一个参数。这不是一个记录在案的功能。