灯效控制
一、简介
本文档介绍 RobotApi 中灯效控制相关接口的使用方法。不同机型配备的灯硬件不同,对应的接口也不同,使用前请先确认目标机型,选择对应章节的接口。
二、豹小秘 / 招财豹 / 豹小递max 灯效 API
2.1 设置灯效
方法名称:setLight
调用方式:
JSONObject params = new JSONObject();
try {
params.put(Definition.JSON_LAMB_TYPE, type);
params.put(Definition.JSON_LAMB_TARGET, 0);
params.put(Definition.JSON_LAMB_RGB_START, startColor);
params.put(Definition.JSON_LAMB_RGB_END, endColor);
params.put(Definition.JSON_LAMB_START_TIME, startTime);
params.put(Definition.JSON_LAMB_END_TIME, endTime);
params.put(Definition.JSON_LAMB_REPEAT, loopTime);
params.put(Definition.JSON_LAMB_ON_TIME, duration);
params.put(Definition.JSON_LAMB_RGB_FREEZE, finalColor);
} catch (JSONException e) {
e.printStackTrace();
}
RobotApi.getInstance().setLight(reqId, params.toString(), listener);
参数:
reqId:int 类型,命令 idparams:String 类型,JSON 字符串,包含以下字段:type:灯效类型,填0startColor:灯效起始颜色值endColor:灯效结束颜色值startTime:渐变开始颜色停留的时间endTime:渐变结束颜色停留的时间loopTime:灯效渐变重复次数duration:渐变过程花费的时间finalColor:渐变过渡颜色listener:ActionListener类型,消息回调
颜色值格式: 使用 RGB 排列的 16 进制字符串,例如 "F3F3F3" 或 "00FF00"。
返回值:int,0 表示命令执行,-1 表示没有执行。
适用机型:
| 豹小秘 | mini | 招财豹 | 豹小递max | 豹小秘DP |
| 是 | 否 | 是 | 是 | 否 |
设置灯效代码demo可以在这里找到(代码适用于豹小秘机器人,其他机器人请替换机器人jar包):点击这里
三、招财豹Pro / 豹小递Pro 灯效 API
3.1 查询是否支持底盘灯带
方法名称:isUseProZcbLed
调用方式:
boolean supported = RobotApi.getInstance().isUseProZcbLed();
说明: 调用 setProZcbLedEffect 前建议先通过此方法判断当前机型是否支持底盘灯带,返回 true 才可调用。
3.2 设置底盘灯带灯效
方法名称:setProZcbLedEffect
调用方式:
RobotApi.getInstance().setProZcbLedEffect(reqId, proZcbEffect, new CommandListener() {
@Override
public void onResult(int result, String message, String extra) {
if (result == Definition.RESULT_SUCCEED) {
// 设置成功
} else {
// 设置失败
}
}
});
参数:
reqId:int 类型,命令 idproZcbEffect:int 类型,灯效常量,取值见本章末尾常量表listener:CommandListener回调,可为null
3.3 查询是否有锁骨灯
方法名称:isHasClavicleLight
调用方式:
boolean hasLight = RobotApi.getInstance().isHasClavicleLight();
说明: 调用 setProIobLedEffect 前建议先通过此方法判断当前机型是否配备锁骨灯,返回 true 才可调用。
3.4 设置锁骨灯灯效
方法名称:setProIobLedEffect
调用方式:
RobotApi.getInstance().setProIobLedEffect(reqId, proIobLedEffect, new CommandListener() {
@Override
public void onResult(int result, String message, String extra) {
if (result == Definition.RESULT_SUCCEED) {
// 设置成功
} else {
// 设置失败
}
}
});
参数:
reqId:int 类型,命令 idproIobLedEffect:int 类型,灯效常量,取值见本章末尾常量表listener:CommandListener回调,可为null
3.5 灯效常量表(ZCB2UARTLED)
底盘灯带(setProZcbLedEffect)与锁骨灯(setProIobLedEffect)共用以下常量:
| 常量 | 说明 |
Definition.ZCB2UARTLED_GREENBREATH | 绿色呼吸 |
Definition.ZCB2UARTLED_BLUEBREATH | 蓝色呼吸 |
Definition.ZCB2UARTLED_ORANGEBREATH | 橙色呼吸 |
Definition.ZCB2UARTLED_YELLOWBREATH | 黄色呼吸 |
Definition.ZCB2UARTLED_BLUENORMAL | 蓝色常亮 |
Definition.ZCB2UARTLED_REDNORMAL | 红色常亮 |
Definition.ZCB2UARTLED_ORANGENORMAL | 橙色常亮 |
Definition.ZCB2UARTLED_YELLOWNORMAL | 黄色常亮 |
Definition.ZCB2UARTLED_GREENNORMAL | 绿色常亮 |
Definition.ZCB2UARTLED_TURNRIGHT | 右转效果 |
Definition.ZCB2UARTLED_TURNLEFT | 左转效果 |
Definition.ZCB2UARTLED_REGFLASH | 红色闪烁 |
Definition.ZCB2UARTLED_YELLOWFLASH | 黄色闪烁 |
Definition.ZCB2UARTLED_ALLOFF | 关闭所有灯效 |
四、豹小秘Pro 灯效 API
4.1 灯效常量表(LED_EFFECT)
胸口灯与手臂灯接口统一使用以下常量:
常亮效果
| 常量 | 说明 | 适用灯位 |
Definition.LED_EFFECT_REDNORMAL | 红色常亮 | 胸口灯、手臂灯 |
Definition.LED_EFFECT_GREENNORMAL | 绿色常亮 | 胸口灯、手臂灯 |
Definition.LED_EFFECT_BLUENORMAL | 蓝色常亮 | 胸口灯、手臂灯 |
Definition.LED_EFFECT_YELLOWNORMAL | 黄色常亮 | 胸口灯、手臂灯 |
Definition.LED_EFFECT_ORANGENORMAL | 橙色常亮 | 胸口灯、手臂灯 |
呼吸效果
| 常量 | 说明 | 适用灯位 |
Definition.LED_EFFECT_GREENBREATH | 绿色呼吸 | 胸口灯、手臂灯 |
Definition.LED_EFFECT_BLUEBREATH | 蓝色呼吸 | 胸口灯、手臂灯 |
Definition.LED_EFFECT_YELLOWBREATH | 黄色呼吸 | 胸口灯、手臂灯 |
Definition.LED_EFFECT_ORANGEBREATH | 橙色呼吸 | 胸口灯、手臂灯 |
Definition.LED_EFFECT_WHITEBREATH | 白色呼吸 | 仅手臂灯 |
闪烁效果
| 常量 | 说明 | 适用灯位 |
Definition.LED_EFFECT_REDFLASH | 红色闪烁 | 胸口灯、手臂灯 |
Definition.LED_EFFECT_GREENFLASH | 绿色闪烁 | 胸口灯、手臂灯 |
Definition.LED_EFFECT_BLUEFLASH | 蓝色闪烁 | 胸口灯、手臂灯 |
Definition.LED_EFFECT_YELLOWFLASH | 黄色闪烁 | 胸口灯、手臂灯 |
流动 / 跑马灯效果
| 常量 | 说明 | 适用灯位 |
Definition.LED_EFFECT_BLUEFORWARDON | 蓝色流水灯:顺流亮 | 胸口灯 |
Definition.LED_EFFECT_BLUEFORWARDOFF | 蓝色流水灯:顺流灭 | 胸口灯 |
Definition.LED_EFFECT_BLUEMETEORFORWARD | 蓝色流星:正向 | 胸口灯 |
Definition.LED_EFFECT_BLUEMETEORREVERSE | 蓝色流星:反向 | 胸口灯 |
Definition.LED_EFFECT_GREENLOOP | 绿色循环 | 仅手臂灯 |
Definition.LED_EFFECT_BLUELOOP | 蓝色循环 | 仅手臂灯 |
特殊效果
| 常量 | 说明 | 适用灯位 |
Definition.LED_EFFECT_SLIM_CLAVICLE_TURNRIGHT | SLIM 右转向灯(左灭右闪) | 胸口灯 |
关闭
| 常量 | 说明 | 适用灯位 |
Definition.LED_EFFECT_ALLOFF | 关闭所有灯 | 胸口灯、手臂灯 |
4.2 设置胸口灯灯效
方法名称:setChestLedEffect
调用方式:
RobotApi.getInstance().setChestLedEffect(reqId, effect, new CommandListener() {
@Override
public void onResult(int result, String message, String extra) {
if (result == Definition.RESULT_SUCCEED) {
// 设置成功
} else {
// 设置失败
}
}
});
参数:
reqId:int 类型,命令 ideffect:int 类型,灯效常量,取值见 4.1 常量表listener:CommandListener回调,可为null
4.3 设置左臂灯效
方法名称:setArmLeftLedEffect
调用方式:
RobotApi.getInstance().setArmLeftLedEffect(reqId, effect, new CommandListener() {
@Override
public void onResult(int result, String message, String extra) {
if (result == Definition.RESULT_SUCCEED) {
// 设置成功
} else {
// 设置失败
}
}
});
参数:
reqId:int 类型,命令 ideffect:int 类型,灯效常量,取值见 4.1 常量表listener:CommandListener回调,可为null
4.4 设置右臂灯效
方法名称:setArmRightLedEffect
调用方式:
RobotApi.getInstance().setArmRightLedEffect(reqId, effect, new CommandListener() {
@Override
public void onResult(int result, String message, String extra) {
if (result == Definition.RESULT_SUCCEED) {
// 设置成功
} else {
// 设置失败
}
}
});
参数:
reqId:int 类型,命令 ideffect:int 类型,灯效常量,取值见 4.1 常量表listener:CommandListener回调,可为null
4.5 设置双臂灯效(同步)
方法名称:setArmsLedEffect
调用方式:
RobotApi.getInstance().setArmsLedEffect(reqId, effect, new CommandListener() {
@Override
public void onResult(int result, String message, String extra) {
if (result == Definition.RESULT_SUCCEED) {
// 设置成功
} else {
// 设置失败
}
}
});
参数:
reqId:int 类型,命令 ideffect:int 类型,灯效常量,左右臂使用同一灯效,取值见 4.1 常量表listener:CommandListener回调,可为null
说明: 该接口同时设置左右臂灯效。若需要左右臂显示不同灯效,请分别调用 setArmLeftLedEffect 和 setArmRightLedEffect。
4.6 完整示例参考
完整调用示例请参考 RobotSample 工程中的: com.ainirobot.robotos.fragment.LedControlFragment