首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iPhone上的Nike+ GPS如何在后台接收加速度计更新?

iPhone上的Nike+ GPS如何在后台接收加速度计更新?
EN

Stack Overflow用户
提问于 2012-01-04 01:48:19
回答 2查看 13.1K关注 0票数 33

适用于iOS 5的新Nike+全球定位系统应用程序能够在后台处理加速度计事件(从而支持室内跑步机跟踪)。这怎麽可能?当我把我的应用程序放到后台时,它停止接收事件。我使用标准的UIAccelerometer应用程序接口。

EN

回答 2

Stack Overflow用户

发布于 2012-03-07 17:41:16

为了给这个问题提供一个答案,尽管它已经是自己回答的了…

如果使用较新的Core Motion API,则可以在后台接收更新。

下面是一个示例:

代码语言:javascript
运行
复制
- (void)startAccelerationCollection {
    [self.motionManager startAccelerometerUpdatesToQueue:[[NSOperationQueue alloc] init]
                                             withHandler:^(CMAccelerometerData *data, NSError *error) {
        dispatch_async(dispatch_get_main_queue(), ^{
            [self.accelerometerReadings addObject:data];
        });
    }];
}
票数 14
EN

Stack Overflow用户

发布于 2017-07-29 04:49:08

当更新计步器时,我调用关闭和打开GPS的方法。对我来说,它解决了用户按home键并在spotify上听音乐长达一个小时的问题。

不要忘记启用项目设置->功能->后台模式->位置更新

代码语言:javascript
运行
复制
    import CoreLocation
    import CoreMotion


    //turn Off and turn On GPS
    private func apelacaoRenovarGPSLigado() {

    LocationManager.sharedInstance.stopUpdatingLocation()
    let locationManager = LocationManager.sharedInstance
    locationManager.autoUpdate = true
    locationManager.startUpdatingLocationWithCompletionHandler { (location, status, verboseMessage, error) -> () in

    }
}

private func startPedometer()
{
    if CMPedometer.isDistanceAvailable()
    {
        if self.pedometer == nil
        {
            self.pedometer = CMPedometer()
        }

        self.pedometer!.startPedometerUpdatesFromDate(NSDate()) { (data, error) in

            dispatch_async(dispatch_get_main_queue(), {

                print("DISTANCIA PARCIAL \(data!.distance!)")

                print("DIFERENCA \(data!.distance!.doubleValue - (self.totalDistance + self.subtotalDistance))")
                self.delegate!.trackerDistanceDidChanged((data!.distance!.doubleValue - (self.totalDistance + self.subtotalDistance)) / 1000.0)
                self.subtotalDistance = data!.distance!.doubleValue

                self.apelacaoRenovarGPSLigado()

            })

        }
    }
    else
    {
        self.delegate!.trackerDeviceNotSupported()
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8716466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档