Flutter增强现实插件ar_quido的使用

发布于 1周前 作者 yibo5220 来自 Flutter

Flutter增强现实插件ar_quido的使用

Ahoy, me hearties! Set sail on the high seas of image recognition with our Flutter plugin. Arrr! 🦜

🏴‍☠️ ar_quido 🏴‍☠️

Image recognition using Augmented Reality (AR) features for mobile Flutter apps. It uses EasyAR Sense on Android and native ARKit on iOS.

The plugin has been built by Flutter Division at Miquido Software development company.

Getting started 🚢

添加依赖

  1. 从命令行添加:

    flutter pub add ar_quido
    flutter pub get
    
  2. 直接在 pubspec.yaml 中添加:

    dependencies:
       ar_quido: 0.2.0
    

Android 配置

由于 Android 版本依赖于 EasyAR 解决方案,你需要在其页面上 注册 并获得 “Sense Authorization” License Key。可以通过 EasyAR Dashboard 完成。

之后,在 Android Manifest 文件中提供该 key 作为 application 的元数据:

<meta-data
           android:name="com.miquido.ar_quido.API_KEY"
           android:value="<YOUR_SENSE_LICENSE_KEY>" />

Proguard

默认情况下,proguard 会从发布版本中删除 EasyAR 库文件。要解决这个问题,请将以下代码添加到 android/app/src/proguard-rules.pro 文件中(如果不存在则创建):

-keep class cn.easyar.** { *; }
-keepattributes SourceFile,LineNumberTable
-keep public class * extends java.lang.Exception

iOS 配置

ARKit 使用设备摄像头,因此不要忘记在 Info.plist 中提供 NSCameraUsageDescription

<key>NSCameraUsageDescription</key>
<string>Describe why your app needs camera (AR) here.</string>

此外,请确保项目设置中的部署目标至少为 14.0。在 ios/Podfile 中设置相同的版本:

platform :ios, '15.0'

Usage 🌴

  1. 将参考图像放在 assets/reference_images 目录中(确保在 pubspec.yaml 中引用它们)。

    • 请注意,目前只支持 .jpg 图像。
  2. 在视图代码中放置 ARQuidoView 小部件。至少提供一个你要检测的图像名称数组(通过 referenceImageNames 属性)和一个检测到图像时的回调(通过 onImageDetected 属性):

    ARQuidoView(
       referenceImageNames: const ['applandroid'],
       onImageDetected: (imageName) {
         // handle detected image
       },
    ),
    
  3. 这样就完成了 ⚓

请参阅 示例 以获取更多信息。您也可以在 API 文档 中查看详细信息。

示例代码

以下是完整的示例 demo:

import 'package:ar_quido/ar_quido.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Permission.camera.request();
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String? _recognizedImage;

  void _onImageDetected(BuildContext context, String? imageName) {
    if (imageName != null && _recognizedImage != imageName) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text('Recognized image: $imageName'),
          duration: const Duration(milliseconds: 2500),
        ),
      );
    }
    setState(() {
      _recognizedImage = imageName;
    });
  }

  void _onDetectedImageTapped(BuildContext context, String? imageName) {
    if (imageName != null) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text('Tapped on image: $imageName'),
          duration: const Duration(milliseconds: 1500),
        ),
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Builder(
          builder: (context) {
            return Stack(
              children: [
                ARQuidoView(
                  referenceImageNames: const ['applandroid'],
                  onImageDetected: (imageName) =>
                      _onImageDetected(context, imageName),
                  onDetectedImageTapped: (imageName) =>
                      _onDetectedImageTapped(context, imageName),
                ),
              ],
            );
          },
        ),
      ),
    );
  }
}

以上是 ar_quido 插件的基本使用方法和示例代码。希望对您有所帮助!


更多关于Flutter增强现实插件ar_quido的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter增强现实插件ar_quido的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中集成和使用ar_quido插件来实现增强现实(AR)功能的示例代码。请注意,ar_quido是一个假设的插件名称,因为在实际环境中可能不存在这个确切名称的插件。不过,大多数AR插件的使用步骤是类似的,这里我会提供一个通用的AR插件集成示例,并解释每个步骤的作用。

首先,确保你的Flutter环境已经设置好,并且你有一个新的Flutter项目。

1. 添加依赖

在你的pubspec.yaml文件中添加AR插件的依赖。由于ar_quido是假设的,这里以arcore_flutter_plugin(一个实际存在的ARCore插件)为例:

dependencies:
  flutter:
    sdk: flutter
  arcore_flutter_plugin: ^x.y.z  # 替换为实际版本号

然后运行flutter pub get来安装依赖。

2. 配置Android项目

对于AR功能,你可能需要在android/app/build.gradle文件中添加一些配置,特别是针对ARCore的兼容性和权限设置。以下是一个示例配置:

android {
    ...
    defaultConfig {
        ...
        minSdkVersion 24  // ARCore要求的最小SDK版本
        ...
    }
    ...
}

dependencies {
    ...
    implementation 'com.google.ar:core:1.x.y'  // 替换为实际版本号
}

同时,在AndroidManifest.xml中添加必要的权限:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

3. 实现AR功能

在你的Flutter代码中,你可以使用插件提供的API来实现AR功能。以下是一个简单的示例,展示如何初始化AR视图并显示一个简单的AR对象:

import 'package:flutter/material.dart';
import 'package:arcore_flutter_plugin/arcore_flutter_plugin.dart';  // 替换为实际插件导入路径

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter AR Example'),
        ),
        body: ARScaffold(  // 假设插件提供了一个ARScaffold widget
          builder: (context, arView) {
            return Stack(
              children: [
                arView,  // AR视图
                // 你可以在这里添加其他UI元素,比如按钮或信息提示
              ],
            );
          },
        ),
      ),
    );
  }
}

// 假设ARScaffold是插件提供的一个widget,用于承载AR视图
// 你可以根据插件的文档来调整这个部分
class ARScaffold extends StatelessWidget {
  final Widget Function(BuildContext, Widget) builder;

  ARScaffold({required this.builder});

  @override
  Widget build(BuildContext context) {
    // 这里应该有一个ARView或其他类似的widget来显示AR内容
    // 但由于这是一个示例,我们假设builder会处理这部分
    return builder(context, Container());  // 替换为实际的AR视图widget
  }
}

4. 运行应用

确保你的设备支持AR(比如拥有ARKit或ARCore兼容的硬件),然后连接设备并运行应用:

flutter run

注意事项

  • 由于ar_quido是假设的插件名称,你需要替换为实际存在的AR插件,如arcore_flutter_pluginarkit_flutter_plugin等。
  • 每个AR插件的API可能会有所不同,因此务必参考插件的官方文档来了解具体的用法和配置。
  • AR功能通常需要设备支持,因此在测试之前请确保你的设备兼容。

希望这个示例能帮助你理解如何在Flutter项目中集成和使用AR插件!

回到顶部