2016-04-13 11:56:29 +00:00
# react-native-camera-kit
2016-04-17 12:46:49 +00:00
2016-07-14 14:18:58 +00:00
Native camera control.
2016-04-17 12:46:20 +00:00
2016-08-01 13:05:55 +00:00
![](img/crazyUnicorn.png) ![](img/zoom.png)
2016-04-18 09:40:16 +00:00
## Install
2016-07-14 14:18:58 +00:00
#### Install using npm:
`npm install react-native-camera-kit --save`
2016-04-18 09:40:16 +00:00
2016-07-26 14:21:51 +00:00
####IOS
2016-07-14 14:18:58 +00:00
- Locate the module lib folder in your node modules: `PROJECT_DIR/node_modules/react-native-camera-kit/lib`
- Drag the `ReactNativeCameraKit.xcodeproj` project file into your project
- Add `libReactNativeCameraKit.a` to all your target **Linked Frameworks and Libraries** (prone to be forgotten)
2016-04-18 09:40:16 +00:00
2016-07-26 14:21:51 +00:00
####Android
Add
include ':rncamerakit'
project(':rncamerakit').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-camera-kit/android/')
to your project's `settings.gradle`
Then add
compile project(":rncamerakit")
to your app `app/build.gradle` in the `dependencies` section.
Then in `MainActivity.java` add:
import com.wix.RNCameraKit.RNCameraKitPackage;
and in `getPackages` add
new RNCameraKitPackage()
to the list
2016-08-01 13:05:55 +00:00
## How to use
2016-04-18 09:40:16 +00:00
2016-08-01 13:05:55 +00:00
###CameraKitCamera inside the `render` function
2016-07-14 14:18:58 +00:00
```javascript
< CameraKitCamera
2016-08-01 13:05:55 +00:00
ref={(cam) => {
this.camera = cam;
}
}
style={{flex: 1, backgroundColor:'white'}}
cameraOptions={{
2016-09-22 13:48:56 +00:00
flashMode: 'auto', // on/off/auto(default)
focusMode: 'on', // off/on(default)
zoomMode: 'on', // off/on(default)
ratioOverlay:'1:1', // optional, ratio overlay on the camera and crop the image seamlessly
2016-08-01 13:05:55 +00:00
ratioOverlayColor: '#00000077' // optional
}}
/>
```
###CameraKitCamera cameraOptions
Attribute | type | values | description
-------- | ----- | ------ | ------------
flashMode | [String] | `'on'` /`'off'`/`'auto'` | camera flash mode (default is `auto` )
focusMode | [String] | `'on'` /`'off'` | camera focus mode (default is `on` )
zoomMode | [String] | `'on'` /`'off'`/ | camera zoom mode
ratioOverlay | [Array] | `'number':'number'` | overlay ontop of the camera view (crop the image to the selected size) Example: `['16:9', '1:1', '3:4']`
ratioOverlayColor | [Color] | `'#ffffff77'` | any color with alpha (default is ```'#ffffff77'```)
###CameraKitCamera API
####checkDeviceCameraAuthorizationStatus
```javascript
const isCameraAuthorized = await CameraKitCamera.checkDeviceCameraAuthorizationStatus();
```
return values:
2016-07-14 14:18:58 +00:00
2016-08-01 13:05:55 +00:00
`AVAuthorizationStatusAuthorized` returns `true`
`AVAuthorizationStatusNotDetermined` returns `-1`
otherwise, returns ```false```
####requestDeviceCameraAuthorization
```javascript
const isUserAuthorizedCamera = await CameraKitCamera.requestDeviceCameraAuthorization();
2016-07-14 14:18:58 +00:00
```
2016-08-01 13:05:55 +00:00
`AVAuthorizationStatusAuthorized` returns `true`
otherwise, returns `false`
2016-07-14 14:18:58 +00:00
####capture
Capture image
```javascript
const image = await this.camera.capture(true);
```
####setFlashMode
2016-09-19 08:40:44 +00:00
Set flash mode (`auto`/`on`/`off`)
2016-07-14 14:18:58 +00:00
```javascript
const success = await this.camera.setFlashMode(newFlashData.mode);
```
####changeCamera
Change to fornt/rear camera
```javascript
const success = await this.camera.changeCamera();
```
###CameraKitGalleryView
2016-04-18 09:40:16 +00:00
2016-08-01 13:05:55 +00:00
Native Gallery View (based on `UICollectionView` )
2016-08-08 08:22:22 +00:00
2016-08-08 08:22:03 +00:00
README in progress :)
2016-08-01 13:05:55 +00:00
2016-04-18 09:40:16 +00:00
```javascript
2016-07-14 14:18:58 +00:00
< CameraKitGalleryView
ref={(gallery) => {
2016-08-01 13:05:55 +00:00
this.gallery = gallery;
}}
2016-07-14 14:18:58 +00:00
style={{flex: 1, marginTop: 20}}
minimumInteritemSpacing={10}
minimumLineSpacing={10}
albumName={< ALBUM_NAME > }
columnCount={3}
2016-08-01 13:05:55 +00:00
onTapImage={(event) => {
2016-07-14 14:18:58 +00:00
//result.nativeEvent.selected - ALL selected images Photos Framework ids
2016-08-01 13:05:55 +00:00
}}
selectedImages={< MAINTAIN_SELECETED_IMAGES > }
selectedImageIcon={require('< IMAGE_FILE_PATH > '))}
unSelectedImageIcon={require('< IMAGE_FILE_PATH > ')}
/>
2016-04-18 09:40:16 +00:00
```