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() { private void adjustCameraParameters() {
boolean invertPreviewSizes = mDisplayOrientation%180 != 0;
mPreview.setTruePreviewSize( mPreview.setTruePreviewSize(
getPreviewResolution().getWidth(), invertPreviewSizes? getPreviewResolution().getHeight() : getPreviewResolution().getWidth(),
getPreviewResolution().getHeight() invertPreviewSizes? getPreviewResolution().getWidth() : getPreviewResolution().getHeight()
); );
mCameraParameters.setPreviewSize( mCameraParameters.setPreviewSize(

@ -2,7 +2,6 @@ package com.flurgle.camerakit;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.content.Context; import android.content.Context;
import android.graphics.Matrix;
import android.graphics.SurfaceTexture; import android.graphics.SurfaceTexture;
import android.view.Surface; import android.view.Surface;
import android.view.TextureView; import android.view.TextureView;
@ -24,14 +23,12 @@ class TextureViewPreview extends PreviewImpl {
@Override @Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
setSize(width, height); setSize(width, height);
configureTransform();
dispatchSurfaceChanged(); dispatchSurfaceChanged();
} }
@Override @Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
setSize(width, height); setSize(width, height);
configureTransform();
dispatchSurfaceChanged(); dispatchSurfaceChanged();
setTruePreviewSize(mTrueWidth, mTrueHeight); setTruePreviewSize(mTrueWidth, mTrueHeight);
} }
@ -71,7 +68,6 @@ class TextureViewPreview extends PreviewImpl {
@Override @Override
void setDisplayOrientation(int displayOrientation) { void setDisplayOrientation(int displayOrientation) {
mDisplayOrientation = displayOrientation; mDisplayOrientation = displayOrientation;
configureTransform();
} }
@Override @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