Camera Extensions Validation Tool -- Zoom Support for Camera2

- add the ability to zoom in / out when using the camera2 extensions validation activity
- this supports zoom on both camera2 and camera2 extensions

Test: manual
Bug: 315796514
Change-Id: I7098281a7ca60e0877fc24323dc7ae1e67ee0e93
diff --git a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/Camera2ExtensionsActivity.kt b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/Camera2ExtensionsActivity.kt
index a900ea6..4b61d64 100644
--- a/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/Camera2ExtensionsActivity.kt
+++ b/camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/Camera2ExtensionsActivity.kt
@@ -37,6 +37,7 @@
 import android.hardware.camera2.params.SessionConfiguration.SESSION_REGULAR
 import android.media.ImageReader
 import android.net.Uri
+import android.os.Build
 import android.os.Bundle
 import android.os.Handler
 import android.os.HandlerThread
@@ -45,6 +46,7 @@
 import android.util.Size
 import android.view.Menu
 import android.view.MenuItem
+import android.view.ScaleGestureDetector
 import android.view.Surface
 import android.view.TextureView
 import android.view.View
@@ -55,6 +57,7 @@
 import android.widget.Switch
 import android.widget.TextView
 import android.widget.Toast
+import androidx.annotation.DoNotInline
 import androidx.annotation.RequiresApi
 import androidx.annotation.VisibleForTesting
 import androidx.appcompat.app.AppCompatActivity
@@ -349,6 +352,23 @@
      */
     private var toast: Toast? = null
 
+    private var zoomRatio: Float = 1.0f
+
+    /**
+     * Define a scale gesture detector to respond to pinch events and call setZoom on
+     * Camera.Parameters.
+     */
+    private val scaleGestureListener =
+        object : ScaleGestureDetector.SimpleOnScaleGestureListener() {
+            override fun onScaleBegin(detector: ScaleGestureDetector): Boolean = hasZoomSupport()
+
+            override fun onScale(detector: ScaleGestureDetector): Boolean {
+                // Set the zoom level
+                startZoom(detector.scaleFactor)
+                return true
+            }
+        }
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         Log.d(TAG, "onCreate()")
@@ -394,6 +414,7 @@
         enableUiControl(false)
         setupUiControl()
         setupVideoStabilizationModeView()
+        enableZoomGesture()
     }
 
     private fun setupForRequestMode() {
@@ -578,6 +599,13 @@
         findViewById