![CameraKit Header](.repo/camerakit-android-header.png) CameraKit is an extraordinarily easy to use utility to work with the infamous Android Camera and Camera2 APIs. Built by [Dylan McIntyre](https://github.com/dwillmc). Try out all the unique features using the CameraKit Demo from the Google Play store! Get it on Google Play ## Table of Contents - [Features](#features) - [Setup](#setup) - [Usage](#usage) - [Extra Attributes](#extra-attributes) - [`ckCropOutput`](#ckcropoutput) - [`ckFacing`](#ckfacing) - [`ckFlash`](#ckflash) - [`ckPictureMode`](#ckpicturemode) - [Capturing Images](#capturing-images) - [Capturing Video](#capturing-video) - [Automatic Permissions Behavior](#automatic-permissions-behavior) - [Dynamic Behavior](#dynamic-sizing-behavior) - [Capture Mode Behavior](#capture-mode-behavior) - [Credits](#credits) - [License](#license) ## Features - Image and video capture seamlessly working with the same preview session. - Automatic system permission handling. - Automatic preview scaling. - Create a `CameraView` of any size (not just presets!). - Automatic output cropping to match your `CameraView` bounds. - Multiple capture modes. - `PICTURE_MODE_QUALITY`: an image captured normally using the camera APIs. - `PICTURE_MODE_SPEED`: a freeze frame of the `CameraView` preview (similar to SnapChat and Instagram) for devices with slower cameras. - Automatic picture mode determination based on measured speed. ## Setup Add __CameraKit__ to the dependencies block in your `app` level `build.gradle`: ```groovy compile 'com.flurgle:camerakit:1.0.0' ``` ## Usage To use CameraKit, simply add a `CameraView` to your layout: ```xml ``` Make sure you override `onResume` and `onPause` in your activity, and make calls respectively to `CameraView.start()` and `CameraView.stop()`. ```java @Override protected void onResume() { super.onResume(); cameraView.start(); } @Override protected void onPause() { cameraView.stop(); super.onPause(); } ``` ### Extra Attributes ```xml ``` #### `ckCropOutput` | Value | Description | | --------------| -------------| | `true` | Crop the output image or video to only contain what can be seen on the `CameraView` preview. | | `false` | Output the full image or video regardless of what is visible on the `CameraView` preview. | #### `ckFacing` | Value | Description | | --------------| -------------| | `back` | Default `CameraView` preview to back camera. | | `front` | Default `CameraView` preview to front camera. | #### `ckFlash` | Value | Description | | --------------| -------------| | `off` | Default `CameraView` flash to off. | | `on` | Default `CameraView` flash to on. | | `auto` | Default `CameraView` flash to automatic. | #### `ckPictureMode` | Value | Description | | --------------| -------------| | `quality` | Use normal Android Camera API image capturing. | | `speed` | Freeze the `CameraView` preview and grab a `Bitmap` of the frame. | | `auto` | Default picture mode to `quality`, but fallback to `speed` if capturing is determined to be too slow. | ### Capturing images Capturing photos ### Capturing Video Capturing video ## Automatic Permissions Behavior Automatic permissions behavior ## Dynamic Sizing Behavior Dynamic sizing behavior ## Capture Mode Behavior Capture mode behavior ## Credits Dylan McIntyre ## License CameraKit-Android is [MIT licensed](https://github.com/wonderkiln/camerakit-android/blob/master/LICENSE).