ios - 在后台运行时访问 iOS 中的加速度计

标签 ios iphone ios8 iphone-6

我是 iOS 编程新手。我想编写一个应用程序,在后台运行时可以持续访问 iPhone 6 的加速度计和气压传感器。

在我的研究中,我发现人们已经使用位置更新后台模式完成了它,但这只在应用程序暂停之前工作了 10 分钟(在 iOS 6 中变成了 3 分钟?)。我还阅读了有关使用音频背景模式播放静音作为解决该时间限制的方法的信息。不过,这似乎是一个不合标准的解决方案。

我想知道一个类似 Sleep Cycle 的应用程序是怎么来的?这样做,因为它似乎必须能够持续访问加速度计。

最佳答案

可以使用CoreMotion框架来完成。 你必须导入CoreMotion框架,然后 #import <CoreMotion/CoreMotion.h>在你的appdelegate .

这里motionManagerCMMotionManager 的对象.

xData, yData, zData是用于存储加速度计数据的 double 值。

if (motionManager ==nil) {
    motionManager= [[CMMotionManager alloc]init];
}
[motionManager startAccelerometerUpdates];

[motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
    xData = accelerometerData.acceleration.x;
    yData = accelerometerData.acceleration.y;
    zData = accelerometerData.acceleration.z;
}];

您必须在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中执行此操作.

然后您可以使用 xData, yData, zData 的这些值随心所欲 appdelegate对象,即使在背景中。

关于ios - 在后台运行时访问 iOS 中的加速度计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28941981/

相关文章:

ios - 删除所有子项

iphone - 使用 iOS 中的 searchDisplay Controller 搜索单词或字符的任意组合

iphone - 我在我的应用程序中使用的内存在终止后会变干净吗?甚至泄漏? (iOS)

ios - 我如何从 HKHealthStore 中删除多个对象?

ios - 开发者在 Apple Watch 上使用 "Taptic Engine"

iphone - 在后台加载图像以优化 ios 中的加载

ios - 如何设置特定的 UITableViewCell 分隔符位置?

iPhone操作系统: Fetching a random entity instance using NSPredicate Nsfetchrequest and core data

swift - 调试 View 层次结构不呈现 UI

ios - generateCGImagesAsynchronouslyForTimes 花费的时间太长