Flutter集成Contour AI SDK插件contouraisdk的使用
Flutter集成Contour AI SDK插件contouraisdk的使用
Contour AI SDK™ 被设计为业界最直观且安全的移动图像捕捉体验——通过iOS™或Android™移动设备捕获各种类型的文档。同时,它被设计为在有限的人工干预下,清晰、准确、完整地处理这些文档,从而提高效率并降低成本。
开始使用
请参阅文档网站以获取更多信息。
许可证
专有许可证
Contour AI SDK™(简称“SDK”)除非另有明确说明,否则是由Contour Document Imaging, LLC(“CDI”)拥有并受其许可条款约束的专有软件。访问此SDK即表示你同意以下条款和条件:
- 仅用于评估SDK的目的,并进行内部软件和应用程序开发,以便这些应用程序能够将数据传输到Urban FT、X-35或CDI。
- 不得接收任何底层软件或SDK的对象代码或源代码副本。
- 不得复制SDK。
- 不得向任何第三方提供SDK。
- CDI拥有SDK中所有代码的所有修改、修订或衍生作品的版权。
你的使用权利取决于以下条件:
- 不得出售、出租、租赁或以其他方式分发或共享SDK;
- 不得反汇编、反编译或逆向工程SDK或其输出,或试图推导出源代码(或底层思想、算法、结构或组织);
- 不得向任何第三方提供SDK访问权限;
- 不得基于SDK创建任何衍生作品;
- 不得以违反任何适用法律的方式使用SDK;
- 不得干扰或破坏SDK的完整性或性能;
- 不得尝试未经授权访问相关系统或网络。
CDI仅允许你根据上述条款和条件使用SDK。SDK不是出售的商品。CDI及其许可方保留对SDK及相关文档的所有权利、所有权和利益,包括但不限于任何组件、修正、更新、升级、方法、衍生作品及其相关文档,以及与SDK相关的所有商标、商号、商业秘密和其他专有信息。CDI还拥有与SDK相关的所有建议、想法、增强请求或反馈的权利。
所有未明确授予你的权利均保留给CDI及其许可方,你没有任何因暗示或禁止反言而产生的权利。
完整示例Demo
下面是使用Flutter集成Contour AI SDK插件的具体示例代码:
import 'dart:io';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:contouraisdk/contouraisdk.dart';
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> {
String frontImageUri = '';
String rearImageUri = '';
[@override](/user/override)
void initState() {
super.initState();
Contouraisdk.registerCallbacks(onDataReceived, onEventCaptured, onContourClosed);
}
// 异步初始化平台消息
Future<void> callContour(String face) async {
try {
await Contouraisdk.startContourSDK("", face, "both", false);
} on PlatformException catch (e) {
print(e.message);
}
}
// 接收数据回调函数
void onDataReceived(Map<String, String> data) {
String? croppedFront = data['croppedFrontUri'];
String? croppedRear = data['croppedRearUri'];
print('Received data from URI for front cropped: $croppedFront');
print('Received data from URI for rear cropped: ${data['croppedRearUri']}');
print('Received data from URI for front full: ${data['frontUri']}');
print('Received data from URI for rear full: ${data['rearUri']}');
if (croppedFront != null) {
setState(() {
frontImageUri = data['croppedFrontUri']!;
});
}
if (croppedRear != null) {
setState(() {
rearImageUri = data['croppedRearUri']!;
});
}
}
// 事件捕获回调函数
void onEventCaptured(String data) {
print('Received data in onEventCaptured: $data');
}
// 关闭回调函数
void onContourClosed() {
print('Received data in onContourClosed');
}
// 构建图片控件
Widget _buildImageWidget(String uri, double width, double height, String face) {
if (uri.isNotEmpty) {
return GestureDetector(
onTap: () {
callContour(face);
}, // 定义点击处理函数
child: Image.file(
File(uri),
width: width,
height: height,
),
);
} else {
return GestureDetector(
onTap: () {
callContour(face);
},
child: Image.asset(
'assets/placeholder.png',
width: width,
height: height,
),
);
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Contour 示例'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
const SizedBox(height: 24),
const Text("正面",
style: TextStyle(fontSize: 16, color: Colors.black87)),
const SizedBox(height: 16),
_buildImageWidget(frontImageUri, 400, 200, 'front'),
const SizedBox(height: 30),
const Text("背面",
style: TextStyle(fontSize: 16, color: Colors.black87)),
const SizedBox(height: 16),
_buildImageWidget(rearImageUri, 400, 200, 'back'),
],
))),
);
}
}
更多关于Flutter集成Contour AI SDK插件contouraisdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter集成Contour AI SDK插件contouraisdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中集成Contour AI SDK插件(contouraisdk
)的步骤通常包括以下几个主要步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 contouraisdk
插件的依赖。假设 contouraisdk
是一个已经发布在 pub.dev 上的插件,你可以直接添加:
dependencies:
flutter:
sdk: flutter
contouraisdk: ^1.0.0 # 使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化 SDK
在你的Flutter应用中,通常需要在应用启动时初始化 contouraisdk
。你可以在 main.dart
中进行初始化:
import 'package:flutter/material.dart';
import 'package:contouraisdk/contouraisdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化Contour AI SDK
await ContourAISDK.initialize(
apiKey: 'YOUR_API_KEY', // 替换为你的API Key
environment: Environment.sandbox, // 或者 Environment.production
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Contour AI SDK Example',
home: HomeScreen(),
);
}
}
3. 使用 SDK 功能
根据 contouraisdk
提供的功能,你可以在应用中使用它。例如,如果 SDK 提供了人脸检测功能,你可以这样调用:
import 'package:flutter/material.dart';
import 'package:contouraisdk/contouraisdk.dart';
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
String _result = '';
Future<void> _detectFace() async {
try {
final result = await ContourAISDK.detectFace();
setState(() {
_result = result;
});
} catch (e) {
setState(() {
_result = 'Error: $e';
});
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Contour AI SDK Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: _detectFace,
child: Text('Detect Face'),
),
SizedBox(height: 20),
Text(_result),
],
),
),
);
}
}
4. 处理权限
某些功能可能需要特定的权限(例如相机权限)。你需要在 AndroidManifest.xml
和 Info.plist
中添加相应的权限声明,并在Flutter中请求权限。
Android:
在 android/app/src/main/AndroidManifest.xml
中添加:
<uses-permission android:name="android.permission.CAMERA" />
iOS:
在 ios/Runner/Info.plist
中添加:
<key>NSCameraUsageDescription</key>
<string>We need access to the camera for face detection.</string>
在Flutter中请求权限:
import 'package:permission_handler/permission_handler.dart';
Future<void> _requestPermissions() async {
if (await Permission.camera.request().isGranted) {
// 权限已授予
} else {
// 处理权限被拒绝的情况
}
}
5. 处理回调与事件
如果 contouraisdk
提供了回调或事件监听机制,你需要在适当的地方注册监听器。例如:
ContourAISDK.onFaceDetected((result) {
setState(() {
_result = result;
});
});
6. 调试与测试
在开发过程中,确保你能够捕获和处理SDK可能抛出的异常,并使用调试工具(如 print
或 logger
)来输出调试信息。
7. 发布应用
在发布应用之前,确保你已经正确配置了所有必要的权限和设置,并进行了充分的测试。
8. 参考文档
最后,建议仔细阅读 contouraisdk
的官方文档,了解所有可用的功能、参数和配置选项。
示例代码
以下是一个完整的示例代码,假设 contouraisdk
提供了人脸检测功能:
import 'package:flutter/material.dart';
import 'package:contouraisdk/contouraisdk.dart';
import 'package:permission_handler/permission_handler.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化Contour AI SDK
await ContourAISDK.initialize(
apiKey: 'YOUR_API_KEY',
environment: Environment.sandbox,
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Contour AI SDK Example',
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
String _result = '';
Future<void> _detectFace() async {
if (await Permission.camera.request().isGranted) {
try {
final result = await ContourAISDK.detectFace();
setState(() {
_result = result;
});
} catch (e) {
setState(() {
_result = 'Error: $e';
});
}
} else {
setState(() {
_result = 'Camera permission denied';
});
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Contour AI SDK Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: _detectFace,
child: Text('Detect Face'),
),
SizedBox(height: 20),
Text(_result),
],
),
),
);
}
}