From 422c3ef551d4413ba81ef01cccead4416c3da23e Mon Sep 17 00:00:00 2001 From: emersoncloud Date: Thu, 3 Jan 2019 17:20:36 -0500 Subject: [PATCH 1/7] Update dependencies --- app/build.gradle | 2 +- camerakit/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index a3278dd1ac..73b6ec3a5c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,5 +18,5 @@ dependencies { implementation project(':camerakit') implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.0' implementation 'androidx.appcompat:appcompat:1.0.2' - implementation 'com.google.android.material:material:1.1.0-alpha01' + implementation 'com.google.android.material:material:1.1.0-alpha02' } diff --git a/camerakit/build.gradle b/camerakit/build.gradle index 2ea1c844d5..b37df37ee8 100644 --- a/camerakit/build.gradle +++ b/camerakit/build.gradle @@ -27,7 +27,7 @@ android { dependencies { api 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.0.0' - api 'androidx.annotation:annotation:1.0.0' + api 'androidx.annotation:annotation:1.0.1' api 'com.camerakit:jpegkit:0.2.0-alpha1' testImplementation 'junit:junit:4.12' testImplementation 'org.mockito:mockito-core:1.10.19' From c723e984aaff6423b4e7dbf0eb2746ba577908f5 Mon Sep 17 00:00:00 2001 From: emersoncloud Date: Thu, 3 Jan 2019 17:21:45 -0500 Subject: [PATCH 2/7] Resume CameraPreview when Lifecycle is started or resumed --- camerakit/src/main/java/com/camerakit/CameraPreview.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/camerakit/src/main/java/com/camerakit/CameraPreview.kt b/camerakit/src/main/java/com/camerakit/CameraPreview.kt index 39fa856bac..b91d026718 100644 --- a/camerakit/src/main/java/com/camerakit/CameraPreview.kt +++ b/camerakit/src/main/java/com/camerakit/CameraPreview.kt @@ -101,7 +101,7 @@ class CameraPreview : FrameLayout, CameraEvents { override fun onSurfaceReady(cameraSurfaceTexture: CameraSurfaceTexture) { surfaceTexture = cameraSurfaceTexture surfaceState = SurfaceState.SURFACE_AVAILABLE - if (lifecycleState == LifecycleState.RESUMED) { + if (lifecycleState == LifecycleState.STARTED || lifecycleState == LifecycleState.RESUMED) { resume() } } From fae88150005b85c549002d0326f703b43ac7befc Mon Sep 17 00:00:00 2001 From: emersoncloud Date: Fri, 4 Jan 2019 01:36:17 -0500 Subject: [PATCH 3/7] Add methods to check device flash support --- .../main/java/com/camerakit/CameraKitView.java | 16 ++++++++++++++++ .../src/main/java/com/camerakit/CameraPreview.kt | 11 +++++++++++ 2 files changed, 27 insertions(+) diff --git a/camerakit/src/main/java/com/camerakit/CameraKitView.java b/camerakit/src/main/java/com/camerakit/CameraKitView.java index b50706018d..4c7cfc78db 100644 --- a/camerakit/src/main/java/com/camerakit/CameraKitView.java +++ b/camerakit/src/main/java/com/camerakit/CameraKitView.java @@ -721,6 +721,22 @@ public void setFlash(@CameraKit.Flash int flash) { mCameraPreview.setFlash(cameraFlash); } + /** + * Determine if device is capable of flash + * @return boolean if device is capable of flash + */ + public boolean hasFlash() { + return mCameraPreview.hasFlash(); + } + + /** + * Get supported flash types on device + * @return array of supported flash types + */ + public CameraFlash[] getSupportedFlashTypes() { + return mCameraPreview.getSupportedFlashTypes(); + } + /** * @return one of {@link CameraKit.Flash}'s constants. * @see #setFlash(int) diff --git a/camerakit/src/main/java/com/camerakit/CameraPreview.kt b/camerakit/src/main/java/com/camerakit/CameraPreview.kt index b91d026718..3021e1716a 100644 --- a/camerakit/src/main/java/com/camerakit/CameraPreview.kt +++ b/camerakit/src/main/java/com/camerakit/CameraPreview.kt @@ -168,6 +168,17 @@ class CameraPreview : FrameLayout, CameraEvents { } } + fun hasFlash(): Boolean { + if (attributes?.flashes != null) { + return true + } + return false + } + + fun getSupportedFlashTypes(): Array? { + return attributes?.flashes + } + interface PhotoCallback { fun onCapture(jpeg: ByteArray) } From 58aa6df335d32e30d8827fac7400518e6752be20 Mon Sep 17 00:00:00 2001 From: emersoncloud Date: Fri, 4 Jan 2019 14:57:32 -0500 Subject: [PATCH 4/7] Update README with CameraKit version descriptions --- .repo/gh-join-spectrum.svg | 1 + .repo/gh-readme-alphaapps-logo.png | Bin 0 -> 31813 bytes ...orks.png => gh-readme-buddyworks-logo.png} | Bin .repo/gh-readme-expensify-logo.svg | 1 + .repo/gh-readme-expensify.png | Bin 13762 -> 0 bytes .repo/gh-readme-googleplay-demo-button.svg | 1 + .repo/gh-readme-goosechase-logo.svg | 1 + .repo/gh-readme-infitting-logo.svg | 1 + .repo/gh-readme-spectrum-button.svg | 1 + README.md | 133 +++++++++++++----- 10 files changed, 100 insertions(+), 39 deletions(-) create mode 100644 .repo/gh-join-spectrum.svg create mode 100644 .repo/gh-readme-alphaapps-logo.png rename .repo/{gh-readme-buddyworks.png => gh-readme-buddyworks-logo.png} (100%) create mode 100644 .repo/gh-readme-expensify-logo.svg delete mode 100644 .repo/gh-readme-expensify.png create mode 100644 .repo/gh-readme-googleplay-demo-button.svg create mode 100644 .repo/gh-readme-goosechase-logo.svg create mode 100644 .repo/gh-readme-infitting-logo.svg create mode 100644 .repo/gh-readme-spectrum-button.svg diff --git a/.repo/gh-join-spectrum.svg b/.repo/gh-join-spectrum.svg new file mode 100644 index 0000000000..97518944ca --- /dev/null +++ b/.repo/gh-join-spectrum.svg @@ -0,0 +1 @@ +Join Spectrum \ No newline at end of file diff --git a/.repo/gh-readme-alphaapps-logo.png b/.repo/gh-readme-alphaapps-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e1b08ca9b982c5ecc5dcee7d4665e7abdb0cc3af GIT binary patch literal 31813 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 c{wHWW#`5 \ No newline at end of file diff --git a/.repo/gh-readme-expensify.png b/.repo/gh-readme-expensify.png deleted file mode 100644 index 8f459bde5db57c43211ede6b367aecfd3298dc27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13762 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 diff --git a/.repo/gh-readme-googleplay-demo-button.svg b/.repo/gh-readme-googleplay-demo-button.svg new file mode 100644 index 0000000000..ca72d7e747 --- /dev/null +++ b/.repo/gh-readme-googleplay-demo-button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.repo/gh-readme-goosechase-logo.svg b/.repo/gh-readme-goosechase-logo.svg new file mode 100644 index 0000000000..55638fe90f --- /dev/null +++ b/.repo/gh-readme-goosechase-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.repo/gh-readme-infitting-logo.svg b/.repo/gh-readme-infitting-logo.svg new file mode 100644 index 0000000000..278162e32e --- /dev/null +++ b/.repo/gh-readme-infitting-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.repo/gh-readme-spectrum-button.svg b/.repo/gh-readme-spectrum-button.svg new file mode 100644 index 0000000000..2a6d277682 --- /dev/null +++ b/.repo/gh-readme-spectrum-button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/README.md b/README.md index db57474878..d81c897288 100644 --- a/README.md +++ b/README.md @@ -1,88 +1,143 @@

- + CameraKit Header

- - CameraKit Header + + Google Play Link + + + Join Spectrum - Buddy.Works + Buddy.Works

-

- Join Slack - Code Climate - Code Climate -

- -# What is CameraKit? - -CameraKit takes one of the hardest Android APIs and makes it into a high level and easy to use library that solves all of your problems. +CameraKit helps you add reliable camera to your app quickly. Our open source camera platform provides consistent capture results, service that scales, and endless camera possibilities. -With CameraKit you are able to effortlessly do the following... +With CameraKit you are able to effortlessly do the following: - 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. + - Create a `CameraView` of any size (not just presets!). + - Automatic output cropping to match your `CameraView` bounds. - Multiple capture methods. - - METHOD_STANDARD: an image captured normally using the camera APIs. - - METHOD_STILL: a freeze frame of the CameraView preview (similar to SnapChat and Instagram) for devices with slower cameras. - - METHOD_SPEED: automatic capture method determination based on measured speed. + - `METHOD_STANDARD`: an image captured normally using the camera APIs. + - `METHOD_STILL`: a freeze frame of the `CameraView` preview (similar to SnapChat and Instagram) for devices with slower cameras. + - `METHOD_SPEED`: automatic capture method determination based on measured speed. - Built-in continuous focus. - Built-in tap to focus. - Built-in pinch to zoom. ## Sponsored By +Expensify +Buddy.Works - - -## Setup +## Trusted By +InFitting +GooseChase +Alpha Apps +Expensify -Add __CameraKit__ to the dependencies block in your `app` level `build.gradle`: -```groovy -implementation 'com.camerakit:camerakit:1.0.0-beta3.9' -``` +# Get The Most From CameraKit +There are currently two versions of CameraKit that we support, `v1.0.0-beta3.X` and `v0.13.X`. + +If photo is your only need, try out the latest and greatest CameraKit features with `v1.0.0-beta3.11`. Our `beta3.11` release does not yet support video, but that feature is coming! + +In the meantime, if your application requires video we reccomend sticking with `v0.13.4`; the latest stable release with video implementation. -## Usage -To use CameraKit, simply add a `CameraKitView` to your layout: +| Use Case | Version | Notes | Documentation Link | +| --- | --- | --- | --- | +| Photo only | `v1.0.0-beta3.11` | The latest and greatest CameraKit has to offer. Video support coming soon! | [camerakit.io/docs/beta3.11](https://camerakit.io/docs?v=1.0.0-beta3.10) | +| Photo and Video | `v0.13.4` | Stable build with full photo and video support | [camerakit.io/docs/0.13.4](https://camerakit.io/docs?v=0.13.2) | -```xml + +## Documentation Site +Setup instructions for `1.0.0-beta3.11` are below. To see the full documentation head over to our website, [camerakit.io/docs](https://camerakit.io/docs). + + +## Setup +To include __CameraKit__ in your project, add the following to your `app` level `build.gradle`. +```java +dependencies { + implementation 'com.camerakit:camerakit:1.0.0-beta3.11' + implementation 'com.camerakit:jpegkit:0.1.0' + implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.0.0' +} +``` +## Usage +Create a `CameraKitView` in your layout as follows: +``` + android:layout_height="wrap_content" + android:adjustViewBounds="true" + android:keepScreenOn="true" + app:camera_flash="auto" + app:camera_facing="back" + app:camera_focus="continuous" + app:camera_permissions="camera" /> ``` -Make sure you override `onResume` and `onPause` in your activity, and make pass-through calls CameraKit with `CameraKitView.onResume()` and `CameraKitView.onPause()`. - +Then create a new `CameraKitView` object in your `Activity` and override the following methods. ```java +private CameraKitView cameraKitView; + +@Override +protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + cameraKitView = findViewById(R.id.camera); +} + +@Override +protected void onStart() { + super.onStart(); + cameraKitView.onStart(); +} + @Override protected void onResume() { super.onResume(); - cameraView.onResume(); + cameraKitView.onResume(); } @Override protected void onPause() { - cameraView.onPause(); + cameraKitView.onPause(); super.onPause(); } -``` -## Detailed Documentation +@Override +protected void onStop() { + cameraKitView.onStop(); + super.onStop(); +} -To check out detailed docs, visit our [Documentation Website](https://docs.camerakit.website) +@Override +public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + cameraKitView.onRequestPermissionsResult(requestCode, permissions, grantResults); +} +``` +## ProGuard +If using ProGuard, add the following rules: +``` +-dontwarn com.google.android.gms.** +-keepclasseswithmembers class com.camerakit.preview.CameraSurfaceView { + native ; +} +``` ## License - -CameraKit is [MIT License](https://github.com/CameraKit/CameraKit-Android/blob/master/LICENSE) \ No newline at end of file +CameraKit is [MIT License](https://github.com/CameraKit/CameraKit-Android/blob/master/LICENSE) From 35fbf2dd17c8a0e8b9c1056252d0622213fa4940 Mon Sep 17 00:00:00 2001 From: emersoncloud Date: Fri, 4 Jan 2019 19:17:33 -0500 Subject: [PATCH 5/7] Add space in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d81c897288..5948f5ef43 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ With CameraKit you are able to effortlessly do the following: Alpha Apps Expensify - +  # Get The Most From CameraKit There are currently two versions of CameraKit that we support, `v1.0.0-beta3.X` and `v0.13.X`. From e2b861fcfd307e84951dd4f5cefb87018a828411 Mon Sep 17 00:00:00 2001 From: emersoncloud Date: Tue, 22 Jan 2019 16:10:04 -0500 Subject: [PATCH 6/7] Prevent errors on API level 16 and 17 --- .../src/main/java/com/camerakit/preview/CameraSurfaceView.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/camerakit/src/main/java/com/camerakit/preview/CameraSurfaceView.kt b/camerakit/src/main/java/com/camerakit/preview/CameraSurfaceView.kt index 8aea355e2e..ace91c76cd 100644 --- a/camerakit/src/main/java/com/camerakit/preview/CameraSurfaceView.kt +++ b/camerakit/src/main/java/com/camerakit/preview/CameraSurfaceView.kt @@ -3,6 +3,7 @@ package com.camerakit.preview import android.content.Context import android.opengl.GLES20.glGenTextures import android.opengl.GLSurfaceView +import android.os.Build import androidx.annotation.Keep import android.util.AttributeSet import javax.microedition.khronos.egl.EGLConfig @@ -106,6 +107,9 @@ class CameraSurfaceView : GLSurfaceView, GLSurfaceView.Renderer { companion object { init { + if (Build.VERSION.SDK_INT <= 17) { + System.loadLibrary("camerakit-core") + } System.loadLibrary("camerakit") } From f519db3792987af675aa91a3001635312af5b707 Mon Sep 17 00:00:00 2001 From: emersoncloud Date: Tue, 22 Jan 2019 16:25:28 -0500 Subject: [PATCH 7/7] Increment version to 1.0.0-beta3.11 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index b057f0c16b..ab0e48047a 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,7 @@ buildscript { subprojects { project -> group = 'com.camerakit' - version = '1.0.0-beta3.10' + version = '1.0.0-beta3.11' repositories { google()