Flutter活体检测插件liveness_azure_flutter的使用
Flutter活体检测插件liveness_azure_flutter的使用
检查文档
您可以在 Pub.Dev 查看此插件的详细信息。
支持平台
以下是该插件在不同平台上的支持情况:
功能 | Android | iOS | Linux | macOS | Web | Windows |
---|---|---|---|---|---|---|
支持 | SDK 24+ | iOS 14+ | 不支持 | 不支持 | 不支持 | 不支持 |
配置步骤
Android配置
要生成 accessToken
,请参考以下步骤:
获取Face Artifacts访问权限
然后在您的 gradle.properties
文件中添加以下内容(更多信息可参考:Android Azure AI):
maveUser=any_user
mavenPassword=accessToken
iOS配置
同样需要生成 accessToken
,请参考以下步骤:
获取Face Artifacts访问权限
在您的 Podfile
中添加以下内容:
source 'https://github.com/CocoaPods/Specs.git'
source 'https://msface.visualstudio.com/SDK/_git/AzureAIVisionCore.podspec'
source 'https://msface.visualstudio.com/SDK/_git/AzureAIVisionFace.podspec'
在 Info.plist
文件中添加以下键值对:
<key>NSCameraUsageDescription</key>
<string>描述相机用途...</string>
<key>NSMicrophoneUsageDescription</key>
<string>描述麦克风用途...</string>
在Xcode中可能会弹出一个窗口请求用户名和密码。您可以设置一个随机用户名,并将上一步生成的 accessToken
作为密码。
更多信息可参考:iOS Azure AI
开始使用
完成配置后,您可以按以下方式初始化和调用插件:
import 'package:liveness_azure_flutter/liveness_azure_flutter.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:flutter/material.dart';
import 'dart:async';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
// 请求相机权限
Future<PermissionStatus> requestCameraPermission() async {
return Permission.camera.request();
}
Future initLiveness() async {
// 检查是否已获得相机权限
if (await requestCameraPermission() == PermissionStatus.granted) {
// 获取会话令牌(不建议在实际项目中直接使用这种方式,应从客户端后端获取)
final session = await LivenessAzureFlutter.createSession(
faceApiEndpoint: 'yourFaceApiEndpoint', apiKey: 'apikey1234');
if (session != null) {
try {
// 初始化活体检测
final liveness = await LivenessAzureFlutter.initLiveness(
authTokenSession: session.authSession,
// 自定义反馈文字(也可选择默认值或葡萄牙语主题 LivenessTheme.pt())
theme: const LivenessTheme(
feedbackNone: 'Hold Still.',
feedbackLookAtCamera: 'Look at camera.',
feedbackFaceNotCentered: 'Center your face in the circle.',
feedbackMoveCloser: 'Too far away! Move in closer.',
feedbackContinueToMoveCloser: 'Continue to move closer.',
feedbackMoveBack: 'Too close! Move farther away.',
feedbackReduceMovement: 'Too much movement.',
feedbackSmile: 'Smile for the camera!',
feedbackAttentionNotNeeded: 'Done, finishing up...'));
print('liveness result: ${liveness?.resultId}');
} catch (msg, stacktrace) {
// 错误处理
}
}
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('插件示例')),
body: Center(
child: FutureBuilder(
future: requestCameraPermission(),
builder: (context, snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return const CircularProgressIndicator();
}
return TextButton(
onPressed: initLiveness,
child: const Text("开始活体检测"));
})));
}
}
示例代码
以下是一个完整的示例代码,展示如何集成和使用 liveness_azure_flutter
插件:
import 'package:liveness_azure_flutter/liveness_azure_flutter.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:flutter/material.dart';
import 'dart:async';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
Future<PermissionStatus> requestCameraPermission() async {
return Permission.camera.request();
}
Future initLiveness() async {
if (await requestCameraPermission() == PermissionStatus.granted) {
final session = await LivenessAzureFlutter.createSession(
faceApiEndpoint: 'yourFaceApiEndpoint', apiKey: 'apikey1234');
if (session != null) {
try {
final liveness = await LivenessAzureFlutter.initLiveness(
authTokenSession: session.authSession,
theme: const LivenessTheme(
feedbackNone: '保持静止.',
feedbackLookAtCamera: '看向摄像头.',
feedbackFaceNotCentered: '将脸放在圆圈中央.',
feedbackMoveCloser: '太远了!靠近一点.',
feedbackContinueToMoveCloser: '继续靠近.',
feedbackMoveBack: '太近了!远离一些.',
feedbackReduceMovement: '移动过多.',
feedbackSmile: '对镜头微笑!',
feedbackAttentionNotNeeded: '完成,正在结束...'));
print('活体检测结果: ${liveness?.resultId}');
} catch (msg, stacktrace) {
// 错误处理
}
}
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('插件示例')),
body: Center(
child: FutureBuilder(
future: requestCameraPermission(),
builder: (context, snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return const CircularProgressIndicator();
}
return TextButton(
onPressed: initLiveness,
child: const Text("开始活体检测"));
})));
}
}
更多关于Flutter活体检测插件liveness_azure_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter活体检测插件liveness_azure_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
liveness_azure_flutter
是一个用于在 Flutter 应用中实现活体检测的插件,它基于 Azure 的 Face API。活体检测是一种用于验证用户是否为真实人类的技术,通常用于身份验证、安全登录等场景。
以下是如何在 Flutter 项目中使用 liveness_azure_flutter
插件的基本步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 liveness_azure_flutter
插件的依赖:
dependencies:
flutter:
sdk: flutter
liveness_azure_flutter: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 配置 Azure Face API
在使用 liveness_azure_flutter
之前,你需要在 Azure 门户中创建一个 Face API 资源,并获取 API 密钥和终结点 URL。
- 登录到 Azure 门户。
- 创建一个新的 Face API 资源。
- 获取 API 密钥和终结点 URL。
3. 初始化插件
在你的 Flutter 应用中初始化 liveness_azure_flutter
插件,并设置 Azure Face API 的密钥和终结点。
import 'package:liveness_azure_flutter/liveness_azure_flutter.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化插件
await LivenessAzureFlutter.initialize(
apiKey: 'YOUR_AZURE_FACE_API_KEY',
endpoint: 'YOUR_AZURE_FACE_API_ENDPOINT',
);
runApp(MyApp());
}
4. 启动活体检测
在你的应用中,你可以通过调用 LivenessAzureFlutter.startLivenessDetection()
方法来启动活体检测流程。
import 'package:flutter/material.dart';
import 'package:liveness_azure_flutter/liveness_azure_flutter.dart';
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Liveness Detection'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
try {
// 启动活体检测
final result = await LivenessAzureFlutter.startLivenessDetection();
// 处理检测结果
if (result.isLive) {
print('Liveness detection successful!');
} else {
print('Liveness detection failed.');
}
} catch (e) {
print('Error: $e');
}
},
child: Text('Start Liveness Detection'),
),
),
),
);
}
}
5. 处理检测结果
startLivenessDetection()
方法返回一个 LivenessResult
对象,其中包含检测结果。你可以根据 isLive
属性来判断用户是否为真实人类。
final result = await LivenessAzureFlutter.startLivenessDetection();
if (result.isLive) {
print('Liveness detection successful!');
} else {
print('Liveness detection failed.');
}
6. 处理错误
在活体检测过程中,可能会发生错误(例如网络问题、API 调用失败等)。你可以通过 try-catch
块来捕获并处理这些错误。
try {
final result = await LivenessAzureFlutter.startLivenessDetection();
// 处理结果
} catch (e) {
print('Error: $e');
}