Flutter硬件交互插件mantra_mfs100的使用
Flutter硬件交互插件mantra_mfs100的使用
它支持大部分Mantra MFS 100 SDK。
特性
- 指纹捕获
- 使用ISO模板进行指纹匹配
重要信息
重要提示: Mantra MFS 100 SDK的.jar文件和其他库文件是必须的,以便使用此插件。您可以从示例部分获取.jar文件和库文件。别忘了检查app级别的gradle文件以更好地理解这一点。
完整示例代码
以下是使用mantra_mfs100
插件的基本示例代码:
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:mantra_mfs100/mantra_mfs100.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> with MSF100Event {
String _platformVersion = 'Unknown';
late MantraMfs100 mfs;
String status = 'Disconnected';
bool _isCapturing = false;
Uint8List? memoryImage;
List<int> firstTemplate = [];
[@override](/user/override)
void initState() {
super.initState();
mfs = MantraMfs100(this);
mfs.init();
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
const Text('MFS100'),
Text(status),
],
),
),
body: Center(
child: Column(
children: [
// 显示捕获到的指纹图像
memoryImage != null
? Image.memory(memoryImage!, height: 128, width: 128)
: const SizedBox(),
const SizedBox(height: 20),
// 捕获指纹按钮
TextButton(
onPressed: () async {
try {
if (_isCapturing) return;
_isCapturing = true;
FingerData res = await mfs.startAutoCapture(6000, true);
firstTemplate.clear();
firstTemplate.addAll(res.iSOTemplate);
setState(() {
_platformVersion = 'Success ${res.quality}';
memoryImage = Uint8List.fromList(res.fingerImage);
debugPrint('onCapturing-> ${res.iSOTemplate}');
print('onCapturing-> Length: ${res.iSOTemplate.length}');
});
} catch (err, stack) {
if (err is PlatformException) {
setState(() {
_platformVersion = err.message.toString();
});
}
print('While Capturing-> $err, $stack');
} finally {
_isCapturing = false;
}
},
child: const Text('Capture')),
const SizedBox(height: 20),
// 匹配指纹按钮
TextButton(
onPressed: () async {
try {
if (_isCapturing) return;
_isCapturing = true;
FingerData res = await mfs.startAutoCapture(6000, true);
var ret = await mfs.matchISO(
Uint8List.fromList(firstTemplate),
Uint8List.fromList(res.iSOTemplate));
if (ret < 0) {
setState(() {
_platformVersion = 'Error: ${mfs.getErrorMsg(ret)}';
});
} else {
if (ret >= 96) {
setState(() {
_platformVersion = 'Finger matched with score: $ret';
});
} else {
setState(() {
_platformVersion = 'Finger not matched, score: $ret';
});
}
}
} catch (err, stack) {
if (err is PlatformException) {
setState(() {
_platformVersion = err.message.toString();
});
}
print('While Verifying-> $err, $stack');
} finally {
_isCapturing = false;
}
},
child: const Text('Match')),
const SizedBox(height: 20),
// 停止自动捕获按钮
TextButton(
onPressed: () async {
if (!_isCapturing) return;
var res = await mfs.stopAutoCapture();
_isCapturing = false;
},
child: const Text('Stop')),
// 状态显示
Text('Status: $_platformVersion\n'),
],
),
),
),
);
}
// 设备连接时调用的方法
[@override](/user/override)
void onDeviceAttached(bool hasPermission) {
setState(() {
status = 'Connected';
});
print('onDeviceAttached-> $hasPermission');
}
// 设备断开连接时调用的方法
[@override](/user/override)
void onDeviceDetached() {
setState(() {
status = 'Disconnected';
});
print('onDeviceDetached: ---');
}
[@override](/user/override)
void onHostCheckFailed(String var1) {}
// 释放资源时调用的方法
[@override](/user/override)
void dispose() {
mfs.unInit();
mfs.dispose();
super.dispose();
}
// 测试方法
test() {
List<int> first = [1, 2, 3, 4];
List<int> second = List.filled(first.length, 0);
List.copyRange(second, 0, first);
print('New range $second');
}
}
更多关于Flutter硬件交互插件mantra_mfs100的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter硬件交互插件mantra_mfs100的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
mantra_mfs100
是一个用于 Flutter 的插件,用于与 Mantra MFS100 生物识别设备进行交互。Mantra MFS100 是一种指纹扫描仪,通常用于生物识别身份验证、考勤系统等场景。该插件允许 Flutter 应用程序与 MFS100 设备进行通信,以捕获指纹、验证指纹等操作。
安装插件
首先,你需要在 pubspec.yaml
文件中添加 mantra_mfs100
插件的依赖:
dependencies:
flutter:
sdk: flutter
mantra_mfs100: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装插件。
初始化设备
在使用插件之前,你需要初始化设备。通常,你需要在应用程序启动时进行初始化。
import 'package:mantra_mfs100/mantra_mfs100.dart';
final mantraMfs100 = MantraMfs100();
void initializeDevice() async {
try {
await mantraMfs100.init();
print("Device initialized successfully");
} catch (e) {
print("Failed to initialize device: $e");
}
}
捕获指纹
你可以使用 captureFingerprint
方法来捕获指纹。捕获到的指纹数据可以用于后续的验证或存储。
void captureFingerprint() async {
try {
var fingerprintData = await mantraMfs100.captureFingerprint();
print("Fingerprint captured: $fingerprintData");
} catch (e) {
print("Failed to capture fingerprint: $e");
}
}
验证指纹
你可以使用 verifyFingerprint
方法来验证捕获到的指纹数据是否与已存储的指纹数据匹配。
void verifyFingerprint(List<int> storedFingerprintData) async {
try {
var isMatch = await mantraMfs100.verifyFingerprint(storedFingerprintData);
if (isMatch) {
print("Fingerprint matched");
} else {
print("Fingerprint did not match");
}
} catch (e) {
print("Failed to verify fingerprint: $e");
}
}
释放设备
在应用程序退出或不再需要与设备交互时,你应该释放设备资源。
void releaseDevice() async {
try {
await mantraMfs100.release();
print("Device released successfully");
} catch (e) {
print("Failed to release device: $e");
}
}
处理错误
在与设备交互时,可能会遇到各种错误,例如设备未连接、初始化失败等。你应该在代码中适当处理这些错误,以确保应用程序的健壮性。
示例代码
以下是一个完整的示例,展示了如何初始化设备、捕获指纹并验证指纹。
import 'package:flutter/material.dart';
import 'package:mantra_mfs100/mantra_mfs100.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: FingerprintScreen(),
);
}
}
class FingerprintScreen extends StatefulWidget {
[@override](/user/override)
_FingerprintScreenState createState() => _FingerprintScreenState();
}
class _FingerprintScreenState extends State<FingerprintScreen> {
final mantraMfs100 = MantraMfs100();
List<int> storedFingerprintData = []; // 假设这是已存储的指纹数据
[@override](/user/override)
void initState() {
super.initState();
initializeDevice();
}
void initializeDevice() async {
try {
await mantraMfs100.init();
print("Device initialized successfully");
} catch (e) {
print("Failed to initialize device: $e");
}
}
void captureFingerprint() async {
try {
var fingerprintData = await mantraMfs100.captureFingerprint();
print("Fingerprint captured: $fingerprintData");
verifyFingerprint(fingerprintData);
} catch (e) {
print("Failed to capture fingerprint: $e");
}
}
void verifyFingerprint(List<int> capturedFingerprintData) async {
try {
var isMatch = await mantraMfs100.verifyFingerprint(storedFingerprintData);
if (isMatch) {
print("Fingerprint matched");
} else {
print("Fingerprint did not match");
}
} catch (e) {
print("Failed to verify fingerprint: $e");
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Mantra MFS100 Example'),
),
body: Center(
child: ElevatedButton(
onPressed: captureFingerprint,
child: Text('Capture Fingerprint'),
),
),
);
}
[@override](/user/override)
void dispose() {
mantraMfs100.release();
super.dispose();
}
}