Merge "[CameraViewfinder] Add new public constructor for ViewfinderSurfaceRequest." into androidx-main
diff --git a/camera/camera-viewfinder/api/1.1.0-beta03.txt b/camera/camera-viewfinder/api/1.1.0-beta03.txt
deleted file mode 100644
index e6f50d0..0000000
--- a/camera/camera-viewfinder/api/1.1.0-beta03.txt
+++ /dev/null
@@ -1 +0,0 @@
-// Signature format: 4.0
diff --git a/camera/camera-viewfinder/api/1.1.0-beta04.txt b/camera/camera-viewfinder/api/1.1.0-beta04.txt
deleted file mode 100644
index e6f50d0..0000000
--- a/camera/camera-viewfinder/api/1.1.0-beta04.txt
+++ /dev/null
@@ -1 +0,0 @@
-// Signature format: 4.0
diff --git a/camera/camera-viewfinder/api/1.2.0-beta01.txt b/camera/camera-viewfinder/api/1.2.0-beta01.txt
deleted file mode 100644
index d452929..0000000
--- a/camera/camera-viewfinder/api/1.2.0-beta01.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-// Signature format: 4.0
-package androidx.camera.viewfinder {
-
- @RequiresApi(21) public final class CameraViewfinder extends android.widget.FrameLayout {
- ctor @UiThread public CameraViewfinder(android.content.Context);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int, int);
- method @UiThread public android.graphics.Bitmap? getBitmap();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode getImplementationMode();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ScaleType getScaleType();
- method @UiThread public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
- method @UiThread public void setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
- method @UiThread public void setScaleType(androidx.camera.viewfinder.CameraViewfinder.ScaleType);
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ImplementationMode {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode COMPATIBLE;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode PERFORMANCE;
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ScaleType {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_START;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_START;
- }
-
- @RequiresApi(21) public class ViewfinderSurfaceRequest {
- ctor public ViewfinderSurfaceRequest(android.util.Size, android.hardware.camera2.CameraCharacteristics);
- method public android.util.Size getResolution();
- method public int getSensorOrientation();
- method public boolean isFrontCamera();
- method public boolean isLegacyDevice();
- method public void markSurfaceSafeToRelease();
- }
-
-}
-
diff --git a/camera/camera-viewfinder/api/1.2.0-beta02.txt b/camera/camera-viewfinder/api/1.2.0-beta02.txt
deleted file mode 100644
index d452929..0000000
--- a/camera/camera-viewfinder/api/1.2.0-beta02.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-// Signature format: 4.0
-package androidx.camera.viewfinder {
-
- @RequiresApi(21) public final class CameraViewfinder extends android.widget.FrameLayout {
- ctor @UiThread public CameraViewfinder(android.content.Context);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int, int);
- method @UiThread public android.graphics.Bitmap? getBitmap();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode getImplementationMode();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ScaleType getScaleType();
- method @UiThread public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
- method @UiThread public void setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
- method @UiThread public void setScaleType(androidx.camera.viewfinder.CameraViewfinder.ScaleType);
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ImplementationMode {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode COMPATIBLE;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode PERFORMANCE;
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ScaleType {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_START;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_START;
- }
-
- @RequiresApi(21) public class ViewfinderSurfaceRequest {
- ctor public ViewfinderSurfaceRequest(android.util.Size, android.hardware.camera2.CameraCharacteristics);
- method public android.util.Size getResolution();
- method public int getSensorOrientation();
- method public boolean isFrontCamera();
- method public boolean isLegacyDevice();
- method public void markSurfaceSafeToRelease();
- }
-
-}
-
diff --git a/camera/camera-viewfinder/api/1.2.0-beta03.txt b/camera/camera-viewfinder/api/1.2.0-beta03.txt
index d452929..04cecbd 100644
--- a/camera/camera-viewfinder/api/1.2.0-beta03.txt
+++ b/camera/camera-viewfinder/api/1.2.0-beta03.txt
@@ -1,41 +1,2 @@
// Signature format: 4.0
-package androidx.camera.viewfinder {
-
- @RequiresApi(21) public final class CameraViewfinder extends android.widget.FrameLayout {
- ctor @UiThread public CameraViewfinder(android.content.Context);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int, int);
- method @UiThread public android.graphics.Bitmap? getBitmap();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode getImplementationMode();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ScaleType getScaleType();
- method @UiThread public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
- method @UiThread public void setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
- method @UiThread public void setScaleType(androidx.camera.viewfinder.CameraViewfinder.ScaleType);
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ImplementationMode {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode COMPATIBLE;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode PERFORMANCE;
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ScaleType {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_START;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_START;
- }
-
- @RequiresApi(21) public class ViewfinderSurfaceRequest {
- ctor public ViewfinderSurfaceRequest(android.util.Size, android.hardware.camera2.CameraCharacteristics);
- method public android.util.Size getResolution();
- method public int getSensorOrientation();
- method public boolean isFrontCamera();
- method public boolean isLegacyDevice();
- method public void markSurfaceSafeToRelease();
- }
-
-}
diff --git a/camera/camera-viewfinder/api/current.txt b/camera/camera-viewfinder/api/current.txt
index d452929..0023b9c 100644
--- a/camera/camera-viewfinder/api/current.txt
+++ b/camera/camera-viewfinder/api/current.txt
@@ -10,7 +10,6 @@
method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode getImplementationMode();
method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ScaleType getScaleType();
method @UiThread public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
- method @UiThread public void setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
method @UiThread public void setScaleType(androidx.camera.viewfinder.CameraViewfinder.ScaleType);
}
@@ -29,13 +28,24 @@
}
@RequiresApi(21) public class ViewfinderSurfaceRequest {
- ctor public ViewfinderSurfaceRequest(android.util.Size, android.hardware.camera2.CameraCharacteristics);
+ method public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode? getImplementationMode();
+ method public int getLensFacing();
method public android.util.Size getResolution();
method public int getSensorOrientation();
- method public boolean isFrontCamera();
- method public boolean isLegacyDevice();
method public void markSurfaceSafeToRelease();
}
+ public static final class ViewfinderSurfaceRequest.Builder {
+ ctor public ViewfinderSurfaceRequest.Builder(android.util.Size);
+ method public androidx.camera.viewfinder.ViewfinderSurfaceRequest build();
+ method public androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
+ method public androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder setLensFacing(int);
+ method public androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder setSensorOrientation(int);
+ }
+
+ public final class ViewfinderSurfaceRequestUtil {
+ method @RequiresApi(21) public static androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder populateFromCharacteristics(androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder, android.hardware.camera2.CameraCharacteristics cameraCharacteristics);
+ }
+
}
diff --git a/camera/camera-viewfinder/api/public_plus_experimental_1.1.0-beta03.txt b/camera/camera-viewfinder/api/public_plus_experimental_1.1.0-beta03.txt
deleted file mode 100644
index 69b776e..0000000
--- a/camera/camera-viewfinder/api/public_plus_experimental_1.1.0-beta03.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-// Signature format: 4.0
-package @androidx.camera.viewfinder.ExperimentalViewfinder androidx.camera.viewfinder {
-
- @RequiresApi(21) public final class CameraViewfinder extends android.widget.FrameLayout {
- ctor @UiThread public CameraViewfinder(android.content.Context);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int, int);
- method @UiThread public android.graphics.Bitmap? getBitmap();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode getImplementationMode();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ScaleType getScaleType();
- method @UiThread public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
- method @UiThread public void setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
- method @UiThread public void setScaleType(androidx.camera.viewfinder.CameraViewfinder.ScaleType);
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ImplementationMode {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode COMPATIBLE;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode PERFORMANCE;
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ScaleType {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_START;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_START;
- }
-
- @RequiresOptIn(level=androidx.annotation.RequiresOptIn.Level.ERROR) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalViewfinder {
- }
-
- @RequiresApi(21) public class ViewfinderSurfaceRequest {
- ctor public ViewfinderSurfaceRequest(android.util.Size, android.hardware.camera2.CameraCharacteristics);
- method public android.util.Size getResolution();
- method public int getSensorOrientation();
- method public boolean isFrontCamera();
- method public boolean isLegacyDevice();
- method public void markSurfaceSafeToRelease();
- }
-
-}
-
diff --git a/camera/camera-viewfinder/api/public_plus_experimental_1.1.0-beta04.txt b/camera/camera-viewfinder/api/public_plus_experimental_1.1.0-beta04.txt
deleted file mode 100644
index 69b776e..0000000
--- a/camera/camera-viewfinder/api/public_plus_experimental_1.1.0-beta04.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-// Signature format: 4.0
-package @androidx.camera.viewfinder.ExperimentalViewfinder androidx.camera.viewfinder {
-
- @RequiresApi(21) public final class CameraViewfinder extends android.widget.FrameLayout {
- ctor @UiThread public CameraViewfinder(android.content.Context);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int, int);
- method @UiThread public android.graphics.Bitmap? getBitmap();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode getImplementationMode();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ScaleType getScaleType();
- method @UiThread public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
- method @UiThread public void setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
- method @UiThread public void setScaleType(androidx.camera.viewfinder.CameraViewfinder.ScaleType);
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ImplementationMode {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode COMPATIBLE;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode PERFORMANCE;
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ScaleType {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_START;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_START;
- }
-
- @RequiresOptIn(level=androidx.annotation.RequiresOptIn.Level.ERROR) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalViewfinder {
- }
-
- @RequiresApi(21) public class ViewfinderSurfaceRequest {
- ctor public ViewfinderSurfaceRequest(android.util.Size, android.hardware.camera2.CameraCharacteristics);
- method public android.util.Size getResolution();
- method public int getSensorOrientation();
- method public boolean isFrontCamera();
- method public boolean isLegacyDevice();
- method public void markSurfaceSafeToRelease();
- }
-
-}
-
diff --git a/camera/camera-viewfinder/api/public_plus_experimental_1.2.0-beta01.txt b/camera/camera-viewfinder/api/public_plus_experimental_1.2.0-beta01.txt
deleted file mode 100644
index d452929..0000000
--- a/camera/camera-viewfinder/api/public_plus_experimental_1.2.0-beta01.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-// Signature format: 4.0
-package androidx.camera.viewfinder {
-
- @RequiresApi(21) public final class CameraViewfinder extends android.widget.FrameLayout {
- ctor @UiThread public CameraViewfinder(android.content.Context);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int, int);
- method @UiThread public android.graphics.Bitmap? getBitmap();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode getImplementationMode();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ScaleType getScaleType();
- method @UiThread public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
- method @UiThread public void setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
- method @UiThread public void setScaleType(androidx.camera.viewfinder.CameraViewfinder.ScaleType);
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ImplementationMode {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode COMPATIBLE;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode PERFORMANCE;
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ScaleType {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_START;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_START;
- }
-
- @RequiresApi(21) public class ViewfinderSurfaceRequest {
- ctor public ViewfinderSurfaceRequest(android.util.Size, android.hardware.camera2.CameraCharacteristics);
- method public android.util.Size getResolution();
- method public int getSensorOrientation();
- method public boolean isFrontCamera();
- method public boolean isLegacyDevice();
- method public void markSurfaceSafeToRelease();
- }
-
-}
-
diff --git a/camera/camera-viewfinder/api/public_plus_experimental_1.2.0-beta02.txt b/camera/camera-viewfinder/api/public_plus_experimental_1.2.0-beta02.txt
deleted file mode 100644
index d452929..0000000
--- a/camera/camera-viewfinder/api/public_plus_experimental_1.2.0-beta02.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-// Signature format: 4.0
-package androidx.camera.viewfinder {
-
- @RequiresApi(21) public final class CameraViewfinder extends android.widget.FrameLayout {
- ctor @UiThread public CameraViewfinder(android.content.Context);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int, int);
- method @UiThread public android.graphics.Bitmap? getBitmap();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode getImplementationMode();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ScaleType getScaleType();
- method @UiThread public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
- method @UiThread public void setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
- method @UiThread public void setScaleType(androidx.camera.viewfinder.CameraViewfinder.ScaleType);
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ImplementationMode {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode COMPATIBLE;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode PERFORMANCE;
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ScaleType {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_START;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_START;
- }
-
- @RequiresApi(21) public class ViewfinderSurfaceRequest {
- ctor public ViewfinderSurfaceRequest(android.util.Size, android.hardware.camera2.CameraCharacteristics);
- method public android.util.Size getResolution();
- method public int getSensorOrientation();
- method public boolean isFrontCamera();
- method public boolean isLegacyDevice();
- method public void markSurfaceSafeToRelease();
- }
-
-}
-
diff --git a/camera/camera-viewfinder/api/public_plus_experimental_1.2.0-beta03.txt b/camera/camera-viewfinder/api/public_plus_experimental_1.2.0-beta03.txt
index d452929..04cecbd 100644
--- a/camera/camera-viewfinder/api/public_plus_experimental_1.2.0-beta03.txt
+++ b/camera/camera-viewfinder/api/public_plus_experimental_1.2.0-beta03.txt
@@ -1,41 +1,2 @@
// Signature format: 4.0
-package androidx.camera.viewfinder {
-
- @RequiresApi(21) public final class CameraViewfinder extends android.widget.FrameLayout {
- ctor @UiThread public CameraViewfinder(android.content.Context);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int, int);
- method @UiThread public android.graphics.Bitmap? getBitmap();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode getImplementationMode();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ScaleType getScaleType();
- method @UiThread public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
- method @UiThread public void setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
- method @UiThread public void setScaleType(androidx.camera.viewfinder.CameraViewfinder.ScaleType);
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ImplementationMode {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode COMPATIBLE;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode PERFORMANCE;
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ScaleType {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_START;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_START;
- }
-
- @RequiresApi(21) public class ViewfinderSurfaceRequest {
- ctor public ViewfinderSurfaceRequest(android.util.Size, android.hardware.camera2.CameraCharacteristics);
- method public android.util.Size getResolution();
- method public int getSensorOrientation();
- method public boolean isFrontCamera();
- method public boolean isLegacyDevice();
- method public void markSurfaceSafeToRelease();
- }
-
-}
diff --git a/camera/camera-viewfinder/api/public_plus_experimental_current.txt b/camera/camera-viewfinder/api/public_plus_experimental_current.txt
index d452929..0023b9c 100644
--- a/camera/camera-viewfinder/api/public_plus_experimental_current.txt
+++ b/camera/camera-viewfinder/api/public_plus_experimental_current.txt
@@ -10,7 +10,6 @@
method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode getImplementationMode();
method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ScaleType getScaleType();
method @UiThread public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
- method @UiThread public void setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
method @UiThread public void setScaleType(androidx.camera.viewfinder.CameraViewfinder.ScaleType);
}
@@ -29,13 +28,24 @@
}
@RequiresApi(21) public class ViewfinderSurfaceRequest {
- ctor public ViewfinderSurfaceRequest(android.util.Size, android.hardware.camera2.CameraCharacteristics);
+ method public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode? getImplementationMode();
+ method public int getLensFacing();
method public android.util.Size getResolution();
method public int getSensorOrientation();
- method public boolean isFrontCamera();
- method public boolean isLegacyDevice();
method public void markSurfaceSafeToRelease();
}
+ public static final class ViewfinderSurfaceRequest.Builder {
+ ctor public ViewfinderSurfaceRequest.Builder(android.util.Size);
+ method public androidx.camera.viewfinder.ViewfinderSurfaceRequest build();
+ method public androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
+ method public androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder setLensFacing(int);
+ method public androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder setSensorOrientation(int);
+ }
+
+ public final class ViewfinderSurfaceRequestUtil {
+ method @RequiresApi(21) public static androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder populateFromCharacteristics(androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder, android.hardware.camera2.CameraCharacteristics cameraCharacteristics);
+ }
+
}
diff --git a/camera/camera-viewfinder/api/res-1.1.0-beta03.txt b/camera/camera-viewfinder/api/res-1.1.0-beta03.txt
deleted file mode 100644
index e69de29..0000000
--- a/camera/camera-viewfinder/api/res-1.1.0-beta03.txt
+++ /dev/null
diff --git a/camera/camera-viewfinder/api/res-1.1.0-beta04.txt b/camera/camera-viewfinder/api/res-1.1.0-beta04.txt
deleted file mode 100644
index e69de29..0000000
--- a/camera/camera-viewfinder/api/res-1.1.0-beta04.txt
+++ /dev/null
diff --git a/camera/camera-viewfinder/api/res-1.2.0-beta01.txt b/camera/camera-viewfinder/api/res-1.2.0-beta01.txt
deleted file mode 100644
index e69de29..0000000
--- a/camera/camera-viewfinder/api/res-1.2.0-beta01.txt
+++ /dev/null
diff --git a/camera/camera-viewfinder/api/res-1.2.0-beta02.txt b/camera/camera-viewfinder/api/res-1.2.0-beta02.txt
deleted file mode 100644
index e69de29..0000000
--- a/camera/camera-viewfinder/api/res-1.2.0-beta02.txt
+++ /dev/null
diff --git a/camera/camera-viewfinder/api/restricted_1.1.0-beta03.txt b/camera/camera-viewfinder/api/restricted_1.1.0-beta03.txt
deleted file mode 100644
index e6f50d0..0000000
--- a/camera/camera-viewfinder/api/restricted_1.1.0-beta03.txt
+++ /dev/null
@@ -1 +0,0 @@
-// Signature format: 4.0
diff --git a/camera/camera-viewfinder/api/restricted_1.1.0-beta04.txt b/camera/camera-viewfinder/api/restricted_1.1.0-beta04.txt
deleted file mode 100644
index e6f50d0..0000000
--- a/camera/camera-viewfinder/api/restricted_1.1.0-beta04.txt
+++ /dev/null
@@ -1 +0,0 @@
-// Signature format: 4.0
diff --git a/camera/camera-viewfinder/api/restricted_1.2.0-beta01.txt b/camera/camera-viewfinder/api/restricted_1.2.0-beta01.txt
deleted file mode 100644
index d452929..0000000
--- a/camera/camera-viewfinder/api/restricted_1.2.0-beta01.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-// Signature format: 4.0
-package androidx.camera.viewfinder {
-
- @RequiresApi(21) public final class CameraViewfinder extends android.widget.FrameLayout {
- ctor @UiThread public CameraViewfinder(android.content.Context);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int, int);
- method @UiThread public android.graphics.Bitmap? getBitmap();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode getImplementationMode();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ScaleType getScaleType();
- method @UiThread public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
- method @UiThread public void setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
- method @UiThread public void setScaleType(androidx.camera.viewfinder.CameraViewfinder.ScaleType);
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ImplementationMode {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode COMPATIBLE;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode PERFORMANCE;
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ScaleType {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_START;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_START;
- }
-
- @RequiresApi(21) public class ViewfinderSurfaceRequest {
- ctor public ViewfinderSurfaceRequest(android.util.Size, android.hardware.camera2.CameraCharacteristics);
- method public android.util.Size getResolution();
- method public int getSensorOrientation();
- method public boolean isFrontCamera();
- method public boolean isLegacyDevice();
- method public void markSurfaceSafeToRelease();
- }
-
-}
-
diff --git a/camera/camera-viewfinder/api/restricted_1.2.0-beta02.txt b/camera/camera-viewfinder/api/restricted_1.2.0-beta02.txt
deleted file mode 100644
index d452929..0000000
--- a/camera/camera-viewfinder/api/restricted_1.2.0-beta02.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-// Signature format: 4.0
-package androidx.camera.viewfinder {
-
- @RequiresApi(21) public final class CameraViewfinder extends android.widget.FrameLayout {
- ctor @UiThread public CameraViewfinder(android.content.Context);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int, int);
- method @UiThread public android.graphics.Bitmap? getBitmap();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode getImplementationMode();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ScaleType getScaleType();
- method @UiThread public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
- method @UiThread public void setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
- method @UiThread public void setScaleType(androidx.camera.viewfinder.CameraViewfinder.ScaleType);
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ImplementationMode {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode COMPATIBLE;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode PERFORMANCE;
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ScaleType {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_START;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_START;
- }
-
- @RequiresApi(21) public class ViewfinderSurfaceRequest {
- ctor public ViewfinderSurfaceRequest(android.util.Size, android.hardware.camera2.CameraCharacteristics);
- method public android.util.Size getResolution();
- method public int getSensorOrientation();
- method public boolean isFrontCamera();
- method public boolean isLegacyDevice();
- method public void markSurfaceSafeToRelease();
- }
-
-}
-
diff --git a/camera/camera-viewfinder/api/restricted_1.2.0-beta03.txt b/camera/camera-viewfinder/api/restricted_1.2.0-beta03.txt
index d452929..04cecbd 100644
--- a/camera/camera-viewfinder/api/restricted_1.2.0-beta03.txt
+++ b/camera/camera-viewfinder/api/restricted_1.2.0-beta03.txt
@@ -1,41 +1,2 @@
// Signature format: 4.0
-package androidx.camera.viewfinder {
-
- @RequiresApi(21) public final class CameraViewfinder extends android.widget.FrameLayout {
- ctor @UiThread public CameraViewfinder(android.content.Context);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int);
- ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int, int);
- method @UiThread public android.graphics.Bitmap? getBitmap();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode getImplementationMode();
- method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ScaleType getScaleType();
- method @UiThread public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
- method @UiThread public void setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
- method @UiThread public void setScaleType(androidx.camera.viewfinder.CameraViewfinder.ScaleType);
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ImplementationMode {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode COMPATIBLE;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode PERFORMANCE;
- }
-
- @RequiresApi(21) public enum CameraViewfinder.ScaleType {
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_START;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_CENTER;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_END;
- enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_START;
- }
-
- @RequiresApi(21) public class ViewfinderSurfaceRequest {
- ctor public ViewfinderSurfaceRequest(android.util.Size, android.hardware.camera2.CameraCharacteristics);
- method public android.util.Size getResolution();
- method public int getSensorOrientation();
- method public boolean isFrontCamera();
- method public boolean isLegacyDevice();
- method public void markSurfaceSafeToRelease();
- }
-
-}
diff --git a/camera/camera-viewfinder/api/restricted_current.txt b/camera/camera-viewfinder/api/restricted_current.txt
index d452929..0023b9c 100644
--- a/camera/camera-viewfinder/api/restricted_current.txt
+++ b/camera/camera-viewfinder/api/restricted_current.txt
@@ -10,7 +10,6 @@
method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode getImplementationMode();
method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ScaleType getScaleType();
method @UiThread public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
- method @UiThread public void setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
method @UiThread public void setScaleType(androidx.camera.viewfinder.CameraViewfinder.ScaleType);
}
@@ -29,13 +28,24 @@
}
@RequiresApi(21) public class ViewfinderSurfaceRequest {
- ctor public ViewfinderSurfaceRequest(android.util.Size, android.hardware.camera2.CameraCharacteristics);
+ method public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode? getImplementationMode();
+ method public int getLensFacing();
method public android.util.Size getResolution();
method public int getSensorOrientation();
- method public boolean isFrontCamera();
- method public boolean isLegacyDevice();
method public void markSurfaceSafeToRelease();
}
+ public static final class ViewfinderSurfaceRequest.Builder {
+ ctor public ViewfinderSurfaceRequest.Builder(android.util.Size);
+ method public androidx.camera.viewfinder.ViewfinderSurfaceRequest build();
+ method public androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode);
+ method public androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder setLensFacing(int);
+ method public androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder setSensorOrientation(int);
+ }
+
+ public final class ViewfinderSurfaceRequestUtil {
+ method @RequiresApi(21) public static androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder populateFromCharacteristics(androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder, android.hardware.camera2.CameraCharacteristics cameraCharacteristics);
+ }
+
}
diff --git a/camera/camera-viewfinder/src/androidTest/java/androidx/camera/viewfinder/CameraViewfinderBitmapTest.kt b/camera/camera-viewfinder/src/androidTest/java/androidx/camera/viewfinder/CameraViewfinderBitmapTest.kt
index 67ea991..25b8313 100644
--- a/camera/camera-viewfinder/src/androidTest/java/androidx/camera/viewfinder/CameraViewfinderBitmapTest.kt
+++ b/camera/camera-viewfinder/src/androidTest/java/androidx/camera/viewfinder/CameraViewfinderBitmapTest.kt
@@ -21,8 +21,6 @@
import android.hardware.camera2.CameraManager
import android.util.Size
import android.view.Surface
-import androidx.camera.viewfinder.CameraViewfinder.ImplementationMode.COMPATIBLE
-import androidx.camera.viewfinder.CameraViewfinder.ImplementationMode.PERFORMANCE
import androidx.camera.viewfinder.CameraViewfinder.ScaleType.FILL_CENTER
import androidx.camera.viewfinder.internal.utils.futures.FutureCallback
import androidx.camera.viewfinder.internal.utils.futures.Futures
@@ -79,7 +77,9 @@
Assume.assumeTrue("No cameras found on device.", cameraIds.isNotEmpty())
val cameraId = cameraIds[0]
val characteristics = cameraManager.getCameraCharacteristics(cameraId)
- mSurfaceRequest = ViewfinderSurfaceRequest(ANY_SIZE, characteristics)
+ mSurfaceRequest = ViewfinderSurfaceRequest.Builder(ANY_SIZE)
+ .populateFromCharacteristics(characteristics)
+ .build()
}
@After
@@ -90,7 +90,7 @@
@Throws(Throwable::class)
fun bitmapNotNull_whenViewfinderIsDisplaying_surfaceView() {
// Arrange
- val viewfinder: CameraViewfinder = setUpViewfinder(PERFORMANCE, FILL_CENTER)
+ val viewfinder: CameraViewfinder = setUpViewfinder(FILL_CENTER)
// assert
runOnMainThread(Runnable {
@@ -119,7 +119,7 @@
@Throws(Throwable::class)
fun bitmapNotNull_whenViewfinderIsDisplaying_textureView() {
// Arrange
- val viewfinder: CameraViewfinder = setUpViewfinder(COMPATIBLE, FILL_CENTER)
+ val viewfinder: CameraViewfinder = setUpViewfinder(FILL_CENTER)
// assert
runOnMainThread(Runnable {
@@ -145,7 +145,6 @@
}
private fun setUpViewfinder(
- mode: CameraViewfinder.ImplementationMode,
scaleType: CameraViewfinder.ScaleType
): CameraViewfinder {
val viewfinderAtomicReference: AtomicReference<CameraViewfinder> =
@@ -153,7 +152,6 @@
runOnMainThread {
val viewfiner =
CameraViewfinder(ApplicationProvider.getApplicationContext<Context>())
- viewfiner.setImplementationMode(mode)
viewfiner.setScaleType(scaleType)
mActivityRule.getScenario().onActivity(
ActivityAction<FakeActivity> { activity: FakeActivity ->
diff --git a/camera/camera-viewfinder/src/androidTest/java/androidx/camera/viewfinder/SurfaceViewImplementationTest.kt b/camera/camera-viewfinder/src/androidTest/java/androidx/camera/viewfinder/SurfaceViewImplementationTest.kt
index 16e57c2..7e0012c 100644
--- a/camera/camera-viewfinder/src/androidTest/java/androidx/camera/viewfinder/SurfaceViewImplementationTest.kt
+++ b/camera/camera-viewfinder/src/androidTest/java/androidx/camera/viewfinder/SurfaceViewImplementationTest.kt
@@ -72,7 +72,9 @@
Assume.assumeTrue("No cameras found on device.", cameraIds.isNotEmpty())
val cameraId = cameraIds[0]
val characteristics = cameraManager.getCameraCharacteristics(cameraId)
- mSurfaceRequest = ViewfinderSurfaceRequest(ANY_SIZE, characteristics)
+ mSurfaceRequest = ViewfinderSurfaceRequest.Builder(ANY_SIZE)
+ .populateFromCharacteristics(characteristics)
+ .build()
mImplementation = SurfaceViewImplementation(mParent, ViewfinderTransformation())
}
diff --git a/camera/camera-viewfinder/src/androidTest/java/androidx/camera/viewfinder/TextureViewImplementationTest.kt b/camera/camera-viewfinder/src/androidTest/java/androidx/camera/viewfinder/TextureViewImplementationTest.kt
index 3b6bae6..dbb8587 100644
--- a/camera/camera-viewfinder/src/androidTest/java/androidx/camera/viewfinder/TextureViewImplementationTest.kt
+++ b/camera/camera-viewfinder/src/androidTest/java/androidx/camera/viewfinder/TextureViewImplementationTest.kt
@@ -56,7 +56,9 @@
val cameraId = cameraIds[0]
val characteristics = cameraManager.getCameraCharacteristics(cameraId)
_surfaceRequest =
- ViewfinderSurfaceRequest(ANY_SIZE, characteristics)
+ ViewfinderSurfaceRequest.Builder(ANY_SIZE)
+ .populateFromCharacteristics(characteristics)
+ .build()
}
return _surfaceRequest!!
}
diff --git a/camera/camera-viewfinder/src/main/java/androidx/camera/viewfinder/CameraViewfinder.java b/camera/camera-viewfinder/src/main/java/androidx/camera/viewfinder/CameraViewfinder.java
index 03c4488..9a438c0 100644
--- a/camera/camera-viewfinder/src/main/java/androidx/camera/viewfinder/CameraViewfinder.java
+++ b/camera/camera-viewfinder/src/main/java/androidx/camera/viewfinder/CameraViewfinder.java
@@ -41,6 +41,7 @@
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.annotation.UiThread;
+import androidx.annotation.VisibleForTesting;
import androidx.camera.viewfinder.internal.quirk.DeviceQuirks;
import androidx.camera.viewfinder.internal.quirk.SurfaceViewNotCroppedByParentQuirk;
import androidx.camera.viewfinder.internal.quirk.SurfaceViewStretchedQuirk;
@@ -79,7 +80,7 @@
@NonNull
private final Looper mRequiredLooper = Looper.myLooper();
- @NonNull ImplementationMode mImplementationMode = DEFAULT_IMPL_MODE;
+ @NonNull ImplementationMode mImplementationMode;
// Synthetic access
@SuppressWarnings("WeakerAccess")
@@ -116,8 +117,11 @@
}
Logger.d(TAG, "Surface requested by Viewfinder.");
- mImplementation = shouldUseTextureView(
- surfaceRequest.isLegacyDevice(), mImplementationMode)
+ if (surfaceRequest.getImplementationMode() != null) {
+ mImplementationMode = surfaceRequest.getImplementationMode();
+ }
+
+ mImplementation = shouldUseTextureView(mImplementationMode)
? new TextureViewImplementation(
CameraViewfinder.this, mViewfinderTransformation)
: new SurfaceViewImplementation(
@@ -130,10 +134,12 @@
mViewfinderTransformation.setTransformationInfo(
createTransformInfo(surfaceRequest.getResolution(),
display,
- surfaceRequest.isFrontCamera(),
+ surfaceRequest.getLensFacing()
+ == CameraCharacteristics.LENS_FACING_FRONT,
surfaceRequest.getSensorOrientation()),
surfaceRequest.getResolution(),
- surfaceRequest.isFrontCamera());
+ surfaceRequest.getLensFacing()
+ == CameraCharacteristics.LENS_FACING_FRONT);
redrawViewfinder();
}
}
@@ -176,7 +182,7 @@
int implementationModeId =
attributes.getInteger(R.styleable.Viewfinder_implementationMode,
DEFAULT_IMPL_MODE.getId());
- setImplementationMode(ImplementationMode.fromId(implementationModeId));
+ mImplementationMode = ImplementationMode.fromId(implementationModeId);
} finally {
attributes.recycle();
}
@@ -189,36 +195,15 @@
}
/**
- * Sets the {@link ImplementationMode} for the {@link CameraViewfinder}.
- *
- * <p> This value can also be set in the layout XML file via the {@code app:implementationMode}
- * attribute.
- *
- * <p> {@link CameraViewfinder} displays the viewfinder with a {@link TextureView} when the
- * mode is {@link ImplementationMode#COMPATIBLE}, and tries to use a {@link SurfaceView} if
- * it is {@link ImplementationMode#PERFORMANCE} when possible, which depends on the device's
- * attributes (e.g. API level). If not set, the default mode is
- * {@link ImplementationMode#PERFORMANCE}.
- *
- * <p> This method should be called after {@link CameraViewfinder} is inflated and before
- * {@link CameraViewfinder#requestSurfaceAsync(ViewfinderSurfaceRequest)}. If a new
- * {@link ImplementationMode} is set, the capture session needs to be recreated and new
- * surface request needs to be sent to make it effective.
- *
- * @param implementationMode The {@link ImplementationMode} to apply to the viewfinder.
- * @attr name app:implementationMode
- */
- @UiThread
- public void setImplementationMode(@NonNull final ImplementationMode implementationMode) {
- checkUiThread();
- mImplementationMode = implementationMode;
- }
-
- /**
* Returns the {@link ImplementationMode}.
*
- * <p> If nothing is set via {@link #setImplementationMode}, the default
- * value is {@link ImplementationMode#PERFORMANCE}.
+ * <p> For each {@link ViewfinderSurfaceRequest} sent to {@link CameraViewfinder}, the
+ * {@link ImplementationMode} set in the {@link ViewfinderSurfaceRequest} will be used first.
+ * If it's not set, the {@code app:implementationMode} in the layout xml will be used. If
+ * it's not set in the layout xml, the default value {@link ImplementationMode#PERFORMANCE}
+ * will be used. Each {@link ViewfinderSurfaceRequest sent to {@link CameraViewfinder} can
+ * override the {@link ImplementationMode} once it has set the
+ * {@link ImplementationMode}.
*
* @return The {@link ImplementationMode} for {@link CameraViewfinder}.
*/
@@ -376,16 +361,15 @@
stopListeningToDisplayChange();
}
- // Synthetic access
- @SuppressWarnings("WeakerAccess")
- static boolean shouldUseTextureView(
- boolean isLegacyDevice,
- @NonNull final ImplementationMode implementationMode) {
+ @VisibleForTesting
+ static boolean shouldUseTextureView(@NonNull final ImplementationMode implementationMode) {
boolean hasSurfaceViewQuirk = DeviceQuirks.get(SurfaceViewStretchedQuirk.class) != null
|| DeviceQuirks.get(SurfaceViewNotCroppedByParentQuirk.class) != null;
- if (Build.VERSION.SDK_INT <= 24 || isLegacyDevice || hasSurfaceViewQuirk) {
+ if (Build.VERSION.SDK_INT <= 24 || hasSurfaceViewQuirk) {
// Force to use TextureView when the device is running android 7.0 and below, legacy
// level or SurfaceView has quirks.
+ Logger.d(TAG, "Implementation mode to set is not supported, forcing to use "
+ + "TextureView, because transform APIs are not supported on these devices.");
return true;
}
switch (implementationMode) {
@@ -624,7 +608,8 @@
mViewfinderTransformation.updateTransformInfo(
createTransformInfo(surfaceRequest.getResolution(),
display,
- surfaceRequest.isFrontCamera(),
+ surfaceRequest.getLensFacing()
+ == CameraCharacteristics.LENS_FACING_FRONT,
surfaceRequest.getSensorOrientation()));
redrawViewfinder();
}
diff --git a/camera/camera-viewfinder/src/main/java/androidx/camera/viewfinder/ViewfinderSurfaceRequest.java b/camera/camera-viewfinder/src/main/java/androidx/camera/viewfinder/ViewfinderSurfaceRequest.java
index e0eb047..b23887a8 100644
--- a/camera/camera-viewfinder/src/main/java/androidx/camera/viewfinder/ViewfinderSurfaceRequest.java
+++ b/camera/camera-viewfinder/src/main/java/androidx/camera/viewfinder/ViewfinderSurfaceRequest.java
@@ -16,6 +16,10 @@
package androidx.camera.viewfinder;
+import static android.hardware.camera2.CameraMetadata.LENS_FACING_BACK;
+import static android.hardware.camera2.CameraMetadata.LENS_FACING_EXTERNAL;
+import static android.hardware.camera2.CameraMetadata.LENS_FACING_FRONT;
+
import android.annotation.SuppressLint;
import android.graphics.SurfaceTexture;
import android.hardware.camera2.CameraCharacteristics;
@@ -31,6 +35,7 @@
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
import androidx.annotation.RestrictTo.Scope;
+import androidx.camera.viewfinder.CameraViewfinder.ImplementationMode;
import androidx.camera.viewfinder.internal.surface.ViewfinderSurface;
import androidx.camera.viewfinder.internal.utils.Logger;
import androidx.camera.viewfinder.internal.utils.executor.CameraExecutors;
@@ -68,62 +73,39 @@
private static final String TAG = "ViewfinderSurfaceRequest";
- private final boolean mIsLegacyDevice;
- private final boolean mIsFrontCamera;
- private final int mSensorOrientation;
@NonNull private final Size mResolution;
@NonNull private final ViewfinderSurface mInternalViewfinderSurface;
@NonNull private final CallbackToFutureAdapter.Completer<Void> mRequestCancellationCompleter;
@NonNull private final ListenableFuture<Void> mSessionStatusFuture;
@NonNull private final CallbackToFutureAdapter.Completer<Surface> mSurfaceCompleter;
-
+ @LensFacingValue private int mLensFacing;
+ @SensorOrientationDegreesValue private int mSensorOrientation;
+ @Nullable
+ private ImplementationMode mImplementationMode;
@SuppressWarnings("WeakerAccess") /*synthetic accessor */
@NonNull
final ListenableFuture<Surface> mSurfaceFuture;
/**
- * Creates a new surface request with surface resolution and camera characteristics.
- *
- * <p>The resolution given here will be the default resolution of the Surface returned by
- * {@link CameraViewfinder#requestSurfaceAsync(ViewfinderSurfaceRequest)}, which can then be
- * passed to the camera API to set the camera viewfinder resolution.
- *
- * @param resolution The requested surface resolution.
- * @param cameraCharacteristics The {@link CameraCharacteristics} to get device information
- * e.g. hardware level, lens facing, sensor orientation, etc,.
- */
- public ViewfinderSurfaceRequest(
- @NonNull Size resolution,
- @NonNull CameraCharacteristics cameraCharacteristics) {
- this(resolution,
- cameraCharacteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL)
- == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY,
- cameraCharacteristics.get(CameraCharacteristics.LENS_FACING)
- == CameraCharacteristics.LENS_FACING_FRONT,
- cameraCharacteristics.get(CameraCharacteristics.SENSOR_ORIENTATION));
- }
-
- /**
- * Creates a new surface request with surface resolution, view display and camera device
- * information.
+ * Creates a new surface request with surface resolution, camera device, lens facing and
+ * sensor orientation information.
*
* @param resolution The requested surface resolution. It is the output surface size
* the camera is configured with, instead of {@link CameraViewfinder}
* view size.
- * {@link CameraViewfinder} view
- * @param isLegacyDevice The device hardware level is legacy or not.
- * @param isFrontCamera The camera is front facing or not.
+ * @param lensFacing The camera lens facing.
* @param sensorOrientation THe camera sensor orientation.
+ * @param implementationMode The {@link ImplementationMode} to apply to the viewfinder.
*/
- private ViewfinderSurfaceRequest(
+ ViewfinderSurfaceRequest(
@NonNull Size resolution,
- boolean isLegacyDevice,
- boolean isFrontCamera,
- int sensorOrientation) {
+ @LensFacingValue int lensFacing,
+ @SensorOrientationDegreesValue int sensorOrientation,
+ @Nullable ImplementationMode implementationMode) {
mResolution = resolution;
- mIsLegacyDevice = isLegacyDevice;
- mIsFrontCamera = isFrontCamera;
+ mLensFacing = lensFacing;
mSensorOrientation = sensorOrientation;
+ mImplementationMode = implementationMode;
// To ensure concurrency and ordering, operations are chained. Completion can only be
// triggered externally by the top-level completer (mSurfaceCompleter). The other future
@@ -164,7 +146,7 @@
}
@Override
- public void onFailure(Throwable t) {
+ public void onFailure(@NonNull Throwable t) {
if (t instanceof RequestCancelledException) {
// Cancellation occurred. Notify listeners.
Preconditions.checkState(requestCancellationFuture.cancel(false));
@@ -259,6 +241,8 @@
/**
* Returns the resolution of the requested {@link Surface}.
*
+ * <p>The value is set by {@link Builder#Builder(Size)}.
+ *
* The surface which fulfills this request must have the resolution specified here in
* order to fulfill the resource requirements of the camera.
*
@@ -273,28 +257,40 @@
/**
* Returns the sensor orientation.
*
+ * <p>The value is set by {@link Builder#setSensorOrientation(int)}, which can be retrieved from
+ * {@link CameraCharacteristics} by key {@link CameraCharacteristics#SENSOR_ORIENTATION}.
+ *
* @return The sensor orientation.
*/
+ @SensorOrientationDegreesValue
public int getSensorOrientation() {
return mSensorOrientation;
}
/**
- * Returns the status of camera lens facing.
+ * Returns the camera lens facing.
*
- * @return True if front camera, otherwise false.
+ * <p>The value is set by {@link Builder#setLensFacing(int)}, which can be retrieved from
+ * {@link CameraCharacteristics} by key {@link CameraCharacteristics#LENS_FACING}.
+ *
+ * @return The lens facing.
*/
- public boolean isFrontCamera() {
- return mIsFrontCamera;
+ @LensFacingValue
+ public int getLensFacing() {
+ return mLensFacing;
}
/**
- * Returns the status of camera hardware level.
+ * Returns the {@link ImplementationMode}.
*
- * @return True if legacy device, otherwise false.
+ * <p>The value is set by {@link Builder#setImplementationMode(ImplementationMode)}.
+ *
+ * @return {@link ImplementationMode}. The value will be null if it's not set via
+ * {@link Builder#setImplementationMode(ImplementationMode)}.
*/
- public boolean isLegacyDevice() {
- return mIsLegacyDevice;
+ @Nullable
+ public ImplementationMode getImplementationMode() {
+ return mImplementationMode;
}
/**
@@ -362,7 +358,7 @@
}
@Override
- public void onFailure(Throwable t) {
+ public void onFailure(@NonNull Throwable t) {
Preconditions.checkState(t instanceof RequestCancelledException, "Camera "
+ "surface session should only fail with request "
+ "cancellation. Instead failed due to:\n" + t);
@@ -414,6 +410,114 @@
+ "will not complete."));
}
+ /**
+ * Builder for {@link ViewfinderSurfaceRequest}.
+ */
+ public static final class Builder {
+
+ @NonNull private final Size mResolution;
+ @LensFacingValue private int mLensFacing = LENS_FACING_BACK;
+ @SensorOrientationDegreesValue private int mSensorOrientation = 0;
+ @Nullable private ImplementationMode mImplementationMode;
+
+ public Builder(@NonNull Size resolution) {
+ mResolution = resolution;
+ }
+
+ /**
+ * Sets the {@link ImplementationMode}.
+ *
+ * <p><b>Possible values:</b></p>
+ * <ul>
+ * <li>{@link ImplementationMode#PERFORMANCE PERFORMANCE}</li>
+ * <li>{@link ImplementationMode#COMPATIBLE COMPATIBLE}</li>
+ * </ul>
+ *
+ * <p>If not set, the {@link ImplementationMode} set via {@code app:implementationMode} in
+ * layout xml will be used for {@link CameraViewfinder}. If not set in the layout xml,
+ * the default value {@link ImplementationMode#PERFORMANCE} will be used in
+ * {@link CameraViewfinder}.
+ *
+ * @param implementationMode The {@link ImplementationMode}.
+ * @return This builder.
+ */
+ @NonNull
+ public Builder setImplementationMode(@NonNull ImplementationMode implementationMode) {
+ mImplementationMode = implementationMode;
+ return this;
+ }
+
+ /**
+ * Sets the lens facing.
+ *
+ * <p><b>Possible values:</b></p>
+ * <ul>
+ * <li>{@link CameraMetadata#LENS_FACING_FRONT FRONT}</li>
+ * <li>{@link CameraMetadata#LENS_FACING_BACK BACK}</li>
+ * <li>{@link CameraMetadata#LENS_FACING_EXTERNAL EXTERNAL}</li>
+ * </ul>
+ *
+ * <p>The value can be retrieved from {@link CameraCharacteristics} by key
+ * {@link CameraCharacteristics#LENS_FACING}. If not set,
+ * {@link CameraMetadata#LENS_FACING_BACK} will be used by default.
+ *
+ * @param lensFacing The lens facing.
+ * @return This builder.
+ */
+ @NonNull
+ public Builder setLensFacing(@LensFacingValue int lensFacing) {
+ mLensFacing = lensFacing;
+ return this;
+ }
+
+ /**
+ * Sets the sensor orientation.
+ *
+ * <p><b>Range of valid values:</b><br>
+ * 0, 90, 180, 270</p>
+ *
+ * <p>The value can be retrieved from {@link CameraCharacteristics} by key
+ * {@link CameraCharacteristics#SENSOR_ORIENTATION}. If it is not
+ * set, 0 will be used by default.
+ *
+ * @param sensorOrientation
+ * @return this builder.
+ */
+ @NonNull
+ public Builder setSensorOrientation(@SensorOrientationDegreesValue int sensorOrientation) {
+ mSensorOrientation = sensorOrientation;
+ return this;
+ }
+
+ /**
+ * Builds the {@link ViewfinderSurfaceRequest}.
+ * @return the instance of {@link ViewfinderSurfaceRequest}.
+ */
+ @NonNull
+ public ViewfinderSurfaceRequest build() {
+ if (mLensFacing != LENS_FACING_FRONT
+ && mLensFacing != LENS_FACING_BACK
+ && mLensFacing != LENS_FACING_EXTERNAL) {
+ throw new IllegalArgumentException("Lens facing value: " + mLensFacing + " is "
+ + "invalid");
+ }
+
+ if (mSensorOrientation != 0
+ && mSensorOrientation != 90
+ && mSensorOrientation != 180
+ && mSensorOrientation != 270) {
+ throw new IllegalArgumentException("Sensor orientation value: "
+ + mSensorOrientation + " is invalid");
+ }
+
+ return new ViewfinderSurfaceRequest(
+ mResolution,
+ mLensFacing,
+ mSensorOrientation,
+ mImplementationMode);
+ }
+ }
+
static final class RequestCancelledException extends RuntimeException {
RequestCancelledException(@NonNull String message, @NonNull Throwable cause) {
super(message, cause);
@@ -541,4 +645,20 @@
Result() {
}
}
+
+ /**
+ * Valid integer sensor orientation degrees values.
+ */
+ @IntDef({0, 90, 180, 270})
+ @Retention(RetentionPolicy.SOURCE)
+ @interface SensorOrientationDegreesValue {
+ }
+
+ /**
+ * Valid integer sensor orientation degrees values.
+ */
+ @IntDef({LENS_FACING_FRONT, LENS_FACING_BACK, LENS_FACING_EXTERNAL})
+ @Retention(RetentionPolicy.SOURCE)
+ @interface LensFacingValue {
+ }
}
diff --git a/camera/camera-viewfinder/src/main/java/androidx/camera/viewfinder/ViewfinderSurfaceRequestExt.kt b/camera/camera-viewfinder/src/main/java/androidx/camera/viewfinder/ViewfinderSurfaceRequestExt.kt
new file mode 100644
index 0000000..4b8112e
--- /dev/null
+++ b/camera/camera-viewfinder/src/main/java/androidx/camera/viewfinder/ViewfinderSurfaceRequestExt.kt
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@file:JvmName("ViewfinderSurfaceRequestUtil")
+
+package androidx.camera.viewfinder
+
+import android.annotation.SuppressLint
+import android.hardware.camera2.CameraCharacteristics
+import android.hardware.camera2.CameraMetadata
+import androidx.annotation.RequiresApi
+import androidx.camera.viewfinder.CameraViewfinder.ImplementationMode
+
+/**
+ * Populates [ViewfinderSurfaceRequest.Builder] from [CameraCharacteristics].
+ *
+ * <p>The [CameraCharacteristics] will be used to populate information including lens facing,
+ * sensor orientation and [ImplementationMode]. If the hardware level is legacy,
+ * the [ImplementationMode] will be set to [ImplementationMode.COMPATIBLE].
+ */
+@SuppressLint("ClassVerificationFailure")
+@RequiresApi(21)
+fun ViewfinderSurfaceRequest.Builder.populateFromCharacteristics(
+ cameraCharacteristics: CameraCharacteristics
+): ViewfinderSurfaceRequest.Builder {
+ setLensFacing(cameraCharacteristics.get(CameraCharacteristics.LENS_FACING)!!)
+ setSensorOrientation(
+ cameraCharacteristics.get(CameraCharacteristics.SENSOR_ORIENTATION)!!)
+ if (cameraCharacteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL)
+ == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY) {
+ setImplementationMode(ImplementationMode.COMPATIBLE)
+ }
+ return this
+}
\ No newline at end of file
diff --git a/camera/camera-viewfinder/src/test/java/androidx/camera/viewfinder/CameraViewfinderTest.java b/camera/camera-viewfinder/src/test/java/androidx/camera/viewfinder/CameraViewfinderTest.java
index 897fcde0..2528c8d 100644
--- a/camera/camera-viewfinder/src/test/java/androidx/camera/viewfinder/CameraViewfinderTest.java
+++ b/camera/camera-viewfinder/src/test/java/androidx/camera/viewfinder/CameraViewfinderTest.java
@@ -46,7 +46,6 @@
public void surfaceViewNormal_useSurfaceView() {
// Assert: SurfaceView is used.
assertThat(CameraViewfinder.shouldUseTextureView(
- /* isLegacyDevice = */ false,
CameraViewfinder.ImplementationMode.PERFORMANCE)).isFalse();
}
@@ -57,7 +56,6 @@
// Assert: TextureView is used even the SurfaceRequest is compatible with SurfaceView.
assertThat(CameraViewfinder.shouldUseTextureView(
- /* isLegacyDevice = */ false,
CameraViewfinder.ImplementationMode.PERFORMANCE)).isTrue();
}
@@ -68,7 +66,6 @@
// Assert: TextureView is used even the SurfaceRequest is compatible with SurfaceView.
assertThat(CameraViewfinder.shouldUseTextureView(
- /* isLegacyDevice = */ false,
CameraViewfinder.ImplementationMode.PERFORMANCE)).isTrue();
}
@@ -79,7 +76,6 @@
// Assert: TextureView is used even the SurfaceRequest is compatible with SurfaceView.
assertThat(CameraViewfinder.shouldUseTextureView(
- /* isLegacyDevice = */ true,
CameraViewfinder.ImplementationMode.COMPATIBLE)).isTrue();
}
}
diff --git a/camera/integration-tests/viewfindertestapp/src/main/java/androidx/camera/integration/viewfinder/CameraViewfinderFoldableFragment.kt b/camera/integration-tests/viewfindertestapp/src/main/java/androidx/camera/integration/viewfinder/CameraViewfinderFoldableFragment.kt
index 22a0b7c..04b25e4 100644
--- a/camera/integration-tests/viewfindertestapp/src/main/java/androidx/camera/integration/viewfinder/CameraViewfinderFoldableFragment.kt
+++ b/camera/integration-tests/viewfindertestapp/src/main/java/androidx/camera/integration/viewfinder/CameraViewfinderFoldableFragment.kt
@@ -45,6 +45,7 @@
import android.os.HandlerThread
import android.provider.MediaStore
import android.util.Log
+import android.util.Size
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuInflater
@@ -59,6 +60,7 @@
import androidx.camera.core.impl.utils.futures.Futures
import androidx.camera.viewfinder.CameraViewfinder
import androidx.camera.viewfinder.ViewfinderSurfaceRequest
+import androidx.camera.viewfinder.populateFromCharacteristics
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.fragment.app.DialogFragment
@@ -76,7 +78,6 @@
import java.io.FileOutputStream
import java.io.IOException
import java.text.SimpleDateFormat
-import java.util.Arrays
import java.util.Collections
import java.util.Date
import java.util.Locale
@@ -144,6 +145,8 @@
private var viewfinderSurfaceRequest: ViewfinderSurfaceRequest? = null
+ private var resolution: Size? = null
+
@Deprecated("Deprecated in Java")
@Suppress("DEPRECATION")
override fun onCreate(savedInstanceState: Bundle?) {
@@ -171,14 +174,18 @@
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.implementationMode -> {
- cameraViewfinder.implementationMode =
+ val implementationMode =
when (cameraViewfinder.implementationMode) {
CameraViewfinder.ImplementationMode.PERFORMANCE ->
CameraViewfinder.ImplementationMode.COMPATIBLE
else -> CameraViewfinder.ImplementationMode.PERFORMANCE
}
- closeCamera()
- sendSurfaceRequest(false)
+
+ val viewfinderSurfaceRequest = ViewfinderSurfaceRequest.Builder(resolution!!)
+ .populateFromCharacteristics(characteristics)
+ .setImplementationMode(implementationMode)
+ .build()
+ sendSurfaceRequest(viewfinderSurfaceRequest)
}
R.id.fitCenter -> cameraViewfinder.scaleType = CameraViewfinder.ScaleType.FIT_CENTER
R.id.fillCenter -> cameraViewfinder.scaleType = CameraViewfinder.ScaleType.FILL_CENTER
@@ -234,7 +241,12 @@
}
}
- sendSurfaceRequest(false)
+ setUpCameraOutputs(false)
+
+ val viewfinderSurfaceRequest = ViewfinderSurfaceRequest.Builder(resolution!!)
+ .populateFromCharacteristics(characteristics)
+ .build()
+ sendSurfaceRequest(viewfinderSurfaceRequest)
lifecycleScope.launch {
windowInfoTracker.windowLayoutInfo(requireActivity())
@@ -302,14 +314,13 @@
}
// ------------- Create Capture Session --------------
- private fun sendSurfaceRequest(toggleCamera: Boolean) {
+ private fun sendSurfaceRequest(request: ViewfinderSurfaceRequest) {
cameraViewfinder.post {
if (isAdded && context != null) {
- setUpCameraOutputs(toggleCamera)
-
val context = requireContext()
+ this.viewfinderSurfaceRequest = request
surfaceListenableFuture =
- cameraViewfinder.requestSurfaceAsync(viewfinderSurfaceRequest!!)
+ cameraViewfinder.requestSurfaceAsync(request)
Futures.addCallback(surfaceListenableFuture, object : FutureCallback<Surface?> {
override fun onSuccess(surface: Surface?) {
@@ -353,12 +364,12 @@
) ?: continue
// For still image captures, we use the largest available size.
- val largest = Collections.max(
- /* coll = */ Arrays.asList(*map.getOutputSizes(ImageFormat.JPEG)),
+ resolution = Collections.max(
+ /* coll = */ listOf(*map.getOutputSizes(ImageFormat.JPEG)),
/* comp = */ CompareSizesByArea()
)
imageReader = ImageReader.newInstance(
- largest.width, largest.height,
+ resolution!!.width, resolution!!.height,
ImageFormat.JPEG, /*maxImages*/ 2
).apply {
setOnImageAvailableListener(onImageAvailableListener, imageReaderHandler)
@@ -366,9 +377,6 @@
this.cameraId = cameraId
this.characteristics = cameraManager.getCameraCharacteristics(cameraId)
- viewfinderSurfaceRequest = ViewfinderSurfaceRequest(largest, characteristics)
-
- Log.d(TAG, "viewfinderSurfaceRequest created = $viewfinderSurfaceRequest")
return
}
} catch (e: CameraAccessException) {
@@ -488,7 +496,11 @@
// ------------- Toggle Camera -----------
private fun toggleCamera() {
closeCamera()
- sendSurfaceRequest(true)
+ setUpCameraOutputs(true)
+ val viewfinderSurfaceRequest = ViewfinderSurfaceRequest.Builder(resolution!!)
+ .populateFromCharacteristics(characteristics)
+ .build()
+ sendSurfaceRequest(viewfinderSurfaceRequest)
}
// ------------- Save Bitmap ------------