已开启
test:react-native-audio for 0.84 #2001
LiQiang创建于 1 天前
test:react-native-audio for 0.84 #2001
已开启
LiQiang创建于 1 天前
合并受阻
LLiQiang
1 天前 修改了pull request 的描述
openharmony_ci
openharmony_ci成员
1 天前 评论:

感谢提交 Pull Requests!
Thanks for submitting a pull request.

likedislike
openharmony_ciopenharmony_ci成员
1 天前 添加了label:dco检查成功
cpf-manager
cpf-manager23 小时前进行代码检视1
25P4/rn-tester/examples/react-native-Audio/AudioDemo.tsx
@@ -83,0 +465,4 @@
465+ renderChip(item, item, audioQuality === item, () => {
466+ invalidatePrepared();
467+ setAudioQuality(item);
468+ applyRecommendedParamsToState(audioEncoding, {
cpf-manager
cpf-manager23 小时前评论:

【AI-Review】【严重】【基础代码问题】【代码逻辑错误】AudioQuality 选择被推荐参数覆盖

● 问题:AudioQuality 选择器(HARMONY_AUDIO_QUALITIES.map 的点击回调,line 465-476)中先调用 setAudioQuality(item) 设置用户选择的质量,紧接着调用 applyRecommendedParamsToState(audioEncoding, { ... setAudioQuality ... })。该函数内部(line 149 setters.setAudioQuality(recommended.audioQuality))在 audioEncoding 为 'amr_nb'、'amr_wb'、'he_aac' 时会无条件将 audioQuality 设为 'High'(见 applyRecommendedRecordingParams line 104-126 对这三种编码的返回值)。React 18 在事件回调中对同一 state 的多次 setState 按"最后写入胜出"合并,因此 setAudioQuality('Low'/'Medium') 随后被 setAudioQuality('High') 覆盖。

触发路径:用户在 AudioEncoding 选择器点击 amr_nb/amr_wb/he_aac → selectAudioEncoding 调用 applyRecommendedParamsToState 将 audioQuality 置为 'High' → 用户在 AudioQuality 选择器点击 'Low' 或 'Medium' → 回调执行 setAudioQuality(item) 后再执行 applyRecommendedParamsToState(audioEncoding, ...)setters.setAudioQuality('High') → 最终 audioQuality 仍为 'High',用户选择失效。

● 影响:严重。当 audioEncoding 为 amr_nb/amr_wb/he_aac 时,用户无法将 AudioQuality 切换为 'Low' 或 'Medium',点击对应芯片后状态被静默重置为 'High'。Demo 的"质量可选"功能在这三种编码下完全失效,无法验证 Low/Medium 质量录制效果。

● 建议:AudioQuality 选择器不应调用 applyRecommendedParamsToState(该函数会把 audioQuality 重置为 'High')。推荐参数应仅在 encoding 改变时应用。修复方法:删除该回调中的 applyRecommendedParamsToState(audioEncoding, { ... }) 调用(line 468-474),仅保留 invalidatePrepared();setAudioQuality(item);

renderChip(item, item, audioQuality === item, () => {
  invalidatePrepared();
  setAudioQuality(item);
}),
likedislike