In CameraKit v1.0.0-beta3.11 we've added two new methods to determine device flash support.
Returns true if device is capable of flash.
boolean flashSupport = cameraKitView.hasFlash();
Returns the supported flash types.
CameraFlash[] cameraFlashes = cameraKitView.getSupportedFlashTypes();
Add CameraKit and Kotlin to the dependencies section of your build.gradle.
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'
}
CameraKit relies on a CameraKitView in the XML layout.
<com.camerakit.CameraKitView
android:id="@+id/camera"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"/>
Initialize the CameraKitView in the Java activity. v1.0.0-beta3.11 requires five methods to be overloaded; four handling state, and one handling permissions.
public class MainActivity extends AppCompatActivity {
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);
}
}
The CameraKitView will exist in your activity and display the output of the Camera Preview. See all options in the Attributes section.
Capturing images is done through the cameraKitView.captureImage callback
cameraKitView.captureImage(new CameraKitView.ImageCallback() {
@Override
public void onImage(CameraKitView cameraKitView, final byte[] capturedImage) {
// capturedImage contains the image from the CameraKitView.
}
})
// From button OnClickListener
private View.OnClickListener photoOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
cameraKitView.captureImage(new CameraKitView.ImageCallback() {
@Override
public void onImage(CameraKitView cameraKitView, final byte[] capturedImage) {
File savedPhoto = new File(Environment.getExternalStorageDirectory(), "photo.jpg");
try {
FileOutputStream outputStream = new FileOutputStream(savedPhoto.getPath());
outputStream.write(capturedImage);
outputStream.close();
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
});
}
};
Format | Method |
---|---|
XML | app:camera_facing="back" |
Java | cameraKitView.setFacing(CameraKit.FACING_BACK) |
Possible values:
Format | Method |
---|---|
XML | none |
Java | cameraKitView.toggleFacing() |
Format | Method |
---|---|
XML | app:camera_flash="off" |
Java | cameraKitView.setFlash(CameraKit.FLASH_OFF) |
Possible values:
Returns: boolean true if device has flash, false if not.
Returns: CameraFlashes[ ] array of supported flash types.
Format | Method |
---|---|
XML | app:camera_focus="auto" |
Java | cameraKitView.setFocus(CameraKit.FOCUS_AUTO) |
Possible values:
Format | Method |
---|---|
XML | app:camera_zoomFactor="1" |
Java | cameraKitView.setZoomFactor(1.0f) |
Possible values:
Format | Method |
---|---|
XML | app:camera_aspectRatio="1" |
Java | cameraKitView.setAspectRatio(1f) |
Possible values:
Format | Method |
---|---|
XML | app:camera_imageMegaPixels="2" |
Java | cameraKitView.setImageMegaPixels(2f) |
Possible values:
Format | Method |
---|---|
XML | app:camera_imageJpegQuality="100" |
Java | none |
Possible values:
Format | Method |
---|---|
XML | none |
Java | cameraKitView.setSensorPreset(CameraKit.SENSOR_PRESET_NONE) |
Possible values:
Format | Method |
---|---|
XML | none |
Java | cameraKitView.setPreviewEffect(CameraKit.PREVIEW_EFFECT_NONE) |
Possible values:
setAdjustViewBounds(Boolean adjustViewBounds)
Parameter: boolean
Format | Method |
---|---|
XML | app:permissions="camera" |
Java | cameraKitView.setPermissions() |
Possible values:
cameraKitView.requestPermissions(Activity)
Parameter: Activity
cameraKitView.onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
cameraKitView.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
cameraKitView.setGestureListener(new CameraKitView.GestureListener() {
@Override
public void onTap(CameraKitView cameraKitView, float v, float v1) {
}
@Override
public void onLongTap(CameraKitView cameraKitView, float v, float v1) {
}
@Override
public void onDoubleTap(CameraKitView cameraKitView, float v, float v1) {
}
@Override
public void onPinch(CameraKitView cameraKitView, float v, float v1, float v2) {
}
});
cameraKitView.setCameraListener(new CameraKitView.CameraListener() {
@Override
public void onOpened() {
}
@Override
public void onClosed() {
}
});
cameraKitView.setPreviewListener(new CameraKitView.PreviewListener() {
@Override
public void onStart() {
}
@Override
public void onStop() {
}
});
cameraKitView.setErrorListener(new CameraKitView.ErrorListener() {
@Override
public void onError(CameraKitView cameraKitView, CameraKitView.CameraException e) {
}
});
In beta3.11 setting onConfigurationChanged to watch for screen size changes in AndroidManifest.xml will produce unexpected output when rotating the device on Android version 7.0 or higher.
If you encounter issues with rotation, first ensure the following line is NOT in your AndroidManifest.xml.
<activity>
android:configChanges="orientation|screenLayout"
</activity>