Android Locationprovider暂时不可用的时间太长
根据这篇文章(UPD:链接已删除,因为它现在会导致一些垃圾),在请求位置更新时设置minTime将导致提供商将自己设置为在minTime毫秒内暂时不可用,以节省电池电量。在此不活动期间,GPS提供商将自行关闭,GPS图标将消失 在我的代码中,我将minTime设置为大约30秒,但该提供程序每五分钟才暂时不可用一次。当它打开时,它最多只能暂时不可用十秒钟,然后才能重新打开。我知道这一点,因为GPS图标在再次出现之前仅消失10秒 我知道minTime设置只是Android位置提供商的一个粗略指南……但我很确定5分钟和30秒是完全不同的。有人知道这里发生了什么吗?minTime和RequestLocationUpdate实际上是如何工作的 LocationManager设置: 本地侦听器:Android Locationprovider暂时不可用的时间太长,android,location,Android,Location,根据这篇文章(UPD:链接已删除,因为它现在会导致一些垃圾),在请求位置更新时设置minTime将导致提供商将自己设置为在minTime毫秒内暂时不可用,以节省电池电量。在此不活动期间,GPS提供商将自行关闭,GPS图标将消失 在我的代码中,我将minTime设置为大约30秒,但该提供程序每五分钟才暂时不可用一次。当它打开时,它最多只能暂时不可用十秒钟,然后才能重新打开。我知道这一点,因为GPS图标在再次出现之前仅消失10秒 我知道minTime设置只是Android位置提供商的一个粗略指南……
public void onLocationChanged(Location loc) {
//Keep track of best location
//Having a location > no location
if (bestLocation == null)
bestLocation = loc;
//More accuracy > Less accuracy
else if (loc.getAccuracy() <= bestLocation.getAccuracy())
bestLocation = loc;
Log.d(TAG, "Location Updated";
}
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d(TAG, "New status: " + status);
if (status== LocationProvider.TEMPORARILY_UNAVAILABLE)
//Do stuff since the provider is temporarily off
}
从:
“后台服务应小心设置足够高的minTime,这样设备就不会因为一直打开GPS或无线收音机而消耗太多的电能。特别是,值不建议低于60000ms。”(重点是我的)
“此字段仅用作提示以节省电源,位置更新之间的实际时间可能大于或小于此值。”(重点是我的)
如果您需要立即知道位置,请使用您是否尝试增加MindDistance参数?另一方面,minTime应该在minDistance之前考虑。所以这可能不是…--
public void onLocationChanged(Location loc) {
//Keep track of best location
//Having a location > no location
if (bestLocation == null)
bestLocation = loc;
//More accuracy > Less accuracy
else if (loc.getAccuracy() <= bestLocation.getAccuracy())
bestLocation = loc;
Log.d(TAG, "Location Updated";
}
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d(TAG, "New status: " + status);
if (status== LocationProvider.TEMPORARILY_UNAVAILABLE)
//Do stuff since the provider is temporarily off
}
Location Updated
Location Updated
New status: 2
Location Updated
Location Updated
Location Updated
New status: 2
... (five minutes later)
New status: 1