pull/696/head
Mattia Iavarone 6 years ago
parent e3a7f89216
commit bdb2f0ebe3
  1. 2
      .github/workflows/emulator_script.sh
  2. 17
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/CameraIntegrationTest.java
  3. 12
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/tools/Emulator.java
  4. 9
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/tools/RetryRule.java
  5. 7
      cameraview/src/main/java/com/otaliastudios/cameraview/CameraUtils.java
  6. 4
      cameraview/src/main/java/com/otaliastudios/cameraview/picture/Full2PictureRecorder.java

@ -1,4 +1,4 @@
#!/usr/bin/env bash
adb logcat -c
adb logcat CameraOrchestrator:I CameraEngine:I CameraView:I CameraCallbacks:I CameraIntegrationTest:I MediaEncoderEngine:I MediaEncoder:I AudioMediaEncoder:I VideoMediaEncoder:I TextureMediaEncoder:I VideoRecorder:I FullVideoRecorder:I SnapshotVideoRecorder:I MessageQueue:W WorkerHandler:I DeviceEncoders:I MPEG4Writer:I *:E -v color &
adb logcat CameraOrchestrator:I CameraEngine:I CameraView:I CameraCallbacks:I CameraIntegrationTest:I MediaEncoderEngine:I MediaEncoder:I AudioMediaEncoder:I VideoMediaEncoder:I TextureMediaEncoder:I VideoRecorder:I FullVideoRecorder:I SnapshotVideoRecorder:I CameraUtils:I MessageQueue:W WorkerHandler:I DeviceEncoders:I MPEG4Writer:I *:E -v color &
./gradlew cameraview:connectedCheck

@ -29,6 +29,7 @@ import com.otaliastudios.cameraview.engine.orchestrator.CameraState;
import com.otaliastudios.cameraview.frame.Frame;
import com.otaliastudios.cameraview.frame.FrameProcessor;
import com.otaliastudios.cameraview.size.SizeSelectors;
import com.otaliastudios.cameraview.tools.Emulator;
import com.otaliastudios.cameraview.tools.Op;
import com.otaliastudios.cameraview.internal.utils.WorkerHandler;
import com.otaliastudios.cameraview.overlay.Overlay;
@ -800,7 +801,7 @@ public abstract class CameraIntegrationTest<E extends CameraEngine> extends Base
@Retry(emulatorOnly = true)
public void testCapturePicture_size() {
// Decoding can fail for large bitmaps. set a small size.
camera.setPictureSize(SizeSelectors.smallest());
// camera.setPictureSize(SizeSelectors.smallest());
openSync(true);
Size size = camera.getPictureSize();
assertNotNull(size);
@ -817,8 +818,18 @@ public abstract class CameraIntegrationTest<E extends CameraEngine> extends Base
assertNotNull(bitmap);
String message = LOG.i("[PICTURE SIZE]", "Desired:", size, "Bitmap:",
new Size(bitmap.getWidth(), bitmap.getHeight()));
assertEquals(message, bitmap.getWidth(), size.getWidth());
assertEquals(message, bitmap.getHeight(), size.getHeight());
if (!Emulator.isEmulator()) {
assertEquals(message, bitmap.getWidth(), size.getWidth());
assertEquals(message, bitmap.getHeight(), size.getHeight());
} else {
// Emulator implementation sometimes does not rotate the image correctly.
assertTrue(message, bitmap.getWidth() == size.getWidth()
|| bitmap.getWidth() == size.getHeight());
assertTrue(message, bitmap.getHeight() == size.getWidth()
|| bitmap.getHeight() == size.getHeight());
assertEquals(message, size.getWidth() * size.getHeight(),
bitmap.getWidth() * bitmap.getHeight());
}
}
}

@ -0,0 +1,12 @@
package com.otaliastudios.cameraview.tools;
import android.os.Build;
public class Emulator {
public static boolean isEmulator() {
// From Android's RequiresDeviceFilter
return Build.HARDWARE.equals("goldfish")
|| Build.HARDWARE.equals("ranchu")
|| Build.HARDWARE.equals("gce_x86");
}
}

@ -27,7 +27,7 @@ public class RetryRule implements TestRule {
@Override
public void evaluate() throws Throwable {
Retry retry = description.getAnnotation(Retry.class);
if (retry == null || retry.emulatorOnly() && !isEmulator()) {
if (retry == null || retry.emulatorOnly() && !Emulator.isEmulator()) {
base.evaluate();
} else {
Throwable caught = null;
@ -49,11 +49,4 @@ public class RetryRule implements TestRule {
}
};
}
private boolean isEmulator() {
// From Android's RequiresDeviceFilter
return Build.HARDWARE.equals("goldfish")
|| Build.HARDWARE.equals("ranchu")
|| Build.HARDWARE.equals("gce_x86");
}
}

@ -33,6 +33,8 @@ import java.io.OutputStream;
@SuppressWarnings("unused")
public class CameraUtils {
private final static String TAG = CameraUtils.class.getSimpleName();
private final static CameraLogger LOG = CameraLogger.create(TAG);
/**
* Determines whether the device has valid camera sensors, so the library
@ -289,9 +291,9 @@ public class CameraUtils {
exifOrientation == ExifInterface.ORIENTATION_FLIP_VERTICAL ||
exifOrientation == ExifInterface.ORIENTATION_TRANSPOSE ||
exifOrientation == ExifInterface.ORIENTATION_TRANSVERSE;
LOG.i("decodeBitmap:", "got orientation from EXIF.", orientation);
} catch (IOException e) {
e.printStackTrace();
LOG.e("decodeBitmap:", "could not get orientation from EXIF.", e);
orientation = 0;
flip = false;
} finally {
@ -304,6 +306,7 @@ public class CameraUtils {
} else {
orientation = rotation;
flip = false;
LOG.i("decodeBitmap:", "got orientation from constructor.", orientation);
}
Bitmap bitmap;

@ -149,7 +149,9 @@ public class Full2PictureRecorder extends PictureRecorder
int exifOrientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_NORMAL);
mResult.rotation = ExifHelper.getOrientation(exifOrientation);
} catch (IOException ignore) { }
} catch (IOException ignore) {
// Should not happen
}
}
private void readRawImage(@NonNull Image image) {

Loading…
Cancel
Save