From c7eec014c248545fe85ecd9553498a1b83179b27 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 18 Mar 2025 16:59:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:android=20flutter=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../facediscern/flutter/FlutterFaceDiscernPlugin.java | 7 ++++++- lib/common/utils/sync/sync_face_tool.dart | 11 +++++++++++ lib/pages/setting/widgets/setting_face.dart | 3 --- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/android/app/src/main/java/io/flutter/plugins/facediscern/flutter/FlutterFaceDiscernPlugin.java b/android/app/src/main/java/io/flutter/plugins/facediscern/flutter/FlutterFaceDiscernPlugin.java index fb986c9..fe384db 100644 --- a/android/app/src/main/java/io/flutter/plugins/facediscern/flutter/FlutterFaceDiscernPlugin.java +++ b/android/app/src/main/java/io/flutter/plugins/facediscern/flutter/FlutterFaceDiscernPlugin.java @@ -40,6 +40,8 @@ public class FlutterFaceDiscernPlugin implements FlutterPlugin, MethodChannel.Me private FlutterFaceReceiver flutterFaceReceiver; + private boolean isReceiverRegistered = false; + private BroadcastReceiver actionsReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -63,7 +65,9 @@ public class FlutterFaceDiscernPlugin implements FlutterPlugin, MethodChannel.Me public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { channel.setMethodCallHandler(null); eventChannel.setStreamHandler(null); - context.unregisterReceiver(actionsReceiver); + if (actionsReceiver != null && isReceiverRegistered) { + context.unregisterReceiver(actionsReceiver); + } } // flutter 方法的回调 @@ -135,6 +139,7 @@ public class FlutterFaceDiscernPlugin implements FlutterPlugin, MethodChannel.Me } else { context.registerReceiver(flutterFaceReceiver, intentFilter); } + isReceiverRegistered = true; } catch (Exception e) { Log.e(TAG, "flutter回调监听错误error:" + e.getMessage(), e); } diff --git a/lib/common/utils/sync/sync_face_tool.dart b/lib/common/utils/sync/sync_face_tool.dart index db19160..b68cf8d 100644 --- a/lib/common/utils/sync/sync_face_tool.dart +++ b/lib/common/utils/sync/sync_face_tool.dart @@ -123,6 +123,11 @@ class SyncFaceTool { await faceDao.edit(add); } } + await AppFaceTool.removeFace(sampleId: add.sampleId); + await AppFaceTool.faceRegister( + userId: add.userId.toString(), + forceRegister: true, + ); continue; } final edit = FaceEntity( @@ -156,6 +161,12 @@ class SyncFaceTool { edit.path = filePath; } await faceDao.edit(edit); + // 重新生成人脸模型 + await AppFaceTool.removeFace(sampleId: edit.sampleId); + await AppFaceTool.faceRegister( + userId: edit.userId.toString(), + forceRegister: true, + ); } if (data.length >= size) return true; } catch (e, stack) { diff --git a/lib/pages/setting/widgets/setting_face.dart b/lib/pages/setting/widgets/setting_face.dart index a001e94..0ba1abc 100644 --- a/lib/pages/setting/widgets/setting_face.dart +++ b/lib/pages/setting/widgets/setting_face.dart @@ -102,9 +102,6 @@ class FaceManageController extends GetxController { }, ); getFaceList(); - // 重新生成人脸模型 - await AppFaceTool.removeFace(sampleId: "-1"); - await AppFaceTool.faceRegister(forceRegister: true); } finally { currentPage.value = 1; Toast.success(msg: "同步成功");