使用iOS CLLocationManager节约电池
考虑到我的应用程序的限制,我正在尝试使用CLLocationManager来提高能效:使用iOS CLLocationManager节约电池,ios,core-location,Ios,Core Location,考虑到我的应用程序的限制,我正在尝试使用CLLocationManager来提高能效: 如果应用程序处于模式“A”,请提供尽可能多且准确的位置数据 尽可能的 如果应用程序处于模式“B”,请至少每10分钟签入一次 “足够好”(大约500米)的位置数据 模式“A”和模式“B”必须在应用程序处于 背景 由于约束条件3,我在plist中将“location”添加到UIBackgroundModes中。 我正在配置我的核心位置管理器,如下所示: - (CLLocationManager *)manager
- (CLLocationManager *)manager {
if (_manager == nil) {
_manager = [[CLLocationManager alloc] init];
_manager.desiredAccuracy = kCLLocationAccuracyBest;
_manager.distanceFilter = kCLDistanceFilterNone;
_manager.pausesLocationUpdatesAutomatically = NO;
_manager.delegate = self;
}
return _manager;
}
我还定义了如下枚举:
typedef NS_ENUM(NSUInteger, LocationMonitoringMode) {
LocationMonitoringModeSignificantChanges, //Mode B
LocationMonitoringModeContinuous, //Mode A
};
我是这样用的:
- (void)setLocationMonitoringMode:(LocationMonitoringMode)mode {
if (mode == LocationMonitoringModeContinuous) {
[self.manager stopMonitoringSignificantLocationChanges];
[self.manager startUpdatingLocation];
} else if (mode == LocationMonitoringModeSignificantChanges) {
[self.manager stopUpdatingLocation];
[self.manager startMonitoringSignificantLocationChanges];
}
}
问题:使用CLLocationManager,“切换”是节约电池的有效方法吗?使用
kclocationaccuracycybest
和kclocationaccuracycy3kilometers
(gps与蜂窝基站无线电)时,btwn的功耗存在明显差异。但是是否也有较大的成本,比如说kclocationaccuracycybest
,kclocationaccuracycynearest10米
?第一个问题:
对。切换看起来很好。您不必创建两个单独的位置管理器实例
根据苹果公司关于CoreLocation的文件
“重大变化”定位服务提供的准确性足以满足大多数应用程序的需要,是标准定位服务的省电替代方案。这项服务使用Wi-Fi来确定用户的位置并报告该位置的变化,使系统能够比其他方式更积极地管理用电
第二个问题:
你可以使用苹果公司的能源诊断仪器来查看GPS芯片的供电精度。我们最近的调查表明,当期望的精度或距离滤波器值小于100米时,GPS芯片将通电。仪器提供的能量使用值对于我来说非常粗糙,无法在期望的精确度和电池使用之间得出任何直接的相关关系。然而,根据流行的观点,如果可以的话,不打开GPS芯片是节约能源的一个很好的代表
kCLOCATIONACURACYBEST
和kCLOCATIONACURACYNEAREST10米的成本相同。任何低于100米的物体都需要该设备为GPS芯片通电。