使用 Apple Healthkit 测量心率

2023-12-02

我目前正在应用程序中使用 Healthkit,获取大多数类型的信息都没有问题,但在心率方面遇到问题。每次我尝试读取样本时,结果都是“0”。我有一块 Apple Watch,我的心率被输入到 Apple Health 应用程序中,并且可以在那里直观地看到它,所以这不是硬件问题。我只需要显示它,不需要写回数据。它在第一次运行时需要我的许可才能访问心率,因此该代码应该不会有任何问题,但无论如何我都会发布它。

我能找到的大多数心率检测示例要么是 Swift(我更喜欢远离它),要么是过时的蓝牙/相机方法。

这是我正在使用的内容,主要是从代码中复制并粘贴的,用于检索代码中其他地方的步数、步行距离等...所以我可能在这个块中得到了一些与心率数据不兼容的内容类型,但我找不到它。现在看起来它将获得当天的平均心率,而不是最新的样本,这目前还可以,只要我可以看到某种类型的数据被输入到应用程序中。我找不到方法来轮询最新的心率样本,这让我相信我完全使用了错误的方法,但找不到任何其他有效的信息或样本。我已经尝试了大约 8 个不同的在线示例代码/项目,其中没有一个能够生成除“0”之外的任何结果(所以请不要链接到示例代码...我已经尝试了所有可用的代码/项目... google、github 等,所以任何链接都可能会得到“我已经测试过那个相同的错误”响应,哈哈)。这是我现在正在使用的:

我 99.9% 确信这个块给我带来了问题:

    - (void)queryHealthDataHeart{
    HKQuantityType *typeHeart =[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate];
    NSDate *now = [NSDate date];
    NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
    NSDateComponents *components = [calendar components:NSCalendarUnitYear| NSCalendarUnitMonth | NSCalendarUnitDay
                                               fromDate:now];
    NSDate *beginOfDay = [calendar dateFromComponents:components];
    NSPredicate *predicate = [HKQuery predicateForSamplesWithStartDate:beginOfDay endDate:now options:HKQueryOptionStrictStartDate];

    HKStatisticsQuery *squery = [[HKStatisticsQuery alloc] initWithQuantityType:typeHeart quantitySamplePredicate:predicate options:HKStatisticsOptionNone completionHandler:^(HKStatisticsQuery *query, HKStatistics *result, NSError *error) {
        dispatch_async(dispatch_get_main_queue(), ^{
            HKQuantity *quantity = result.averageQuantity;
            double beats = [quantity doubleValueForUnit:[HKUnit heartBeatsPerMinuteUnit]];
            _lblHeart.text = [NSString stringWithFormat:@"%.f",beats];
        }
        );
    }];
    [self.healthStore executeQuery:squery];
}

检查权限的代码:

- (void)readHealthKitData{
HKHealthStore *healthStore = [[HKHealthStore alloc] init];
NSSet *shareObjectTypes = [NSSet setWithObjects:
                           nil];
NSSet *readObjectTypes  = [NSSet setWithObjects:
                           [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceWalkingRunning],
                           [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate],
                           [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierFlightsClimbed],
                           [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount],
                           nil];
// Request access
[healthStore requestAuthorizationToShareTypes:shareObjectTypes
                                    readTypes:readObjectTypes
                                   completion:^(BOOL success, NSError *error) {
                                       if(success == YES)
                                       {
                                           [self queryHealthData];
                                           [self queryHealthDataDistance];
                                           [self queryHealthDataFlights];
                                           [self queryHealthDataHeart];
                                       }
                                       else
                                       {
                                           // Determine if it was an error or if the
                                           // user just canceld the authorization request
                                       }

                                   }];}

在我的 - (void)queryHealthDataHeart 上方,我有正确的参考文献,如下所示:

#import "AN_Pedometer.h"
#import <HealthKit/HealthKit.h>

@interface AN_Pedometer (){
UILabel *lbCMData;
NSDateFormatter *formatter;}
@property (nonatomic, strong) CMPedometer *pedometer;
@property (nonatomic, strong) HKHealthStore *healthStore;
@end
@interface HKUnit (HKManager)
+ (HKUnit *)heartBeatsPerMinuteUnit;
@end

@implementation HKUnit (HKManager)

+ (HKUnit *)heartBeatsPerMinuteUnit {
return [[HKUnit countUnit] unitDividedByUnit:[HKUnit minuteUnit]];
}

@end

根据我读到的内容(如果我是正确的),您正在尝试读取从一天开始到现在的心率。

使用日期格式化程序后将其注销,以检查您的开始日期和结束日期。开始时间和结束时间可能相同,这就是结果为 0 的原因。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
NSString *dateString = [dateFormatter stringFromDate:beginOfDay];
NSLog(@"%@", dateString);

您还应该将小时、分钟和秒设置为零,以确保您获得一天的开始时间。

NSDateComponents *components = [calendar components:NSCalendarUnitYear| NSCalendarUnitMonth | NSCalendarUnitDay
                                           fromDate:now];
components.hour = 0;
components.minute = 0;
components.second = 0;

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Apple Healthkit 测量心率 的相关文章

  • iOS7及以上版本中如何在接收器和扬声器之间切换音频输出?

    我有一个音频播放器 可以选择在接近传感器通知 1 时将音频输出从扬声器切换到接收器 耳机 无论是否连接耳机 以下是我执行此操作的代码 void switchAudioOutput NSString output AVAudioSession
  • 在 UITableView 中设置滚动位置

    我有一个应用程序 其工作方式与 iPhone 的 联系人 应用程序的工作方式有些相似 当我们添加新的联系人时 用户将被定向到包含联系人信息的仅查看屏幕 如果我们从导航栏中选择 所有联系人 用户将导航到查看最近添加的联系人的所有联系人列表 我
  • 核心蓝牙在后台进行广告和扫描

    我一直在尝试设置一个应用程序 使设备既扫描外围设备又作为外围设备进行广告 目标是当两个设备通过蓝牙发现彼此靠近时在后台被唤醒 从 Apple 文档来看 您似乎应该能够在后台运行 BLE 启用蓝牙中心和蓝牙外设后台模式 并且当一台设备位于前台
  • 如何在 Monotouch 中对 UIImageView 进行运动模糊效果?

    在 MonoTouch 中进行实时运动模糊的方法是什么 当滚动惯性图片库时 我需要在 UIImageView 上应用运动模糊效果 以强度和方向作为参数 就像在 Photoshop 中一样 我在 CocoaTouch 或 CoreAnimat
  • 如何改进 iOS 中的 TWTweetComposeViewController 代码?

    我已经实现了以下代码来进行 Twitter 共享 在我的代码中 我尝试测试 iOS 5 如果这不起作用 我会回到使用 ShareKit 的 Twitter 代码进行共享的旧方式 我向同事展示了代码 他建议我的代码可能有缺陷 我需要做两件事
  • iPhone - 创建图像网格列表

    我正在开发一个应用程序 它从网站获取图像并使用网格视图向用户显示 例如Apple的照片应用程序 当您点击图像时 我会推送一个显示图像信息和其他内容的视图控制器 实现这个的更好方法是什么 我想到了自定义 UITableViewCell 我见过
  • 应用程序在第二次运行 nsnull 计数的循环时崩溃

    我有一个循环 第一次运行正常 但第二次循环时我得到 NSNull count unrecognized selector sent to instance 0x3a094a70 Terminating app due to uncaught
  • CNContact 添加新的联系人问题

    我在通过以下方式添加联系人时遇到问题联系框架 我使用的是装有 iOS 12 1 2 的 iPhone 5s 设备 我添加联系人的代码如下 let saveRequest CNSaveRequest saveRequest add self
  • Swift 3 '[UIApplicationLaunchOptionsKey:任意]?'无法转换为 '[String : NSString]'

    我有一个 TVOS 应用程序已从 Swift 2 转换为 Swift 3 但出现以下错误 我不确定如何让它安静下来 UIApplicationLaunchOptionsKey 任意 无法转换为 String NSString 它出现在这段代
  • ios 8 核心数据崩溃

    保存时 CoreData 发生崩溃 2014 09 16 09 51 58 273 My app 2678 105246 Terminating app due to uncaught exception NSInvalidArgument
  • Swift 中的弹出视图

    我有一个弹出视图 没有选项卡栏 它弹出到带有选项卡栏的视图控制器 在带有选项卡栏的视图控制器中 我设置了一个单击按钮 以便弹出视图控制器 IBAction func PopUpClicked sender UIButton gt Void
  • 使用 JavaScript 从 URL 变量读取来加载不同的 CSS 样式表

    我试图在我的 WordPress 博客上使用两个不同的样式表 以便在通过 Web 访问页面时使用一个样式表 而在通过我们的 iOS 应用程序访问博客内容时使用另一个样式表 现在 我们将 app true 附加到来自 iOS 应用程序的 UR
  • Firebase 连接管理器应仅返回一个结果

    我正在关注位于以下位置的文档 https www firebase com docs ios guide offline capability html section connection state https www firebase
  • iOS:从非图像数据生成图像(Godus,如风景)

    所以看到图像后Godus http www kickstarter com projects 22cans project godus我想知道如何生成简单的 非交互式的 2D 图像 with 不同高度或层数的颜色不同就像下面的图片一样 我只
  • WebGL iOS 渲染为浮点纹理

    我正在尝试在 iOS Safari 上的 WebGL 中渲染浮点纹理 而不是在本机应用程序中 我已经设法让 iOS 读取手动 例如从 JavaScript 创建的浮点纹理 但是当我创建浮点类型的帧缓冲区并使用 GPU 渲染到其中时 它不起作
  • iOS 内存警告

    我正在尝试使用从 Parse 数据库下载的图像填充集合视图 但我收到内存警告 然后偶尔崩溃 有谁知道其他应用程序如何设法呈现这么多图像而不崩溃 有人可以告诉我如何优化我已有的东西吗 这是所有相关代码 https gist github co
  • 从 RemoteIO 保存音频的示例?

    我进行了搜索 但没有找到任何从 RemoteIO 音频单元保存音频的好示例或教程 我的设置 使用 MusicPlayer API 我有几个 AUSamplers gt MixerUnit gt RemoteIO 音频播放效果很好 我想添加将
  • 如何将十六进制数组转换为 UIImage?

    有几个与使用 P25mi 动态打印图像相关的未解答问题 没有一个得到公认的答案 下面有几个链接 如何将图像转换为位图代码以便在 iPhone 中进行蓝牙打印 https stackoverflow com questions 1383828
  • 在模拟器中运行应用程序时删除本地通知的 iOS 权限警报

    我正在尝试编写验收测试KIF https github com kif framework KIF在一个很早就要求本地通知权限的应用程序上 不幸的是 由于 iOS 模拟器安全原因无法使用 KIF 自动接受 iOS 权限警报 https gi
  • 如果 NSExtensionActivationRule 设置为仅音频,则共享扩展不会出现在有功能的应用程序中

    我正在尝试创建一个共享扩展 用户可以从任何有能力的应用程序上传她的录音 该文档甚至有一个简单的示例 请参阅声明共享或操作扩展支持的数据类型 https developer apple com library content document

随机推荐

  • 在 XSL 中进行双遍?

    是否可以将 XSL 转换的输出存储在某种变量中 然后对变量的内容执行附加转换 全部在一个 XSL 文件中 XSLT 2 0 首选 XSLT 2 0 解决方案
  • 如何暂停读取 xls 文件的每一行

    我的 mac 桌面上有一个 xls 文件 其中有很多行 每行由一个单词组成 我想要的是在终端中每行显示 3 分钟 请注意 xls 的版本是 2016 谢谢如何使用python获取Excel工作表中的行号 import pandas as p
  • 添加 Google Conversion Tracking SDK iOS-3.0.0 时应用程序崩溃

    我将 GoogleConversionTrackingSDK 添加到我的项目中 然后调用该函数 ACTConversionReporter reportWithConversionID 972050884 label Bzk1CIzPkAk
  • 如何将 JSON 对象保存到 Core Data?

    我是 Core Data 中的 nwebie 我设计了一个基于导航的应用程序 我使用的一些数据是在运行时创建的 来自通过 JSON 的 URL 我学习了一些教程并搜索了几乎一天 但仍然没有意识到如何将传入的 JSON 数据保存到我的核心数据
  • 检查VBA中的列是否存在值

    我有一列超过 500 行的数字 我需要使用 VBA 检查变量 X 是否与列中的任何值匹配 有人可以帮帮我吗 范围的查找方法比使用 for 循环手动遍历所有单元格更快 这是在vba中使用find方法的示例 Sub Find First Dim
  • wmi c# - WMI 给出不正确的电压读数

    所以我用 WPF C 和 WMI 编写了一个程序作为一个小项目来收集计算机的规格 并将其放在 SourceForge 上 因为它对我来说没什么用处 我很快发现 SoftPedia 已经发现了它 并在他们的屏幕截图中注意到电压读数有错误 这是
  • javascript 块中的 HTML 注释?

    我有一个像下面这样的函数 它在 HTML 页面中插入一段 HTML 代码 function someEventHandler htmlContent document getElementById some element id inner
  • C# 将魔术字符串转换为 lambda 表达式

    我有一组扩展方法 允许在 LINQ 中使用魔术字符串OrderBy 方法 我知道第一个问题是为什么 但它是通用存储库的一部分 并且具有灵活性 以便可以从 UI 发送字符串并直接使用 如果您传入一个代表您正在查询的主要实体上的属性的魔术字符串
  • 如何创建背景网格

    我想创建一个网格作为我的 JavaFX 应用程序的背景 我当前的解决方案是在画布上绘制一个矩形 从中创建一个图像图案并将其设置为填充 Question 有没有更好的方法来解决这个问题 最好是通过CSS 当前版本 public class B
  • 垂直翻转字节数组中位图的算法

    我正在编写一个类 用于通过 Mono For Android 将位图打印到 Android 中的便携式蓝牙打印机 我的类用于从流中获取像素数据 以便可以以正确的格式将其发送到打印机 现在这个类很简单 它只是读取高度 宽度和每像素位数 它使用
  • 无需条件语句即可访问第 n 位

    所以我有一个位序列 1010 1 是最高有效位 如果奇数位为 0 我的函数需要返回整数 0 如果奇数位为 1 则需要返回 1 我不能使用任何 for 循环或任何类似性质的东西来查看是否需要返回 0 或 1 有没有人有任何建议如何解决这个问题
  • Vagrant:在配置阶段创建此所有者时如何将所有者设置为同步/共享文件夹

    Vagrantfile 相关部分 config vm provision chef solo do chef chef add recipe yum various recipes in one of these i create the
  • 检测“暂停”的 Windows 8/10 进程

    Windows 8 10 中的 UWP 或 Metro 应用程序不在前台时可以暂停 处于此状态的应用程序继续存在 但不再消耗 CPU 时间 看来引入此更改是为了提高平板电脑和手机等低功耗 存储设备的性能 检测处于这种状态的进程的最优雅 最简
  • 如何检查SQLite文件一致性(健康检查)

    我在 Android 应用程序中使用 SQLite 数据库文件 该文件是使用以下方法从存储在资产文件夹中的多个部分创建的 ReignDesign 在 Android 应用程序中使用您自己的 SQLite 数据库 组装过程完成后 我想检查数据
  • 无法启动 Hyper-V 容器

    在此输入图像描述我正在尝试运行 docker 容器 但收到以下错误消息 因为未启用 Hyper V 和虚拟化 但我已经启用了 Hyper V 和虚拟化 我已经通过 Bios 以及 power shell 命令进行了 Hyper V 设置 尽
  • 无法从 Jenkins CI 启动浏览器

    当从 Jenkins 构建后通过调用 rake 任务触发黄瓜测试时 我无法在 CI 服务器上启动浏览器 在我的例子中是 Linux 上的本地主机 Jenkins 控制台日志如下 我非常确定一切都设置正确 因为我可以通过命令行在服务器上成功运
  • OpenCV 2.3 编译问题 - 未定义的参考 - Ubuntu 11.10

    系统信息 Ubuntu 11 10 64 位 和 OpenCV 2 3 今天安装 我正在尝试在 OpenCV 2 3 中编译一些非常简单的代码 但出现了一个奇怪的错误 include
  • 来自 python 的 Windows 特殊文件夹和已知文件夹(开始菜单、下载等)[重复]

    这个问题在这里已经有答案了 确定Windows路径的最佳方法是什么特殊文件夹 and 已知文件夹在Python中 我发现了几种流行的 SpecialFolders 方法 也称为CSIDL 但还没有什么简单的事情已知文件夹ID 保持了向后兼容
  • 使用 * 访问方法中的值

    在方法定义中 当 按以下方式使用 这是什么意思 def foo end 我理解以下用法 def foo args end 我不确定在前一种情况下如何访问方法参数 它的意思是 接受和丢弃任意数量的参数 两个定义在技术上是相同的 但不给参数数组
  • 使用 Apple Healthkit 测量心率

    我目前正在应用程序中使用 Healthkit 获取大多数类型的信息都没有问题 但在心率方面遇到问题 每次我尝试读取样本时 结果都是 0 我有一块 Apple Watch 我的心率被输入到 Apple Health 应用程序中 并且可以在那里