设备电量(TSBattery)
TSBattery 模块提供设备电池信息查询及电量变化监听能力,支持单电池设备(手表、单电池眼镜等)和多电池设备(耳机左右耳/充电盒、左右分体眼镜、带麦克风/扬声器的头戴式设备等)。
前提条件
- 已成功集成 TopStepComKit iOS SDK,并完成基础初始化。
- 已通过蓝牙完成设备连接,且设备处于在线状态。
- 在调用接口前已获得
TSBatteryInterface协议对象的实例。
数据模型
TSBatteryModel
设备电池信息模型,包含电量百分比、充电状态和电池所属部件。
| 属性名 | 类型 | 说明 |
|---|---|---|
| chargeState | TSBatteryState | 设备当前的充电状态 |
| percentage | UInt8 | 电池电量百分比(0-100) |
| part | TSBatteryPart | 电池所属的物理部件标识 |
构造方法:
| 方法 | 说明 |
|---|---|
- initWithPercentage:chargeState: | 单电池设备便捷构造器,part 默认为 TSBatteryPartMain |
- initWithPart:percentage:chargeState: | 指定构造器,用于多电池设备每个物理电池实例 |
- partName | 返回部件可读英文名称(如 "Main"、"Left"),不会为 nil |
枚举与常量
TSBatteryState(电池充电状态)
| 枚举值 | 说明 |
|---|---|
| TSBatteryStateUnknown | 充电状态未知 |
| TSBatteryStateCharging | 已连接电源并正在充电 |
| TSBatteryStateUnConnectNoCharging | 未连接电源 |
| TSBatteryStateConnectNotCharging | 已连接电源但未充电 |
| TSBatteryStateFull | 电池已充满 |
TSBatteryPart(电池部件标识)
| 枚举值 | 说明 |
|---|---|
| TSBatteryPartUnknown | 未知部件 |
| TSBatteryPartMain | 主电池(手表、单电池眼镜等) |
| TSBatteryPartLeft | 左侧部件(耳机左耳、左镜腿等) |
| TSBatteryPartRight | 右侧部件(耳机右耳、右镜腿等) |
| TSBatteryPartCase | 充电盒 |
| TSBatteryPartMic | 麦克风 |
| TSBatteryPartMainSpeaker | 主扬声器 |
| TSBatteryPartSideSpeaker | 副扬声器 |
| TSBatteryPartOther | 其他部件 |
回调类型
| 类型 | 定义 | 说明 |
|---|---|---|
| TSBatteryBlock | void (^)(TSBatteryModel * _Nullable batteryModel, NSError * _Nullable error) | 单电池信息回调,多电池设备监听场景下每次回调对应单个部件 |
| TSBatteriesBlock | void (^)(NSArray<TSBatteryModel *> * _Nullable batteryModels, NSError * _Nullable error) | 多部件电池信息数组回调 |
接口方法
获取总览电池信息
- (void)getBatteryInfoCompletion:(nullable TSBatteryBlock)completion;
| 参数 | 类型 | 说明 |
|---|---|---|
| completion | TSBatteryBlock | 获取完成回调,返回总览电池模型;多电池设备将返回电量最低的部件 |
代码示例:
id<TSBatteryInterface> battery = [TSComKit battery];
[battery getBatteryInfoCompletion:^(TSBatteryModel * _Nullable batteryModel, NSError * _Nullable error) {
if (error) {
TSLog(@"获取电池信息失败: %@", error.localizedDescription);
return;
}
TSLog(@"总览电量: %d%%, 充电状态: %d, 部件: %@",
batteryModel.percentage, batteryModel.chargeState, [batteryModel partName]);
}];
获取所有部件的电池信息
- (void)getAllBatteriesInfoCompletion:(nullable TSBatteriesBlock)completion;
| 参数 | 类型 | 说明 |
|---|---|---|
| completion | TSBatteriesBlock | 完成回调,返回所有部件电池模型数组,单电池设备返回只含一个元素的数组 |
代码示例:
id<TSBatteryInterface> battery = [TSComKit battery];
[battery getAllBatteriesInfoCompletion:^(NSArray<TSBatteryModel *> * _Nullable batteryModels, NSError * _Nullable error) {
if (error) {
TSLog(@"获取多电池信息失败: %@", error.localizedDescription);
return;
}
for (TSBatteryModel *model in batteryModels) {
TSLog(@"部件: %@, 电量: %d%%, 充电状态: %d",
[model partName], model.percentage, model.chargeState);
}
}];
注册电池信息变化监听
- (void)registerBatteryDidChanged:(nullable TSBatteryBlock)completion;
| 参数 | 类型 | 说明 |
|---|---|---|
| completion | TSBatteryBlock | 电池信息变化时的回调,多电池设备每个部件变化时各回调一次 |
代码示例:
id<TSBatteryInterface> battery = [TSComKit battery];
[battery registerBatteryDidChanged:^(TSBatteryModel * _Nullable batteryModel, NSError * _Nullable error) {
if (error) {
TSLog(@"电池监听异常: %@", error.localizedDescription);
return;
}
switch (batteryModel.part) {
case TSBatteryPartLeft:
TSLog(@"左耳电量更新: %d%%", batteryModel.percentage);
break;
case TSBatteryPartRight:
TSLog(@"右耳电量更新: %d%%", batteryModel.percentage);
break;
case TSBatteryPartCase:
TSLog(@"充电盒电量更新: %d%%", batteryModel.percentage);
break;
default:
TSLog(@"%@ 电量更新: %d%%", [batteryModel partName], batteryModel.percentage);
break;
}
}];
注意事项
- 调用所有接口前必须确保设备已连接,否则回调将返回错误。
getBatteryInfoCompletion:在多电池设备上返回电量最低的部件,适用于顶部状态栏等总览展示;如需逐个部件展示,请使用getAllBatteriesInfoCompletion:。registerBatteryDidChanged:对多电池设备会针对每个变化的部件分别回调一次,UI 更新时务必通过batteryModel.part区分对应部件。percentage取值范围为 0-100,使用前请确认数值有效;chargeState为TSBatteryStateUnknown时建议在 UI 上做兜底处理。partName仅返回英文名称,仅适用于日志或调试 UI;面向终端用户展示请基于part值自行本地化。TSBatteryModel禁止使用init、new、copy,请使用提供的构造方法创建实例。