使用MLKit PoseDetector开发时出现Invalid model name报错如何解决
问题根源
代码逻辑存在两处不匹配:
selectedModel变量的初始化默认值、savedInstanceState恢复默认值均设置为OBJECT_DETECTIONbindAnalysisUseCase方法中的switch分支仅处理了POSE_DETECTION的情况,没有对应OBJECT_DETECTION的分支,因此程序走到default分支直接抛出IllegalStateException,对应报错日志中的"Invalid model name"提示。
解决方案
你当前仅需要使用姿势检测器,直接修改默认选中的模型即可:
- 修改成员变量的默认值:
// 修改前 private String selectedModel = OBJECT_DETECTION; // 修改后 private String selectedModel = POSE_DETECTION;
- 修改状态恢复的默认值:
// 修改前 selectedModel = savedInstanceState.getString(STATE_SELECTED_MODEL, OBJECT_DETECTION); // 修改后 selectedModel = savedInstanceState.getString(STATE_SELECTED_MODEL, POSE_DETECTION);
如果后续需要扩展支持物体检测,在switch分支中补充OBJECT_DETECTION对应的处理器初始化逻辑即可。另外你当前代码保留了官方demo中模型切换下拉选择器的OnItemSelectedListener接口实现,如果你的页面已经移除了对应下拉控件,建议删除该接口实现,避免后续误触发逻辑导致报错。
内容的提问来源于stack exchange,提问作者DevJun
相关产品推荐
相关产品推荐

