2011-12-31 66 views
5

我们正在开发一款具有沉重GPS使用的应用程序,我们无法优化电池寿命。iPhone GPS - 电池快速排放

即使当设备没有移动,有显着电池排水,根据守则,不应该发生。

下面是代码:

locationManager = [[CLLocationManager alloc] init]; 
locationManager.distanceFilter = 100; 
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; 
[locationManager startUpdatingLocation]; 

理想情况下,我们要触发GPS每20分钟(如果没有位置变化,则节省电池)或每5分钟,如果有位置的变化。根据我的开发以前我们使用kCLLocationAccuracyBest,这是消耗电池非常快,我们现在用kCLLocationAccuracyHundredMeters这个不能做

startUpdatingLocation - 是获取GPS坐标。还有一个叫startMonitoringSignificantLocationChanges,它可以获得AGPS坐标,我相信无论何时单元塔会改变,都会返回坐标,因此消耗电池非常快。

distanceFilter - 在更新事件生成之前,设备必须横向移动的最小距离(以米为单位测量)。在距离过滤器的基础上,我们从设备获取GPS定位,然后将更新的GPS坐标发送到服务器。

任何帮助将不胜感激 谢谢!

+3

长时间运行传感器,尤其是gps,无论您做什么,都会耗尽电池。如果你想延长寿命,那么降低你的采样频率。 – 2011-12-31 17:58:22

+0

Hi Maverick3,我们希望每20分钟检查一次GPS位置以节省GPS电池。有没有办法来实现这个?根据我的开发人员,我们无法做到这一点。我会欣赏任何提示。 – KB403 2011-12-31 18:10:51

+0

我会建议使用StartLocating和StopLocating与定时器,然后分析看功耗如何变化。另一种选择是如果可以访问Internet,则使用位置提供商服务。但这不太准确。 – Totoro 2013-01-31 01:49:18

回答

-1

理想情况下,我们要触发GPS每20分钟(如果没有 位置变化,则节省电池)或每5分钟,如果有 位置变化。根据我的开发这不能使用一个NSTimer调用的方法每20分钟一个startLocating(即创建CLLocationManager并在其上调用startLocating一个自定义的方法)来完成

可以这样做。一旦你找到了你喜欢的精确的CLLocation,一定要调用CLLocationManager的stopLocating

但是,这样做意味着20分钟内您可能会使用完全关闭的位置。这取决于你打算如何使用这个位置以及它需要的精度,但是也许你的开发者认为“不可能”意味着你的应用程序始终需要用户的实际位置。

+0

Hi Samvermette,你有任何建议如何优化电池寿命任何其他方式?当没有移动并且应用程序在后台时,我们没有检查电池寿命20分钟。但是,当应用程序处于前台时,要更新gps位置。谢谢你的帮助。 – KB403 2011-12-31 18:52:47

+0

确保您调用'stopLocating'并取消所有正在进行的'appDidEnterBackground'上的网络请求。 GPS和天线是iOS设备中耗尽最多电池的。 – samvermette 2011-12-31 19:01:14

+0

这个解决方案的问题是,什么吸电池是GPS打开。 – 2012-04-28 03:19:49

4

还有一个呼叫startMonitoringSignificantLocationChanges这 是让AGPS坐标,我相信回报坐标 只要手机信号塔会发生变化,因此会消耗电池真的 快。

这正是它所做的,但是你会对所需的功率做出结论。 GPS接收器和WiFi收发器可用于帮助确定位置,但它们是必须通电才能使用的额外设备。但是iPhone这样的手机无论如何都需要与最近的手机大厅保持联系,以便接听电话,所以使用手机信号塔作为位置信息源应该在功率方面非常高效。下面介绍一下CLLocationManager reference page说,关于-startMonitoringSignificantLocationChanges

该接口提供了新的事件,只有当它检测到更改 设备的相关信号发射塔,从而减少频繁的更新 和显著降低功耗。

它还将服务描述为提供“巨大的节能”,因此它似乎是您描述的工作的正确工具。当然,如果你是使用标准的位置更新机制在同一时间你不会看到节电,所以请确保你没有使用两者。

理想情况下,我们要触发GPS每20分钟(如果没有 位置变化,则节省电池)或每5分钟,如果有 位置变化。根据我的开发人员,这不能做

这听起来像这里有一些误解。如果这是你想要的,你可以每隔20分钟启动一次GPS以获得修复,尽管你无法从背景中做到这一点。重要的位置更改服务即使在后台运行,也会通知您的应用程序,因此您的开发人员可能正在讨论后台更新。

0

您认为startMonitoringSignificantLocationChanges消耗电池真的很快可能不正确。细胞塔的变化通常比100米的运动少得多。即使在空闲和所有应用都在睡觉时,iPhone也会检查此事件。

但是,如果远离任何塔(仅限1 bar)时保持手机(例如飞机模式关闭),无论应用程序是否在进行任何位置监控,都会耗尽设备的电池电量。

在股票iOS设备上,应用程序无法在每隔20分钟或每5分钟一次的定时器的基础上触发位置监视,无需保持设备开启,并且您的应用程序在前台运行,否则会导致电池电量耗尽。

0

如果您需要很高的精确度,您应该启动UpdatingLocation,一旦您获得第一次修复,您应该stopUpdatingLocation,然后startMonitoringSignificantLocationChanges。

这对于大多数应用程序而言已足够。