Browse Source

增加人脸识别

dev-2.0
王子贤 3 weeks ago
parent
commit
782000b4e3
3 changed files with 84 additions and 2 deletions
  1. BIN
      assets/images/warning_icon.png
  2. 1
      lib/generated/assets.dart
  3. 85
      lib/rtc/rtc_manager.dart

BIN
assets/images/warning_icon.png

Before After
Width: 406  |  Height: 406  |  Size: 64 KiB

1
lib/generated/assets.dart

@ -239,6 +239,7 @@ class Assets {
static const String imagesVoiceIcon = 'assets/images/voice_icon.png';
static const String imagesWaitting = 'assets/images/waitting.png';
static const String imagesWallet = 'assets/images/wallet.png';
static const String imagesWarningIcon = 'assets/images/warning_icon.png';
static const String imagesWechatPay = 'assets/images/wechat_pay.png';
static const String imagesWomenIcon = 'assets/images/women_icon.png';

85
lib/rtc/rtc_manager.dart

@ -1,13 +1,18 @@
import 'dart:async';
import 'dart:convert';
import 'package:agora_rtc_engine/agora_rtc_engine.dart';
import 'package:agora_token_generator/agora_token_generator.dart';
import 'package:dating_touchme_app/rtc/rtm_manager.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import '../controller/discover/room_controller.dart';
import '../controller/message/call_controller.dart';
import '../generated/assets.dart';
import '../pages/discover/live_room_page.dart';
import '../service/live_chat_message_service.dart';
@ -117,6 +122,9 @@ class RTCManager {
}
}
Timer? _zeroTimer;
bool isShow = false;
///
void _registerEventHandlers() {
if (_engine == null) return;
@ -339,6 +347,78 @@ class RTCManager {
List<int> vecDistance,
int numFaces){
print("当前人脸数:$numFaces");
if (numFaces > 0) {
// 0
_zeroTimer?.cancel();
_zeroTimer = null;
} else {
// value == 0
//
if (_zeroTimer == null && !isShow) {
_zeroTimer = Timer(const Duration(minutes: 2), () {
isShow = true;
// overlay
SmartDialog.dismiss();
SmartDialog.show(
onDismiss: (){
isShow = false;
},
builder: (context) {
return ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(16.w)),
child: Material(
color: Colors.white,
child: Container(
width: 311.w,
height: 298.w,
padding: EdgeInsets.symmetric(
vertical: 25.w,
horizontal: 25.w
),
child: Column(
children: [
Image.asset(
Assets.imagesWarningIcon,
width: 102.w,
height: 102.w,
),
SizedBox(height: 12.w,),
Text(
"系统检测到您2分钟内没有露脸,请露脸直播。多次违规后,取消当日前面直播时长,并且关闭直播间。",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 14.w
),
),
SizedBox(height: 7.w,),
Container(
width: 188.w,
height: 40.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(12.w)),
color: const Color.fromRGBO(117, 98, 249, 1)
),
child: Center(
child: Text(
"确认",
style: TextStyle(
fontSize: 14.w,
color: Colors.white
),
),
),
)
],
),
),
),
);
},
);
});
}
}
},
onError: (ErrorCodeType err, String msg) {
print('RTC Engine 错误:$err,消息:$msg');
@ -506,8 +586,9 @@ class RTCManager {
moduleCount: 1
)
);
await _engine?.enableFaceDetection(true);
if (role == ClientRoleType.clientRoleBroadcaster) {
await _engine?.enableFaceDetection(true);
}
}
///

Loading…
Cancel
Save