flutter_uvc_camera 0.0.4 copy "flutter_uvc_camera: ^0.0.4" to clipboard
flutter_uvc_camera: ^0.0.4 copied to clipboard

PlatformAndroid

Flutter plugin, allowing apps in the Flutter project to use UVC cameras connected to the device.

flutter_uvc_camera #

A Flutter plugin based on AndroidUSBCamera to enable Flutter apps to use external cameras.

pub:flutter_uvc_camera

Preface #

  • Only supports Android
  • Android 10 need to reduce targetSdkVersion to 27
  • Discovering problematic models:Redmi Note 10

Getting Started #

1. Add Dependency #

Add the flutter_uvc_camera plugin dependency to your Flutter project's pubspec.yaml file:

dependencies:
  flutter_uvc_camera: last_version

2. Configure Android Project #

Before using this plugin, some configurations are needed for the Android project.

Add Permissions #

Add the following permissions to the AndroidManifest.xml file of your Android project:

   <uses-permission android:name="android.permission.USB_PERMISSION" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-feature android:name="android.hardware.usb.host" />
    <uses-feature android:name="android.hardware.camera"/>
    <uses-feature android:name="android.hardware.camera.autofocus"/>
    <!-- Add other necessary permissions here -->

Add maven { url "https://jitpack.io" } in android/build.gradle:

allprojects {
    repositories {
        /// other repositories
        maven { url "https://jitpack.io" }
    }
}

Add Intent Filter and Meta-data for Device Insertion Detection, Plug-in Monitoring, and Recognition of Opening Applications

Android documents USB host overview

Add an action for USB device connection in the intent-filter of mainActivity, and reference the corresponding XML file in meta-data:

<intent-filter>
    <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<meta-data
    android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
    android:resource="@xml/device_filter" />
<?xml version="1.0" encoding="utf-8"?>

<resources>
    <usb-device vendor-id="1234" product-id="5678" class="255" subclass="66" protocol="1" />
</resources>

3. Usage Example #

import 'package:flutter/material.dart';
import 'package:flutter_uvc_camera/uvc_camera_controller.dart';
import 'package:flutter_uvc_camera/uvc_camera_view.dart';

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

  @override
  State<CameraTest> createState() => _CameraTestState();
}

class _CameraTestState extends State<CameraTest> {
  UVCCameraController? cameraController;
  
  @override
  void initState() {
    super.initState();
    cameraController = UVCCameraController();
    cameraController?.msgCallback = (state) {
      showCustomToast(state);
    };
  }
  
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('UVC Camera Example'),
        ),
        body: Center(
          child: UVCCameraView(
              cameraController: cameraController!,
              width: 300,
              height: 300),
        ),
      ),
    );
  }
}

Problems #

add proguard-rules.pro #

flutter run release encounters a NoSuchMethodError

  • example/android/app/build.gradle
 buildTypes {
      release {
        <!--   ...-->
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        minifyEnabled true
    }
}
  • example/android/app/proguard-rules.pro
 -keep class com.jiangdg.uvc.UVCCamera {
        native <methods>;
  long mNativePtr;
  }
  -keep class com.jiangdg.uvc.IStatusCallback {
  *;
  }

Notes #

  • Ensure that the required permissions are configured before using the plugin, otherwise the plugin may not function properly.
  • The plugin currently supports using external cameras in Flutter projects but may have some limitations and compatibility issues. Please test and adjust the plugin according to your needs.

Issue Reporting #

If you encounter any problems or have any suggestions during usage, please report them on GitHub Issues .

13
likes
150
pub points
81%
popularity

Publisher

unverified uploader

Flutter plugin, allowing apps in the Flutter project to use UVC cameras connected to the device.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on flutter_uvc_camera