Adjust camera preview area to square

1.Choose the smaller size of both dimensions as its size.
2.Set transform matrix to crop and center the preview picture.

Bug: 118797380
Test: make RunSettingsRoboTests
Change-Id: Ic65fb1fe0c5082995d6903f50dda48eec16c3fb1
This commit is contained in:
Johnson Lu
2018-12-15 11:50:46 +08:00
parent c748b6eeef
commit ebbb0bc563
7 changed files with 155 additions and 70 deletions

View File

@@ -22,9 +22,11 @@ import static org.mockito.Mockito.mock;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.graphics.SurfaceTexture;
import android.util.Size;
import android.view.SurfaceHolder;
import com.android.settings.R;
@@ -48,7 +50,7 @@ import org.robolectric.RuntimeEnvironment;
public class QrCameraTest {
@Mock
private SurfaceHolder mSurfaceHolder;
private SurfaceTexture mSurfaceTexture;
private QrCamera mCamera;
private Context mContext;
@@ -78,6 +80,11 @@ public class QrCameraTest {
mCameraCallbacked = true;
mCallbackSignal.countDown();
}
@Override
public void setTransform(Matrix transform) {
// Do nothing
}
}
private ScannerTestCallback mScannerCallback;
@@ -87,7 +94,7 @@ public class QrCameraTest {
mContext = RuntimeEnvironment.application;
mScannerCallback = new ScannerTestCallback();
mCamera = new QrCamera(mContext, mScannerCallback);
mSurfaceHolder = mock(SurfaceHolder.class);
mSurfaceTexture = mock(SurfaceTexture.class);
mQrCode = "";
mCameraCallbacked = false;
mCallbackSignal = null;
@@ -96,7 +103,7 @@ public class QrCameraTest {
@Test
public void testCamera_Init_Callback() throws InterruptedException {
mCallbackSignal = new CountDownLatch(1);
mCamera.start(mSurfaceHolder);
mCamera.start(mSurfaceTexture);
mCallbackSignal.await(5000, TimeUnit.MILLISECONDS);
assertThat(mCameraCallbacked).isTrue();
}