Fixed landscape rotation issues

pull/1/head
Andrei Diaconu 8 years ago
parent 63fe1e6cbf
commit faa5075dbe
  1. 5
      camerakit/src/main/api16/com/flurgle/camerakit/Camera1.java
  2. 37
      camerakit/src/main/base/com/flurgle/camerakit/TextureViewPreview.java

@ -354,9 +354,10 @@ public class Camera1 extends CameraImpl {
}
private void adjustCameraParameters() {
boolean invertPreviewSizes = mDisplayOrientation%180 != 0;
mPreview.setTruePreviewSize(
getPreviewResolution().getWidth(),
getPreviewResolution().getHeight()
invertPreviewSizes? getPreviewResolution().getHeight() : getPreviewResolution().getWidth(),
invertPreviewSizes? getPreviewResolution().getWidth() : getPreviewResolution().getHeight()
);
mCameraParameters.setPreviewSize(

@ -2,7 +2,6 @@ package com.flurgle.camerakit;
import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Matrix;
import android.graphics.SurfaceTexture;
import android.view.Surface;
import android.view.TextureView;
@ -24,14 +23,12 @@ class TextureViewPreview extends PreviewImpl {
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
setSize(width, height);
configureTransform();
dispatchSurfaceChanged();
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
setSize(width, height);
configureTransform();
dispatchSurfaceChanged();
setTruePreviewSize(mTrueWidth, mTrueHeight);
}
@ -71,7 +68,6 @@ class TextureViewPreview extends PreviewImpl {
@Override
void setDisplayOrientation(int displayOrientation) {
mDisplayOrientation = displayOrientation;
configureTransform();
}
@Override
@ -98,37 +94,4 @@ class TextureViewPreview extends PreviewImpl {
}
}
void configureTransform() {
Matrix matrix = new Matrix();
if (mDisplayOrientation % 180 == 90) {
final int width = getWidth();
final int height = getHeight();
// Rotate the camera preview when the screen is landscape.
matrix.setPolyToPoly(
new float[]{
0.f, 0.f, // top left
width, 0.f, // top right
0.f, height, // bottom left
width, height, // bottom right
}, 0,
mDisplayOrientation == 90 ?
// Clockwise
new float[]{
0.f, height, // top left
0.f, 0.f, // top right
width, height, // bottom left
width, 0.f, // bottom right
} : // mDisplayOrientation == 270
// Counter-clockwise
new float[]{
width, 0.f, // top left
width, height, // top right
0.f, 0.f, // bottom left
0.f, height, // bottom right
}, 0,
4);
}
mTextureView.setTransform(matrix);
}
}

Loading…
Cancel
Save