NewDishLearningActivity,页面结构沿用原 DishLearningActivity,学习逻辑改为真实调用银歌 SDK。DishRecognitionActivity 和 DishManagementActivity 的菜品学习入口已切换到 NewDishLearningActivity。DishManagementActivity 已改为读取真实菜品列表 + 本地真实学习图片,不再使用 mock 数据。initAiServiceaiAutoRecognitionaiLearnWithCodeAndImageremoveLearnFeatureWithImagelearnDateRiviseDishLearningActivity、NewDishLearningActivity、DishManagementActivity 都各自执行一遍 YingeoAiSDK.getInstance() + initAiService(...)。IYingeoAIServiceCallback 初始化入口,重复代码较多,插件安装成功后的重新初始化逻辑也分散在各个页面里。unInitAiService(),在多页面切换场景下容易出现 SDK 被反复释放和重建,不利于后续统一维护。app/src/main/java/com/cpt/aidishrecognition/ai/AiSdkManager.javaAiSdkManager 负责:YingeoAiSDK 实例initAiService(...)ObserverIYingeoAIServiceCallback 初始化入口,而是改为注册 AiSdkManager.ObservermYingeoAiSDK = AiSdkManager.getInstance().ensureInitialized(this);AiSdkManager.getInstance().registerObserver(aiServiceObserver);onInitSuccessonMessageonAiRecognitionResultonAiModelProgressAiSdkManager.getInstance().unregisterObserver(aiServiceObserver);unInitAiService(),避免切页时把共享 SDK 服务反复销毁DishLearningActivityNewDishLearningActivityDishManagementActivity说明:
initAiSDK() 仍然保留在页面里,但职责已经变成“通过 AiSdkManager 获取已初始化的 SDK 引用”,不再直接执行页面级的 initAiService(...)。AiSdkManager,不要再复制一套新的 IYingeoAIServiceCallback 初始化代码。dishUuid 作为 SDK 学习编码。dishUuid 为空,则回退为 dishId 字符串。说明:
DishLearningStore.resolveDishCode()。/sdcard/YingeoAiSDK/aiImages/<dishCode>/序号_时间戳十六进制.jpgNewDishLearningActivity 选择菜品aiAutoRecognition 获取识别框aiLearnWithCodeAndImage(dishCode, imagePath) 完成真实学习leftTopPointX/YrightTopPointX/YrightBottomPointX/YleftBottomPointX/YCropView 的宽高:cropViewWithcropViewHeight说明:
yingeoai-sdk-restaurant-demo 一致,不是保存百分比,而是保存“绝对点位 + 当时视图尺寸”。CropView 画的是当前页面自身 View 坐标,不是相机原始分辨率坐标。app/src/main/java/com/cpt/aidishrecognition/ai/CropRegionHelper.javacropViewWith/cropViewHeightCropView 的实际宽高计算缩放比例NewDishLearningActivity:只读红框展示DishRecognitionActivity:只读红框展示说明:
CropView 已设为只读模式,仅用于显示设置页保存的识别区域,不允许在业务页面拖动修改。CropRegionHelper.applySavedRegion(...),不要再直接把原始点位写死到页面里。PredictImageClipper.checkPredictCropParam() 会把这组坐标和 cropViewWith/cropViewHeight 组装成 SDK 所需的 CropSizeNewDishLearningActivity 已改为按 demo 方式使用该 CropSizecameraRotationKEY_CAMARA_MIRRORTextureView 存在留白差异,需要再额外补一层可视区域偏移换算。CameraUsbUtils,适配 USB 相机工作流。learnDateRivise,用于按本地学习目录重新校正学习数据。