- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试实现延迟位置更新以获得更好的电池消耗。我正在这样启动我的位置管理器:
- (void)initCoreLocation
{
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.distanceFilter = kCLDistanceFilterNone;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.pausesLocationUpdatesAutomatically = YES;
self.locationManager.activityType = CLActivityTypeAutomotiveNavigation;
//Très important pour iOS9 !
if ([self.locationManager respondsToSelector:@selector(allowsBackgroundLocationUpdates)]) {
self.locationManager.allowsBackgroundLocationUpdates=YES;
}
if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[self.locationManager requestAlwaysAuthorization];
}
[self.locationManager startUpdatingLocation];
[self.locationManager startMonitoringSignificantLocationChanges];
}
然后像这样开始延迟更新:
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
if (!self.deferringUpdates) {
[self.locationManager allowDeferredLocationUpdatesUntilTraveled:CLLocationDistanceMax timeout:30];
self.deferringUpdates = YES;
}
}
-(void)locationManager:(CLLocationManager *)manager didFinishDeferredUpdatesWithError:(NSError *)error { // Stop deferring updates
if(error) {
NSLog(@"error");
}
NSLog(@"didFinishDeferredUpdates");
self.deferringUpdates = NO;
}
我每 30 秒记录一次 didFinishDeferredUpdates
,但是 didUpdateLocations
每秒都在调用,消除了任何优化电池消耗的尝试。是否假设位置管理器每 30 秒调用一次 didUpdateLocations
?
最佳答案
也许您没有采用正确的方法,因为 allowDeferredLocationUpdatesUntilTraveled()
告诉 GPS 硬件在内部存储新位置,直到满足指定的距离或超时条件。
来自 iOS 开发者库:
If your app is in the foreground, the location manager does not defer the deliver of events but does monitor for the specified criteria. If your app moves to the background before the criteria are met, the location manager may begin deferring the delivery of events. Link
关于ios - didUpdateLocations 每秒通过延迟更新不断调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33822590/
我正在尝试在我的示例应用程序中实现经度和纬度。我使用 iPhone 5s 设备进行测试。它不会对按钮操作的纬度和经度标签产生任何影响。 在编译 Xcode 之前,在 didUpdateToLocati
我的应用程序中的定位服务在您第一次运行时无法正常工作。第二次,以及之后的任何时候,它都可以正常工作。这是我的代码: - (void)viewDidLoad { [super viewDidLoad];
我有一个 iOS 应用程序,它启用了用于远程通知的后台模式。整个过程中使用的 CLLocationManager 实例是通过 requestAlwaysAuthorization 进行授权的。 我有一
假设我已打开所有设备,WIFI、GPS 和 CELL。然而,我在地铁里,所有这些都被封锁了。 如果我执行 startUpdatingLocation,是否会出现超时消息?它从哪里来? (注意:我相信它
我想知道当我的手机处于稳定位置时 locationManager:didUpdateLocations: 会调用吗? 就我而言,当我将手机放在一个地方时,它不会打电话。 我将手机从房间内的一个位置放置
因此,我的应用需要每隔 15 米捕获一次位置。 在viewDidLoad中 NSOperationQueue.mainQueue().addOperationWithBlock { self.
应用程序启动后,我需要检查位置并将其发送到服务器。之后,我需要每公里检查一次位置。 因此,当我开始位置更新时,我将 distanceFilter 设置为 none,在接收到第一个位置时,我将其更改为
我正在使用 CLLocationManager 开发 ios 应用。 直到ios10,我调用了startUpdatingLocation,然后调用了didUpdateLocations,得到了一个Lo
在我的 Swift 2.0 应用程序中,我使用 CoreLocation 检查用户是否在某个地方的 1 公里以内,如果在,我使用 AVFoundation 播放声音。 问题是,当我开始在 didUpd
假设您想将 MapView 聚焦在当前位置,然后在 didUpdateLocation 中编写一些代码来处理当前位置坐标。 但是,如果您不在 CLLocationManager 对象上调用 reque
我的方法 didUpdateLocations 似乎从未被调用过?为什么是这样?我已将 key 添加到 info.plist 这是我的代码: override func viewDidLoad() {
func startLocationManager() { if CLLocationManager.locationServicesEnabled() { l
我正在尝试实现延迟位置更新以获得更好的电池消耗。我正在这样启动我的位置管理器: - (void)initCoreLocation { self.locationManager = [[CLLo
我将我的对象设置为 locationManager 的委托(delegate),并调用了 didChangeAuthorizationStatus 方法,它执行以下操作: func locationM
我想制作一个简单的 IOS 6.0 应用程序,每次更改位置时都会在屏幕上显示纬度/经度。 ViewController 文件非常简单。 我分配一个 CCLocationManager 对象,设置它的变
当应用处于事件状态并在前台运行时,didUpdateLocations 工作正常,但一旦应用进入后台,它就会停止工作 在.h文件中 @property (nonatomic, strong) CLLo
我正在尝试获取我的当前位置,但从未调用 didUpdateLocations 中的断点。 位置管理器: locationManager = [[CLLocationManager alloc] ini
我正在尝试获取用户的位置。为此,我在 info.plist 中设置了以下属性: 我还在 viewDidLoad 方法和下面的函数中添加了以下代码。问题是 locationManager(manager
我在用户位置和其余代码方面遇到问题... 我开发了一个代码,可以从 Foursquare API 检索某个位置的餐馆。我要解决的问题是: 这是我用来检索信息的 URL 字符串(纬度和经度是硬编码的,只
我使用的是XCode7.2版本 我尝试使用locationManager委托(delegate)函数 func locationManager(manager: CLLocationManager,
我是一名优秀的程序员,十分优秀!