Add PictureFormat definition

pull/691/head
Mattia Iavarone 6 years ago
parent d0063e30e6
commit 86298f8d30
  1. 10
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/CameraViewTest.java
  2. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/controls/ControlParser.java
  3. 53
      cameraview/src/main/java/com/otaliastudios/cameraview/controls/PictureFormat.java
  4. 5
      cameraview/src/main/res/values/attrs.xml

@ -20,6 +20,7 @@ import com.otaliastudios.cameraview.controls.ControlParser;
import com.otaliastudios.cameraview.controls.Engine;
import com.otaliastudios.cameraview.controls.Facing;
import com.otaliastudios.cameraview.controls.Flash;
import com.otaliastudios.cameraview.controls.PictureFormat;
import com.otaliastudios.cameraview.controls.Preview;
import com.otaliastudios.cameraview.engine.CameraEngine;
import com.otaliastudios.cameraview.filter.Filter;
@ -161,6 +162,7 @@ public class CameraViewTest extends BaseTest {
assertEquals(cameraView.getHdr(), controls.getHdr());
assertEquals(cameraView.getAudio(), controls.getAudio());
assertEquals(cameraView.getVideoCodec(), controls.getVideoCodec());
assertEquals(cameraView.getPictureFormat(), controls.getPictureFormat());
//noinspection SimplifiableJUnitAssertion
assertEquals(cameraView.getLocation(), null);
assertEquals(cameraView.getExposureCorrection(), 0f, 0f);
@ -745,6 +747,14 @@ public class CameraViewTest extends BaseTest {
assertEquals(cameraView.get(VideoCodec.class), VideoCodec.H_264);
}
@Test
public void testPictureFormat() {
cameraView.set(PictureFormat.JPEG);
assertEquals(cameraView.get(PictureFormat.class), PictureFormat.JPEG);
cameraView.set(PictureFormat.DNG);
assertEquals(cameraView.get(PictureFormat.class), PictureFormat.DNG);
}
@Test
public void testPreviewStreamSizeSelector() {
SizeSelector source = SizeSelectors.minHeight(50);

@ -23,6 +23,7 @@ public class ControlParser {
private int audio;
private int videoCodec;
private int engine;
private int pictureFormat;
public ControlParser(@NonNull Context context, @NonNull TypedArray array) {
preview = array.getInteger(R.styleable.CameraView_cameraPreview, Preview.DEFAULT.value());
@ -38,6 +39,8 @@ public class ControlParser {
videoCodec = array.getInteger(R.styleable.CameraView_cameraVideoCodec,
VideoCodec.DEFAULT.value());
engine = array.getInteger(R.styleable.CameraView_cameraEngine, Engine.DEFAULT.value());
pictureFormat = array.getInteger(R.styleable.CameraView_cameraPictureFormat,
PictureFormat.DEFAULT.value());
}
@NonNull
@ -90,4 +93,9 @@ public class ControlParser {
public Engine getEngine() {
return Engine.fromValue(engine);
}
@NonNull
public PictureFormat getPictureFormat() {
return PictureFormat.fromValue(pictureFormat);
}
}

@ -0,0 +1,53 @@
package com.otaliastudios.cameraview.controls;
import androidx.annotation.NonNull;
import com.otaliastudios.cameraview.CameraOptions;
import com.otaliastudios.cameraview.CameraView;
import java.io.File;
/**
* Format of the picture results for pictures that are taken with {@link CameraView#takePicture()}.
* This does not apply to picture snapshots.
*
* @see CameraView#setPictureFormat(PictureFormat)
*/
public enum PictureFormat implements Control {
/**
* The picture result data will be a JPEG file.
*/
JPEG(0),
/**
* The picture result data will be a DNG file.
* This is only supported with the {@link Engine#CAMERA2} engine and only on
* specific devices. Please check {@link CameraOptions#getSupportedPictureFormats()}.
*/
DNG(1);
static final PictureFormat DEFAULT = JPEG;
private int value;
PictureFormat(int value) {
this.value = value;
}
int value() {
return value;
}
@NonNull
static PictureFormat fromValue(int value) {
PictureFormat[] list = PictureFormat.values();
for (PictureFormat action : list) {
if (action.value() == value) {
return action;
}
}
return DEFAULT;
}
}

@ -145,6 +145,11 @@
<attr name="cameraPictureMetering" format="boolean|reference"/>
<attr name="cameraPictureSnapshotMetering" format="boolean|reference"/>
<attr name="cameraPictureFormat" format="enum">
<enum name="jpeg" value="0" />
<enum name="dng" value="1" />
</attr>
<attr name="cameraExperimental" format="boolean" />
</declare-styleable>

Loading…
Cancel
Save