iPhone使用Objective-C关闭GPS
有人知道如何通过编程关闭iPhone的GPS吗?一旦我使用CLLocationManager三次读取我的位置,我将停止更新位置,如下代码所示:iPhone使用Objective-C关闭GPS,iphone,gps,Iphone,Gps,有人知道如何通过编程关闭iPhone的GPS吗?一旦我使用CLLocationManager三次读取我的位置,我将停止更新位置,如下代码所示: - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { if((newLocation.horizonta
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
if((newLocation.horizontalAccuracy > 0.0f) &&
(newLocation.horizontalAccuracy < 7000.0f) ){
if(self.locations.count > 3){
[self.locationManager stopUpdatingLocation];
}
[self.locations addObject:newLocation];
}
-(无效)locationManager:(CLLocationManager*)manager
DidUpdateLocation:(CLLocation*)newLocation
fromLocation:(CLLocation*)oldLocation{
如果((newLocation.HorizontalAccurance>0.0f)&&
(新位置。水平精度<7000.0f)){
如果(self.locations.count>3){
[self.locationManager停止更新位置];
}
[self.locations addObject:newLocation];
}
但当用户使用我的应用程序并耗尽电池时,GPS似乎仍然保持开启状态。我需要做的就是读取位置三次,以便获得准确的读数,然后关闭GPS。有人知道如何使用objective-C关闭GPS吗?第三方应用程序不应该接触硬件设置gs,所以我猜你不能这么做。停止更新位置为位置管理器提供关闭硬件的选项,但这不是保证的。它应该在没有其他人需要硬件时关闭硬件。实际上,它似乎可以按预期工作
stopUpdateLocation是否可能从未被调用过?在上面的代码段中,代码从未被调用过似乎并不合理。stopUpdateLocation方法应该具有所需的效果。您是否尝试过它是否被调用过(您可以通过在该行设置断点来实现这一点).我想知道您是否需要额外的线路才能到达:
[locationManager stopUpdatingLocation];
locationManager.delegate=nil;
停止位置管理器。这就是我所使用的,许多地方都有这两条线。祝你好运。对我来说,是我的地图实例显示了用户位置,让GPS保持运行。这可能是给任何尝试以上所有操作但运气不佳的人的提示 下面是我的stopGPS()函数:
-(void) stopGPS
{
NSLog(@"Stopgps");
myMap.delegate = nil;
myMap.showsUserLocation = NO;
myMap = nil;
[locationManager stopMonitoringSignificantLocationChanges];
[locationManager stopUpdatingHeading];
[locationManager stopUpdatingLocation];
locationManager.delegate = nil;
locationManager = nil;
}
Apple docs表示,如果您的定位精度超过一公里,Location manager将关闭GPS硬件: 例如,将位置事件的所需精度设置为1公里,使位置管理器能够灵活地关闭GPS硬件,并完全依靠WiFi或手机无线电。关闭GPS硬件可以显著节省电力。 从
请注意,您应仅使用标准件(不重要)位置更改跟踪。Seconded。是否确实发生了调用?是的,我在调试器中对其进行了测试,并在self.locations.count达到4后调用StopUpdateLocation。是的,我在调试器中对其进行了测试,在self.locations.count达到4后调用StopUpdateLocation。停止更新后,请确保您的位置n manager将被释放。如果需要再次开始更新,请重新创建它。这意味着您的准确性将再次不佳,但应用程序将能够更快地关闭硬件。要重新启动位置管理器,只需添加以下代码--[self.locationManager startUpdatingLocation];self.locationManager.delegate=self;