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.
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
- Multiple capture methods.
METHOD_STANDARD
: an image captured normally using the camera APIs.METHOD_STILL
: a freeze frame of theCameraView
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.
CameraKit has been going through major changes in the past few months. We've slowed support on verison 0.13.2
and moved our focus to 1.0.0
. This release will bring improved stability, faster processing and a standard API for future development of CameraKit. The lastest version is currently in beta, 1.0.0-beta3.9
.
The code lives on the branch v1.0.0
. You can read the discussion about 1.0.0
on the pull request #318. If you have a question or want to talk directly with the team, leave us a message on spectrum.chat.
With the official 1.0.0
release we will launch an all new documentation site. In the meantime check out the setup instructions for 1.0.0-beta3.9
below!
To include CameraKit in your project, add the following to your app
level build.gradle
.
dependencies {
implementation 'com.camerakit:camerakit:1.0.0-beta3.9'
implementation 'com.camerakit:jpegkit:0.1.0'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.61'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:0.24.0'
}
Create a CameraKitView
in your layout as follows:
<com.camerakit.CameraKitView
android:id="@+id/camera"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:keepScreenOn="true" <!-- keep screen awake while CameraKitView is active -->
app:camera_flash="auto"
app:camera_facing="back"
app:camera_focus="continuous"
app:camera_permissions="camera" />
Then create a new CameraKitView
object in your Activity
and override the following methods.
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();
cameraKitView.onResume();
}
@Override
protected void onPause() {
cameraKitView.onPause();
super.onPause();
}
@Override
protected void onStop() {
cameraKitView.onStop();
super.onStop();
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
cameraKitView.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
If using ProGaurd, add the following rules:
-dontwarn com.google.android.gms.**
-keepclasseswithmembers class com.camerakit.preview.CameraSurfaceView {
native <methods>;
}
CameraKit is MIT License