All Projects → Apparence-io → Camera_awesome

Apparence-io / Camera_awesome

Licence: mit
A flutter plugin to handle Android / iOS camera

Programming Languages

dart
5743 projects

Projects that are alternatives of or similar to Camera awesome

Awesome Flutter
An awesome list that curates the best Flutter libraries, tools, tutorials, articles and more.
Stars: ✭ 38,582 (+20643.01%)
Mutual labels:  cross-platform, mobile-development, flutter-plugin
Flutter Development Roadmap
Flutter App Developer Roadmap - A complete roadmap to learn Flutter App Development. I tried to learn flutter using this roadmap. If you want to add something please contribute to the project. Happy Learning
Stars: ✭ 474 (+154.84%)
Mutual labels:  cross-platform, flutter-plugin
Mymovies
A Flutter app which shows a list of popular movies.
Stars: ✭ 371 (+99.46%)
Mutual labels:  cross-platform, mobile-development
Brainpowerapp
A visual memory training game, a mobile game made with Xamarin for both Android and IOS .
Stars: ✭ 17 (-90.86%)
Mutual labels:  cross-platform, mobile-development
Reactivision
computer vision framework for tangible interactive surfaces
Stars: ✭ 231 (+24.19%)
Mutual labels:  camera, cross-platform
flutter scan
scanner qrcode in widget tree & decoder qrcode from image
Stars: ✭ 63 (-66.13%)
Mutual labels:  camera, flutter-plugin
Flutter thrio
flutter_thrio makes it easy and fast to add flutter to existing mobile applications, and provide a simple and consistent navigator APIs.
Stars: ✭ 717 (+285.48%)
Mutual labels:  cross-platform, flutter-plugin
Flutterexampleapps
[Example APPS] Basic Flutter apps, for flutter devs.
Stars: ✭ 15,950 (+8475.27%)
Mutual labels:  cross-platform, flutter-plugin
Codenameone
Cross-platform framework for building truly native mobile apps with Java or Kotlin. Write Once Run Anywhere support for iOS, Android, Desktop & Web.
Stars: ✭ 992 (+433.33%)
Mutual labels:  cross-platform, mobile-development
Flutter Mvvm Provider Demo
Stars: ✭ 89 (-52.15%)
Mutual labels:  cross-platform, mobile-development
Flutter firebase
Flutter UI with different widgets and firebase authentication email and gmail
Stars: ✭ 254 (+36.56%)
Mutual labels:  cross-platform, mobile-development
Axion Technologies Hnh
Hotter’n Hell Hundred is the largest one hundred mile cycling events in the United States and the world. Held in Wichita Falls, TX, this event brings thousands of registrants within the city limits, resulting in a spike in revenue throughout local businesses, restaurants, and hotels, and overall for the city of Wichita Falls. There are several sub-events within the Hotter’n Hell Hundred, such as different races, dining events, consumer shows and a medical symposium. The proposed Hotter’n Hell Hundred mobile application serves as the ultimate source of information for the events, enabling users to quickly register for events and explore local places. In addition, the mobile application allows users to navigate through race during the event, tracking their speed, nearby rest stops, alternate routes, and finish line, ensuring the best possible experience during their stay in Wichita Falls.
Stars: ✭ 155 (-16.67%)
Mutual labels:  cross-platform, mobile-development
Titanium mobile
🚀 Native iOS- and Android- Apps with JavaScript
Stars: ✭ 2,553 (+1272.58%)
Mutual labels:  cross-platform, mobile-development
reactive state
An easy to understand reactive state management solution for Flutter.
Stars: ✭ 19 (-89.78%)
Mutual labels:  mobile-development, flutter-plugin
Awesome Fluttercn
一份 Flutter 优秀中文资源列表,在这里能找到优质的Flutter库、工具,教程,文章等。
Stars: ✭ 208 (+11.83%)
Mutual labels:  cross-platform, flutter-plugin
React Native Dialogs
React Native wrappers for https://github.com/afollestad/material-dialogs
Stars: ✭ 568 (+205.38%)
Mutual labels:  cross-platform, mobile-development
Media picker
A Flutter Plugin for Selecting and Taking New Photos and Videos.
Stars: ✭ 24 (-87.1%)
Mutual labels:  camera, flutter-plugin
Boden
Purely native C++ cross-platform GUI framework for Android and iOS development. https://www.boden.io
Stars: ✭ 1,394 (+649.46%)
Mutual labels:  cross-platform, mobile-development
Flutter socket io
Socket IO supprt for flutter. Looking for contributors Swift and Java.
Stars: ✭ 170 (-8.6%)
Mutual labels:  mobile-development, flutter-plugin
Camerafilters
📷 摄像头实时滤镜处理库,自带10多种滤镜,支持滤镜扩展,并且兼容七牛云直播滤镜处理
Stars: ✭ 181 (-2.69%)
Mutual labels:  camera

camerawesome_logo

Awesome Flutter Star on Github Star on Github

🚀  Overview

Flutter plugin to add Camera support inside your project.

CamerAwesome include a lot of useful features like:

  • 📲 Live camera flip ( switch between rear & front camera without rebuild ).
  • ⚡️ No init needed, just add CameraAwesome widget !
  • ⌛️ Instant focus.
  • 📸 Device flash support.
  • 🎚 Zoom.
  • 🖼 Fullscreen or SizedBox preview support.
  • 🎮 Complete example.
  • 🎞 Taking a picture ( of course 😃 ).
  • 🎥 Video recording (iOS only for now).

🧐  Live example

Taking photo 📸 & record video 🎥 Resolution changing 🌇
camerawesome_example1 camerawesome_example2

📖  Installation and usage

Set permissions

  • iOS add these on ios/Runner/Info.plist file
<key>NSCameraUsageDescription</key>
<string>Your own description</string>

<key>NSMicrophoneUsageDescription</key>
<string>To enable microphone access when recording video</string>
  • Android

    • Set permissions before <application>

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
    • Change the minimum SDK version to 21 (or higher) in android/app/build.gradle

    minSdkVersion 21
    

Import the package

import 'package:camerawesome/camerawesome_plugin.dart';

Define notifiers (if needed) & controller

ValueNotifier is a useful change notifier from Flutter framework. It fires an event on all listener when value changes. Take a look here for ValueNotifier doc

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> with TickerProviderStateMixin {
  // [...]
  // Notifiers
  ValueNotifier<CameraFlashes> _switchFlash = ValueNotifier(CameraFlashes.NONE);
  ValueNotifier<Sensors> _sensor = ValueNotifier(Sensors.BACK);
  ValueNotifier<CaptureModes> _captureMode = ValueNotifier(CaptureModes.PHOTO);
  ValueNotifier<Size> _photoSize = ValueNotifier(null);

  // Controllers
  PictureController _pictureController = new PictureController();
  VideoController _videoController = new VideoController();
  // [...]
}

If you want to change a config, all you need is setting the value. CameraAwesome will handle the rest.

Examples:

_switchFlash.value = CameraFlashes.AUTO;
_captureMode.value = CaptureModes.VIDEO;

Create your camera

// [...]
@override
  Widget build(BuildContext context) {
    return CameraAwesome(
      testMode: false,
      onPermissionsResult: (bool result) { },
      selectDefaultSize: (List<Size> availableSizes) => Size(1920, 1080),
      onCameraStarted: () { },
      onOrientationChanged: (CameraOrientations newOrientation) { },
      zoom: 0.64,
      sensor: _sensor,
      photoSize: _photoSize,
      switchFlashMode: _switchFlash,
      captureMode: _captureMode,
      orientation: DeviceOrientation.portraitUp,
      fitted: true,
    );
  };
// [...]
Reveal parameters list

Param Type Description Required
testMode boolean true to wrap texture
onPermissionsResult OnPermissionsResult implement this to have a callback after CameraAwesome asked for permissions
selectDefaultSize OnAvailableSizes implement this to select a default size from device available size list
onCameraStarted OnCameraStarted notify client that camera started
onOrientationChanged OnOrientationChanged notify client that orientation changed
switchFlashMode **ValueNotifier**<CameraFlashes> change flash mode
zoom ValueNotifier<double> Zoom from native side. Must be between 0 and 1
sensor ValueNotifier<Sensors> sensor to initiate BACK or FRONT
photoSize ValueNotifier<Size> choose your photo size from the [selectDefaultSize] method
captureMode ValueNotifier<CaptureModes> choose capture mode between PHOTO or VIDEO
orientation DeviceOrientation initial orientation
fitted bool whether camera preview must be as big as it needs or cropped to fill with. false by default
imagesStreamBuilder Function returns an imageStream when camera has started preview

Photo 🎞

Take a photo 📸

await _pictureController.takePicture('THE_IMAGE_PATH/myimage.jpg');

Video 🎥

Record a video 📽

await _videoController.recordVideo('THE_IMAGE_PATH/myvideo.mp4');

Stop recording video 📁

await _videoController.stopRecordingVideo();

📡  Live image stream

The property imagesStreamBuilder allows you to get an imageStream once the camera is ready. Don't try to show all these images on Flutter UI as you won't have time to refresh UI fast enough. (there is too much images/sec).

CameraAwesome(
    ...
    imagesStreamBuilder: (imageStream) {
        /// listen for images preview stream
        /// you can use it to process AI recognition or anything else...
        print('-- init CamerAwesome images stream');
    },
)

📱  Tested devices

CamerAwesome was developed to support most devices on the market but some feature can't be fully functional. You can check if your device support all feature by clicking bellow.

Feel free to contribute to improve this compatibility list.

Reveal grid

Devices Flash Focus Zoom Flip
iPhone X
iPhone 7
One Plus 6T
Xiaomi redmi
Honor 7

🎯  Our goals

Feel free to help by submitting PR !

  • [ ] 🎥 Record video (partially, iOS only)
  • [ ] 🌠 Focus on specific point
  • [x] 📡 Broadcast live image stream
  • [x] 🌤 Exposure level
  • [x] ✅ Add e2e tests
  • [x] 🖼 Fullscreen/SizedBox support
  • [x] 🎮 Complete example
  • [x] 🎞 Take a picture
  • [x] 🎚 Zoom level
  • [x] 📲 Live switching camera
  • [x] 📸 Device flash support
  • [x] ⌛️ Auto focus

📣  Sponsor


Initiated and sponsored by Apparence.io.

👥  Contribution

Contributions are welcome. Contribute by creating a PR or create an issue 🎉.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].