Files
biz_xfj_cloud/lib/common/utils/app/app_face_tool.dart
T

103 lines
3.3 KiB
Dart

import 'dart:convert';
import 'package:common_utils/common_utils.dart';
import 'package:get/get.dart';
import 'package:pj_supermarket_cloud/common/index.dart';
abstract class AppFaceTool {
static const String _tag = "app 人脸工具";
// 跳转到人脸识别页面
static Future<bool> jumpFacePage() async {
if (AppRuntimeTool.useManualHardwareInput) return false;
final isJump = await FaceDiscernPlugs.jumpFaceDiscernPage();
if (!isJump) return false;
Future.delayed(const Duration(seconds: 2), () {
AppSubScreenTool.hide();
});
return true;
}
// 检查人脸激活参数
static bool _validateSysFaceParams(SysSetting sysSetting) {
if (ObjectUtil.isEmpty(sysSetting.faceAppId)) {
return false;
}
if (ObjectUtil.isEmpty(sysSetting.faceSdkKey)) {
return false;
}
if (ObjectUtil.isEmpty(sysSetting.faceActiveKey)) {
return false;
}
return true;
}
// 批量注册人脸
static Future<bool> faceRegister({
String? userId,
bool forceRegister = false,
}) async {
if (AppRuntimeTool.useManualHardwareInput) return true;
var faceCount = await FaceDiscernPlugs.getFaceCount();
if (faceCount == 0 || forceRegister) {
final list = await FaceDiscernPlugs.registerFaceByDatabase(
userId: userId,
);
if (!ObjectUtil.isEmptyList(list)) {
final app = Get.find<AppControl>();
final faceDao = app.dataBase.getFaceDao;
logger.i("|$_tag|批量注册人脸,错误的人脸:${json.encode(list)}");
for (final v in list) {
final sampleId = v.toString();
final userFace = await faceDao.findBySampleId(sampleId);
if (ObjectUtil.isNotEmpty(userFace)) {
if (ObjectUtil.isNotEmpty(userFace?.path)) {
await SyncFaceTool.delFaceByStorage(filePath: userFace!.path!);
}
await faceDao.delById(userFace!.id!);
await AppFaceTool.removeFace(sampleId: sampleId);
}
}
}
}
faceCount = await FaceDiscernPlugs.getFaceCount();
if (faceCount == 0) return false;
return true;
}
// 是否激活人脸sdk
static Future<bool> isActiveSdk() async {
if (AppRuntimeTool.useManualHardwareInput) return true;
final isNetwork = AppNetworkTool.isAutoNetwork();
if (!isNetwork) return true;
var faceConfig = await FaceDiscernPlugs.getConfig();
if (faceConfig == null || faceConfig.isActive == false) {
final sysSetting = await AppSettingTool.getSysSetting();
final valid = AppFaceTool._validateSysFaceParams(sysSetting);
if (!valid) return false;
final isActive = await FaceDiscernPlugs.active(
appId: sysSetting.faceAppId!,
sdkKey: sysSetting.faceSdkKey!,
activeKey: sysSetting.faceActiveKey!,
);
if (isActive) {
faceConfig = await FaceDiscernPlugs.getConfig();
}
}
if (faceConfig == null) {
return false;
}
return faceConfig.isActive;
}
// 删除人脸
static Future<bool> removeFace({String? sampleId}) async {
if (sampleId == null) return false;
if (AppRuntimeTool.useManualHardwareInput) return true;
final isActive = await AppFaceTool.isActiveSdk();
if (!isActive) return false;
return await FaceDiscernPlugs.removeFace(sampleId: sampleId);
}
}