Skip to content
This repository has been archived by the owner on Dec 5, 2022. It is now read-only.

afonsocraposo/manual_camera

Repository files navigation

Manual Camera Plugin

pub package

This plugin is a modified version of the native Flutter camera plugin.

This version allows the definition of manual parameters for the Android camera:

Feature Values Type Description
enableFlash true/false bool Turn flash on or off
focusDistance 0 (auto) - +∞ double Distance in meters from camera to focused object
iso 0 (auto) - +∞ int Sensor's sensitivity to light
shutterSpeed 0 (auto) - +∞ int 1s / shutterSpeed = duration of the sensor exposure
whiteBalance ... WhiteBalancePreset White balance Android options

Installation

First, add manual_camera as a dependency in your pubspec.yaml file.

dependencies:
  flutter:
    sdk: flutter
  manual_camera: ^0.0.3 // add manual_camera plugin

iOS

Add two rows to the ios/Runner/Info.plist:

  • one with the key Privacy - Camera Usage Description and a usage description.
  • and one with the key Privacy - Microphone Usage Description and a usage description.

Or in text format add the key:

<key>NSCameraUsageDescription</key>
<string>Can I use the camera please?</string>
<key>NSMicrophoneUsageDescription</key>
<string>Can I use the mic please?</string>

Android

Change the minimum Android sdk version to 21 (or higher) in your android/app/build.gradle file.

minSdkVersion 21

Example

Here is a small example flutter app displaying a full screen camera preview.

import 'dart:async';
import 'package:manual_camera/camera.dart';
import 'package:camera/camera.dart';

List<CameraDescription> cameras;

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  cameras = await availableCameras();
  runApp(CameraApp());
}

class CameraApp extends StatefulWidget {
  @override
  _CameraAppState createState() => _CameraAppState();
}

class _CameraAppState extends State<CameraApp> {
  CameraController controller;

  @override
  void initState() {
    super.initState();
    controller = CameraController(
      cameras[0],
      ResolutionPreset.medium,
      iso: 100,
      shutterSpeed: 30,
      whiteBalance: WhiteBalancePreset.cloudy,
      focusDistance: 0.1,
    );
    controller.initialize().then((_) {
      if (!mounted) {
        return;
      }
      setState(() {});
      Future.delayed(
        Duration(
          milliseconds: 1000,
        ),
      ).then((_) => _cameraController.flash(true));
    });
  }

  @override
  void dispose() {
    controller?.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    if (!controller.value.isInitialized) {
      return Container();
    }
    return AspectRatio(
        aspectRatio:
        controller.value.aspectRatio,
        child: CameraPreview(controller));
  }
}

Note: This plugin is still under development, and some APIs might not be available yet. I hope that in the future IOS manual exposition will also be available.

About

Modified version of Flutter camera plugin

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published