熟食状态提示语音播报变更记录
需求范围
熟食结算页面的 cooked_food_status_view 在以下七种状态发生变化时播放对应语音,并统一受设置中的语音总开关控制:
- 请放置商品,等待重量稳定。
- 已选择商品,请放置商品。
- 重量已稳定,请选择商品。
- 重量已稳定,请点击加入购物车。
- 商品已加入,请先将重量归零。
- 称重数据异常,请检查秤体。
- 请重新称重或修改购物车。
“重量变化中”“正在归零”“正在支付”等其他状态仅更新页面文字,不进行语音播报。
代码改动
CookedFoodActivity.java:将状态文字更新统一收口到setCookedFoodStatus。- 使用上一状态资源 ID 判断真实状态变化,避免称重串口重复上报相同状态时反复播放;离开状态后再次进入仍会重新播报。
- 仅为需求确认的七种状态映射语音资源。
- 状态语音与支付结果语音共用页面级
SoundPoolPlayer,页面销毁时统一释放。 - 状态语音读取设置页“语音开关”实际保存的
Constants.SETTING_VOICE_TIP_SWITCHER;关闭后七种状态均不播放。 - 支付结果语音继续使用原有
Constants.SETTING_VOICE_SWITCH,本次不改变支付功能的开关语义。 Constants.java、FragmentBasic.java:为设置页“语音开关”的默认关闭值补充具名常量,并复用该常量读取开关。
语音资源
新增七个普通话女声音频,存放于 app/src/main/res/raw/:
voice_cooked_food_place_product_wait_stable.mp3voice_cooked_food_selected_place_product.mp3voice_cooked_food_weight_stable_select.mp3voice_cooked_food_weight_stable_add.mp3voice_cooked_food_added_please_zero.mp3voice_cooked_food_scale_data_error.mp3voice_cooked_food_reweigh_or_edit.mp3
音频使用 macOS Tingting 普通话语音生成,并转码为 MP3、16 kHz、单声道,与项目现有支付语音资源规格保持一致。
验证
ffprobe检查七个音频均为 MP3、16 kHz、单声道,时长约 2.8 至 3.4 秒。- 使用 Amazon Corretto 8 执行
bash gradlew :app:testDebugUnitTest :app:assembleDebug --console=plain,结果为BUILD SUCCESSFUL。 - 全部 55 个 JVM 单元测试通过,失败和错误均为 0。
- Debug APK 构建完成,并确认七个 MP3 均已打包到 APK 的
res/raw/。 - SellWeight 与变更记录执行
git diff --check,均无空白错误。
真机验证建议
依次触发七种状态,确认每次状态进入时只播报一次;保持相同状态并等待多次串口数据上报,确认不会重复播报;关闭设置中的语音开关后重新触发七种状态,确认全部静音且文字仍正常更新。
本次未执行 Git 暂存、提交、推送或分支切换。