iOS AILinkBleSDK - 蓝牙SDK
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

HTBodyfat_SDK.h 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. //
  2. // HTBodyfat_SDK.h
  3. //
  4. // Created by Holtek on 17/12/21.
  5. // Copyright © 2017年 Holtek. All rights reserved.
  6. //
  7. // Version: 3.06, SDK for armV7、arm64、x86_x64, OS ≥ iOS 8.0
  8. //
  9. #import <UIKit/UIKit.h>
  10. @class HTBodyInfo;
  11. @class HTBodyResult;
  12. @class HTBodyResultAllBody;
  13. @class HTBodyResultTwoLegs;
  14. @class HTBodyResultTwoArms;
  15. @class HTBodyResultArmsLegs;
  16. ///性别类型
  17. typedef NS_ENUM(NSInteger, HTSexType){
  18. HTSexTypeFemale, //!< 女性
  19. HTSexTypeMale //!< 男性
  20. };
  21. ///错误类型(针对输入的参数)
  22. typedef NS_ENUM(NSInteger, HTBodyfatErrorType){
  23. HTBodyfatErrorTypeNone, //!< 无错误(可读取所有参数)
  24. HTBodyfatErrorTypeAge = 0x01, //!< 年龄参数有误,需在 6 ~ 99岁(不计算除BMI/idealWeightKg以外参数)
  25. HTBodyfatErrorTypeWeight = 0x02, //!< 体重参数有误,需在 10 ~ 200kg(有误不计算所有参数)
  26. HTBodyfatErrorTypeHeight = 0x04, //!< 身高参数有误,需在 90 ~ 220cm(不计算所有参数)
  27. HTBodyfatErrorTypeSex = 0x08, //!< 性别参数有误,需为0或1
  28. HTBodyfatErrorTypeImpedance = 0x10, //!< 阻抗系数有误,阻抗有误时, 不计算除BMI/idealWeightKg以外参数(写0)
  29. HTBodyfatErrorTypeImpedanceLeftLeg = 0x20, //!< 左脚阻抗系数有误,
  30. HTBodyfatErrorTypeImpedanceRightLeg = 0x40, //!< 右脚阻抗系数有误,
  31. HTBodyfatErrorTypeImpedanceLeftArm = 0x80, //!< 左手阻抗系数有误,
  32. HTBodyfatErrorTypeImpedanceRightArm = 0x100, //!< 右手阻抗系数有误,
  33. };
  34. ///身体类型
  35. typedef NS_ENUM(NSInteger, HTBodyType){
  36. HTBodyTypeThin, //!< 偏瘦型
  37. HTBodyTypeLThinMuscle, //!< 偏瘦肌肉型
  38. HTBodyTypeMuscular, //!< 肌肉发达型
  39. HTBodyTypeLackofexercise, //!< 缺乏运动型
  40. HTBodyTypeStandard, //!< 标准型
  41. HTBodyTypeStandardMuscle, //!< 标准肌肉型
  42. HTBodyTypeObesFat, //!< 浮肿肥胖型
  43. HTBodyTypeLFatMuscle, //!< 偏胖肌肉型
  44. HTBodyTypeMuscleFat, //!< 肌肉型偏胖
  45. };
  46. ///测量类型
  47. typedef NS_ENUM(NSInteger, HTBodyMeasureType){
  48. HTBodyMeasureTypeTwoLegs, //!< 双脚
  49. HTBodyMeasureTypeAllBody, //!< 全身
  50. HTBodyMeasureTypeTwoArms, //!< 双手
  51. HTBodyMeasureTypeArmsLegs, //!< 双手双脚
  52. HTBodyMeasureTypeThighArms, //!< 大腿到手
  53. HTBodyMeasureTypeThigh //!< 大腿
  54. };
  55. #pragma mark - HTBodyBasicInfo
  56. // 计算体脂参数所需数据model
  57. @interface HTBodyBasicInfo : NSObject
  58. //测量者基本信息
  59. @property (nonatomic,assign) HTSexType htSex; //!< 性别
  60. @property (nonatomic,assign) NSInteger htHeightCm; //!< 身高(cm),需在 90 ~ 220cm
  61. @property (nonatomic,assign) CGFloat htWeightKg; //!< 体重(kg),需在 10 ~ 200kg
  62. @property (nonatomic,assign) NSInteger htAge; //!< 年龄(岁),需在6 ~ 99岁
  63. //测量双脚时需赋值
  64. @property (nonatomic,assign) NSInteger htTwoLegsImpedance; //!< 双脚阻抗系数
  65. //测量双手时需赋值
  66. @property (nonatomic,assign) NSInteger htTwoArmsImpedance; //!< 双手阻抗系数
  67. //测量全身时需赋值
  68. @property (nonatomic,assign) CGFloat htZAllBodyImpedance; //!< 全身阻抗系数
  69. @property (nonatomic,assign) CGFloat htZLeftLegImpedance; //!< 左脚阻抗系数
  70. @property (nonatomic,assign) CGFloat htZRightLegImpedance; //!< 右脚阻抗系数
  71. @property (nonatomic,assign) CGFloat htZLeftArmImpedance; //!< 左手阻抗系数
  72. @property (nonatomic,assign) CGFloat htZRightArmImpedance; //!< 右手阻抗系数
  73. /**
  74. * 初始化人体数据
  75. *
  76. * @param sex 性别
  77. * @param height 身高,单位cm
  78. * @param weight 体重,单位kg
  79. * @param age 年龄
  80. *
  81. * @return 人体数据model
  82. */
  83. - (id)initWithSex:(HTSexType)sex height:(NSInteger)height weight:(CGFloat)weight age:(NSInteger)age;
  84. @end
  85. #pragma mark - HTBodyResult
  86. /**
  87. * 体脂测量结果的基类
  88. * 所有标准的字典使用说明如下:
  89. * 1.以BMI为例
  90. * 小于"瘦-普通"为瘦,小于“普通-偏胖”为普通,小于"偏胖-肥胖"为偏胖,其它肥胖
  91. * 2.以体脂率为例
  92. * 小于"偏瘦-标准" 为偏瘦
  93. * 小于“标准-警惕” 为标准
  94. * 小于"警惕-偏胖" 为警惕
  95. * 小于"偏胖-肥胖" 为偏胖
  96. * 其它 肥胖
  97. */
  98. @interface HTBodyResult : NSObject
  99. @property (nonatomic,assign) HTBodyfatErrorType htErrorType; //!< 错误类型,数据/计算是否有误
  100. @property (nonatomic,assign) CGFloat htProteinPercentage; //!< 蛋白质,分辨率0.1, 范围2.0% ~ 30.0%
  101. @property (nonatomic,copy) NSDictionary* htProteinRatingList; //!< 蛋白健康标准字典,"不足-标准"“标准-优秀”
  102. @property (nonatomic,assign) CGFloat htBMI; //!< Body Mass Index 人体质量指数, 分辨率0.1, 范围10.0 ~ 90.0
  103. @property (nonatomic,copy) NSDictionary* htBMIRatingList; //!< BMI健康标准字典,"瘦-普通"“普通-偏胖”“偏胖-肥胖”
  104. @property (nonatomic,assign) NSInteger htBMR; //!< Basal Metabolic Rate基础代谢, 分辨率1, 范围500 ~ 10000
  105. @property (nonatomic,copy) NSDictionary* htBMRRatingList; //!< 基础代谢健康标准字典:"偏低-达标"
  106. @property (nonatomic,assign) NSInteger htVFAL; //!< Visceral fat area leverl内脏脂肪, 分辨率1, 范围1 ~ 60
  107. @property (nonatomic,copy) NSDictionary* htVFALRatingList; //!< 内脏脂肪等级标准字典,"标准-警惕""警惕-危险"
  108. @property (nonatomic,assign) CGFloat htBoneKg; //!< 骨量(kg), 分辨率0.1, 范围0.5 ~ 8.0
  109. @property (nonatomic,copy) NSDictionary* htBoneRatingList; //!< 骨量等级标准字典,"不足-标准"“标准-优秀”
  110. @property (nonatomic,assign) CGFloat htBodyfatSubcut; //!< 皮下脂肪率(%), 分辨率0.1, 范围0.1 ~ 60.0
  111. @property (nonatomic,assign) CGFloat htBodyfatSubcutKg; //!< 皮下脂肪量(kg)
  112. @property (nonatomic,copy) NSDictionary* htBodyfatSubcutList; //!< 皮下脂肪等级标准
  113. @property (nonatomic,assign) CGFloat htBodyfatFreeMass; //!< 去脂体重(kg)
  114. /**
  115. * 运动消耗量:kcal/30分钟, 字典key值如下,value为NSNumber类型
  116. * 步行:walking, 慢跑:jogging, 自行车:bicycle, 游泳:swim, 爬山:mountain_climbing,
  117. * 有氧操:aerobic, 乒乓球:tabletennis, 网球:tennis, 足球:football, 击剑:oriental_fencing,
  118. * 门球:gateball, 羽毛球:badminton, 壁球:racketball, 跆拳道:tae_kwon_do, 弹力球:squash,
  119. * 篮球:basketball, 跳绳:ropejumping, 高尔夫:golf
  120. */
  121. @property (nonatomic,copy) NSDictionary* htExercisePlannerList; //!< 运动计划,运动消耗量表
  122. @property (nonatomic,assign) CGFloat htBodyfatKg; //!< 脂肪量(kg)
  123. @property (nonatomic,assign) CGFloat htBodyfatPercentage; //!< 脂肪率(%), 分辨率0.1, 范围5.0% ~ 75.0%
  124. @property (nonatomic,copy) NSDictionary* htBodyfatRatingList; //!< 脂肪率健康标准字典"偏瘦-标准"“标准-警惕”“警惕-偏胖”“偏胖-肥胖”
  125. @property (nonatomic,assign) CGFloat htWaterPercentage; //!< 水分率(%), 分辨率0.1, 范围35.0% ~ 75.0%
  126. @property (nonatomic,copy) NSDictionary* htWaterRatingList; //!< 水分率健康标准 "不足-标准"“标准-优秀”
  127. @property (nonatomic,assign) CGFloat htMuscleKg; //!< 肌肉量(kg), 分辨率0.1, 范围10.0 ~ 120.0
  128. @property (nonatomic,assign) CGFloat htMusclePercentage; //!< 肌肉率(%),分辨率0.1,范围5%~90%
  129. @property (nonatomic,copy) NSDictionary* htMuscleRatingList; //!< 肌肉量健康标准 "不足-标准"“标准-优秀”
  130. @property (nonatomic,assign) NSInteger htBodyAge; //!< 身体年龄,6~99岁
  131. @property (nonatomic,assign) CGFloat htIdealWeightKg; //!< 理想体重(kg)
  132. @property (nonatomic,assign) HTBodyType htBodyType; //!< 身体类型
  133. @property (nonatomic,assign) NSInteger htBodyScore; //!< 身体得分,50 ~ 100分
  134. /**
  135. * 根据测量类型获取体脂参数,调用之前需先给相应测量类型的阻抗系数赋值
  136. *
  137. * @param basicInfo 人体参数基本信息
  138. *
  139. * @return 体脂计算结果,判断是否有错误
  140. */
  141. - (HTBodyfatErrorType )getBodyfatWithBasicInfo:(HTBodyBasicInfo *)basicInfo;
  142. @end
  143. #pragma mark - HTBodyResultTwoLegs
  144. /**
  145. * 双脚的测量结果类
  146. */
  147. @interface HTBodyResultTwoLegs : HTBodyResult
  148. @property (nonatomic,assign) CGFloat htZTwoLegs; //!< 脚对脚阻抗值(Ω), 范围200.0 ~ 1200.0
  149. @end
  150. #pragma mark - HTBodyResultAllBody
  151. /**
  152. * 全身的测量结果类
  153. */
  154. @interface HTBodyResultAllBody : HTBodyResult
  155. @property (nonatomic,assign) CGFloat htZAllBody; //!< 全身阻抗值(Ω), 范围75.0 ~ 1500.0
  156. @property (nonatomic,assign) CGFloat htZLeftLeg; //!< 左脚阻抗值(Ω), 范围75.0 ~ 1500.0
  157. @property (nonatomic,assign) CGFloat htZRightLeg; //!< 右脚阻抗值(Ω), 范围75.0 ~ 1500.0
  158. @property (nonatomic,assign) CGFloat htZLeftArm; //!< 左手阻抗值(Ω), 范围75.0 ~ 1500.0
  159. @property (nonatomic,assign) CGFloat htZRightArm; //!< 右手阻抗值(Ω), 范围75.0 ~ 1500.0
  160. @property (nonatomic,assign) CGFloat htMusclePercentageTrunk; //!< 躯干肌肉率(%), 分辨率0.1, 范围5.0% ~ 90.0%
  161. @property (nonatomic,assign) CGFloat htMusclePercentageLeftLeg; //!< 左脚肌肉率(%), 分辨率0.1, 范围5.0% ~ 90.0%
  162. @property (nonatomic,assign) CGFloat htMusclePercentageRightLeg; //!< 右脚肌肉率(%), 分辨率0.1, 范围5.0% ~ 90.0%
  163. @property (nonatomic,assign) CGFloat htMusclePercentageLeftArm; //!< 左手肌肉率(%), 分辨率0.1, 范围5.0% ~ 90.0%
  164. @property (nonatomic,assign) CGFloat htMusclePercentageRightArm; //!< 右手肌肉率(%), 分辨率0.1, 范围5.0% ~ 90.0%
  165. @property (nonatomic,assign) CGFloat htBodyfatPercentageTrunk; //!< 躯干脂肪率(%), 分辨率0.1, 范围5.0% ~ 75.0%
  166. @property (nonatomic,assign) CGFloat htBodyfatPercentageLeftLeg; //!< 左脚脂肪率(%), 分辨率0.1, 范围5.0% ~ 75.0%
  167. @property (nonatomic,assign) CGFloat htBodyfatPercentageRightLeg; //!< 右脚脂肪率(%), 分辨率0.1, 范围5.0% ~ 75.0%
  168. @property (nonatomic,assign) CGFloat htBodyfatPercentageLeftArm; //!< 左手脂肪率(%), 分辨率0.1, 范围5.0% ~ 75.0%
  169. @property (nonatomic,assign) CGFloat htBodyfatPercentageRightArm; //!< 右手脂肪率(%), 分辨率0.1, 范围5.0% ~ 75.0%
  170. @property (nonatomic,assign) CGFloat htMuscleKgTrunk; //!< 躯干肌肉量(kg), 分辨率0.1, 范围0.0 ~ 200kg
  171. @property (nonatomic,assign) CGFloat htMuscleKgeLeftLeg; //!< 左脚肌肉量(kg), 分辨率0.1, 范围0.0 ~ 200kg
  172. @property (nonatomic,assign) CGFloat htMuscleKgRightLeg; //!< 右脚肌肉量(kg), 分辨率0.1, 范围0.0 ~ 200kg
  173. @property (nonatomic,assign) CGFloat htMuscleKgLeftArm; //!< 左手肌肉量(kg), 分辨率0.1, 范围0.0 ~ 200kg
  174. @property (nonatomic,assign) CGFloat htMuscleKgRightArm; //!< 右手肌肉量(kg), 分辨率0.1, 范围0.0 ~ 200kg
  175. @property (nonatomic,assign) CGFloat htBodyfatKgTrunk; //!< 躯干脂肪量(kg), 分辨率0.1, 范围0.0 ~ 200kg
  176. @property (nonatomic,assign) CGFloat htBodyfatKgLeftLeg; //!< 左脚脂肪量(kg), 分辨率0.1, 范围0.0 ~ 200kg
  177. @property (nonatomic,assign) CGFloat htBodyfatKgRightLeg; //!< 右脚脂肪量(kg), 分辨率0.1, 范围0.0 ~ 200kg
  178. @property (nonatomic,assign) CGFloat htBodyfatKgLeftArm; //!< 左手脂肪量(kg), 分辨率0.1, 范围0.0 ~ 200kg
  179. @property (nonatomic,assign) CGFloat htBodyfatKgRightArm; //!< 右手脂肪量(kg), 分辨率0.1, 范围0.0 ~ 200kg
  180. @end
  181. #pragma mark - HTBodyResultTwoArms
  182. /**
  183. * 双手的测量结果类
  184. */
  185. @interface HTBodyResultTwoArms : HTBodyResult
  186. @property (nonatomic,assign) CGFloat htZTwoArms; //!< 手对手阻抗值(Ω), 范围200.0 ~ 1200.0
  187. @end
  188. #pragma mark - HTBodyResultArmsLegs
  189. /**
  190. * 双手双脚的测量结果类,预留
  191. */
  192. @interface HTBodyResultArmsLegs : HTBodyResult
  193. @end