diff --git a/app/Android.bp b/app/Android.bp
index 16034006..44e9645f 100644
--- a/app/Android.bp
+++ b/app/Android.bp
@@ -41,6 +41,7 @@ android_app {
"Flash_androidx.camera_camera-lifecycle",
"Flash_androidx.camera_camera-video",
"Flash_androidx.camera_camera-view",
+ "Flash_androidx.camera_camera-viewfinder",
"Flash_androidx.camera_camera-extensions",
"Flash_androidx.media3_media3-exoplayer",
"Flash_androidx.media3_media3-ui",
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index e7e50cd6..4654e648 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -84,7 +84,7 @@ dependencies {
implementation("com.google.android.material:material:1.9.0")
// CameraX core library using the camera2 implementation
- val cameraxVersion = "1.4.0-alpha05"
+ val cameraxVersion = "1.4.0-beta01"
// The following line is optional, as the core library is included indirectly by camera-camera2
implementation("androidx.camera:camera-core:${cameraxVersion}")
implementation("androidx.camera:camera-camera2:${cameraxVersion}")
@@ -94,6 +94,8 @@ dependencies {
implementation("androidx.camera:camera-video:${cameraxVersion}")
// If you want to additionally use the CameraX View class
implementation("androidx.camera:camera-view:${cameraxVersion}")
+ // If you want to additionally use the CameraX Viewfinder class
+ implementation("androidx.camera:camera-viewfinder:1.4.0-alpha06")
// If you want to additionally use the CameraX Extensions library
implementation("androidx.camera:camera-extensions:${cameraxVersion}")
diff --git a/app/libs/Android.bp b/app/libs/Android.bp
index 2a3191c2..148f4e8a 100644
--- a/app/libs/Android.bp
+++ b/app/libs/Android.bp
@@ -7,7 +7,7 @@
android_library_import {
name: "Flash_androidx.camera_camera-camera2-nodeps",
- aars: ["androidx/camera/camera-camera2/1.4.0-alpha05/camera-camera2-1.4.0-alpha05.aar"],
+ aars: ["androidx/camera/camera-camera2/1.4.0-beta01/camera-camera2-1.4.0-beta01.aar"],
sdk_version: "34",
min_sdk_version: "14",
apex_available: [
@@ -32,7 +32,7 @@ android_library {
"//apex_available:platform",
"//apex_available:anyapex",
],
- manifest: "androidx/camera/camera-camera2/1.4.0-alpha05/AndroidManifest.xml",
+ manifest: "androidx/camera/camera-camera2/1.4.0-beta01/AndroidManifest.xml",
static_libs: [
"Flash_androidx.camera_camera-camera2-nodeps",
"Flash_androidx.camera_camera-core",
@@ -47,7 +47,7 @@ android_library {
android_library_import {
name: "Flash_androidx.camera_camera-core-nodeps",
- aars: ["androidx/camera/camera-core/1.4.0-alpha05/camera-core-1.4.0-alpha05.aar"],
+ aars: ["androidx/camera/camera-core/1.4.0-beta01/camera-core-1.4.0-beta01.aar"],
sdk_version: "34",
min_sdk_version: "14",
apex_available: [
@@ -79,7 +79,7 @@ android_library {
"//apex_available:platform",
"//apex_available:anyapex",
],
- manifest: "androidx/camera/camera-core/1.4.0-alpha05/AndroidManifest.xml",
+ manifest: "androidx/camera/camera-core/1.4.0-beta01/AndroidManifest.xml",
static_libs: [
"Flash_androidx.camera_camera-core-nodeps",
"Flash_androidx.lifecycle_lifecycle-common",
@@ -100,7 +100,7 @@ android_library {
android_library_import {
name: "Flash_androidx.camera_camera-extensions-nodeps",
- aars: ["androidx/camera/camera-extensions/1.4.0-alpha05/camera-extensions-1.4.0-alpha05.aar"],
+ aars: ["androidx/camera/camera-extensions/1.4.0-beta01/camera-extensions-1.4.0-beta01.aar"],
sdk_version: "34",
min_sdk_version: "14",
apex_available: [
@@ -124,7 +124,7 @@ android_library {
"//apex_available:platform",
"//apex_available:anyapex",
],
- manifest: "androidx/camera/camera-extensions/1.4.0-alpha05/AndroidManifest.xml",
+ manifest: "androidx/camera/camera-extensions/1.4.0-beta01/AndroidManifest.xml",
static_libs: [
"Flash_androidx.camera_camera-extensions-nodeps",
"Flash_androidx.camera_camera-core",
@@ -138,7 +138,7 @@ android_library {
android_library_import {
name: "Flash_androidx.camera_camera-lifecycle-nodeps",
- aars: ["androidx/camera/camera-lifecycle/1.4.0-alpha05/camera-lifecycle-1.4.0-alpha05.aar"],
+ aars: ["androidx/camera/camera-lifecycle/1.4.0-beta01/camera-lifecycle-1.4.0-beta01.aar"],
sdk_version: "34",
min_sdk_version: "14",
apex_available: [
@@ -165,7 +165,7 @@ android_library {
"//apex_available:platform",
"//apex_available:anyapex",
],
- manifest: "androidx/camera/camera-lifecycle/1.4.0-alpha05/AndroidManifest.xml",
+ manifest: "androidx/camera/camera-lifecycle/1.4.0-beta01/AndroidManifest.xml",
static_libs: [
"Flash_androidx.camera_camera-lifecycle-nodeps",
"Flash_androidx.camera_camera-core",
@@ -182,7 +182,7 @@ android_library {
android_library_import {
name: "Flash_androidx.camera_camera-video-nodeps",
- aars: ["androidx/camera/camera-video/1.4.0-alpha05/camera-video-1.4.0-alpha05.aar"],
+ aars: ["androidx/camera/camera-video/1.4.0-beta01/camera-video-1.4.0-beta01.aar"],
sdk_version: "34",
min_sdk_version: "14",
apex_available: [
@@ -206,7 +206,7 @@ android_library {
"//apex_available:platform",
"//apex_available:anyapex",
],
- manifest: "androidx/camera/camera-video/1.4.0-alpha05/AndroidManifest.xml",
+ manifest: "androidx/camera/camera-video/1.4.0-beta01/AndroidManifest.xml",
static_libs: [
"Flash_androidx.camera_camera-video-nodeps",
"Flash_androidx.camera_camera-core",
@@ -220,7 +220,7 @@ android_library {
android_library_import {
name: "Flash_androidx.camera_camera-view-nodeps",
- aars: ["androidx/camera/camera-view/1.4.0-alpha05/camera-view-1.4.0-alpha05.aar"],
+ aars: ["androidx/camera/camera-view/1.4.0-beta01/camera-view-1.4.0-beta01.aar"],
sdk_version: "34",
min_sdk_version: "14",
apex_available: [
@@ -231,7 +231,6 @@ android_library_import {
"Flash_androidx.camera_camera-core",
"Flash_androidx.camera_camera-lifecycle",
"Flash_androidx.camera_camera-video",
- "Flash_androidx.camera_camera-viewfinder-core",
"Flash_androidx.lifecycle_lifecycle-common",
"androidx.annotation_annotation",
"androidx.annotation_annotation-experimental",
@@ -251,13 +250,12 @@ android_library {
"//apex_available:platform",
"//apex_available:anyapex",
],
- manifest: "androidx/camera/camera-view/1.4.0-alpha05/AndroidManifest.xml",
+ manifest: "androidx/camera/camera-view/1.4.0-beta01/AndroidManifest.xml",
static_libs: [
"Flash_androidx.camera_camera-view-nodeps",
"Flash_androidx.camera_camera-core",
"Flash_androidx.camera_camera-lifecycle",
"Flash_androidx.camera_camera-video",
- "Flash_androidx.camera_camera-viewfinder-core",
"Flash_androidx.lifecycle_lifecycle-common",
"androidx.annotation_annotation",
"androidx.annotation_annotation-experimental",
@@ -270,9 +268,61 @@ android_library {
java_version: "1.7",
}
+android_library_import {
+ name: "Flash_androidx.camera_camera-viewfinder-nodeps",
+ aars: ["androidx/camera/camera-viewfinder/1.4.0-alpha06/camera-viewfinder-1.4.0-alpha06.aar"],
+ sdk_version: "34",
+ min_sdk_version: "14",
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ static_libs: [
+ "Flash_androidx.camera_camera-viewfinder-core",
+ "androidx.annotation_annotation",
+ "androidx.annotation_annotation-experimental",
+ "androidx.appcompat_appcompat",
+ "androidx.concurrent_concurrent-futures",
+ "androidx.concurrent_concurrent-futures-ktx",
+ "androidx.core_core",
+ "androidx.test.espresso.idling-resource",
+ "auto_value_annotations",
+ "guava",
+ "kotlinx-coroutines-android",
+ "kotlinx-coroutines-core",
+ ],
+}
+
+android_library {
+ name: "Flash_androidx.camera_camera-viewfinder",
+ sdk_version: "34",
+ min_sdk_version: "14",
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ manifest: "androidx/camera/camera-viewfinder/1.4.0-alpha06/AndroidManifest.xml",
+ static_libs: [
+ "Flash_androidx.camera_camera-viewfinder-nodeps",
+ "Flash_androidx.camera_camera-viewfinder-core",
+ "androidx.annotation_annotation",
+ "androidx.annotation_annotation-experimental",
+ "androidx.appcompat_appcompat",
+ "androidx.concurrent_concurrent-futures",
+ "androidx.concurrent_concurrent-futures-ktx",
+ "androidx.core_core",
+ "androidx.test.espresso.idling-resource",
+ "auto_value_annotations",
+ "guava",
+ "kotlinx-coroutines-android",
+ "kotlinx-coroutines-core",
+ ],
+ java_version: "1.7",
+}
+
android_library_import {
name: "Flash_androidx.camera_camera-viewfinder-core-nodeps",
- aars: ["androidx/camera/camera-viewfinder-core/1.4.0-alpha05/camera-viewfinder-core-1.4.0-alpha05.aar"],
+ aars: ["androidx/camera/camera-viewfinder-core/1.4.0-alpha06/camera-viewfinder-core-1.4.0-alpha06.aar"],
sdk_version: "34",
min_sdk_version: "14",
apex_available: [
@@ -302,7 +352,7 @@ android_library {
"//apex_available:platform",
"//apex_available:anyapex",
],
- manifest: "androidx/camera/camera-viewfinder-core/1.4.0-alpha05/AndroidManifest.xml",
+ manifest: "androidx/camera/camera-viewfinder-core/1.4.0-alpha06/AndroidManifest.xml",
static_libs: [
"Flash_androidx.camera_camera-viewfinder-core-nodeps",
"androidx.annotation_annotation",
diff --git a/app/libs/androidx/camera/camera-camera2/1.4.0-alpha05/camera-camera2-1.4.0-alpha05.aar b/app/libs/androidx/camera/camera-camera2/1.4.0-alpha05/camera-camera2-1.4.0-alpha05.aar
deleted file mode 100644
index 91b626dc..00000000
Binary files a/app/libs/androidx/camera/camera-camera2/1.4.0-alpha05/camera-camera2-1.4.0-alpha05.aar and /dev/null differ
diff --git a/app/libs/androidx/camera/camera-camera2/1.4.0-alpha05/AndroidManifest.xml b/app/libs/androidx/camera/camera-camera2/1.4.0-beta01/AndroidManifest.xml
similarity index 96%
rename from app/libs/androidx/camera/camera-camera2/1.4.0-alpha05/AndroidManifest.xml
rename to app/libs/androidx/camera/camera-camera2/1.4.0-beta01/AndroidManifest.xml
index ac4e478d..13fc0c54 100644
--- a/app/libs/androidx/camera/camera-camera2/1.4.0-alpha05/AndroidManifest.xml
+++ b/app/libs/androidx/camera/camera-camera2/1.4.0-beta01/AndroidManifest.xml
@@ -18,7 +18,7 @@ limitations under the License.
xmlns:tools="http://schemas.android.com/tools"
package="androidx.camera.camera2" >
-
+
-
+
diff --git a/app/libs/androidx/camera/camera-core/1.4.0-alpha05/AndroidManifest.xml.license b/app/libs/androidx/camera/camera-core/1.4.0-beta01/AndroidManifest.xml.license
similarity index 100%
rename from app/libs/androidx/camera/camera-core/1.4.0-alpha05/AndroidManifest.xml.license
rename to app/libs/androidx/camera/camera-core/1.4.0-beta01/AndroidManifest.xml.license
diff --git a/app/libs/androidx/camera/camera-core/1.4.0-beta01/camera-core-1.4.0-beta01.aar b/app/libs/androidx/camera/camera-core/1.4.0-beta01/camera-core-1.4.0-beta01.aar
new file mode 100644
index 00000000..23afec3c
Binary files /dev/null and b/app/libs/androidx/camera/camera-core/1.4.0-beta01/camera-core-1.4.0-beta01.aar differ
diff --git a/app/libs/androidx/camera/camera-core/1.4.0-alpha05/camera-core-1.4.0-alpha05.aar.license b/app/libs/androidx/camera/camera-core/1.4.0-beta01/camera-core-1.4.0-beta01.aar.license
similarity index 100%
rename from app/libs/androidx/camera/camera-core/1.4.0-alpha05/camera-core-1.4.0-alpha05.aar.license
rename to app/libs/androidx/camera/camera-core/1.4.0-beta01/camera-core-1.4.0-beta01.aar.license
diff --git a/app/libs/androidx/camera/camera-extensions/1.4.0-alpha05/AndroidManifest.xml b/app/libs/androidx/camera/camera-extensions/1.4.0-beta01/AndroidManifest.xml
similarity index 96%
rename from app/libs/androidx/camera/camera-extensions/1.4.0-alpha05/AndroidManifest.xml
rename to app/libs/androidx/camera/camera-extensions/1.4.0-beta01/AndroidManifest.xml
index 945450c6..5b60f002 100644
--- a/app/libs/androidx/camera/camera-extensions/1.4.0-alpha05/AndroidManifest.xml
+++ b/app/libs/androidx/camera/camera-extensions/1.4.0-beta01/AndroidManifest.xml
@@ -17,7 +17,7 @@
-
+
diff --git a/app/libs/androidx/camera/camera-extensions/1.4.0-alpha05/AndroidManifest.xml.license b/app/libs/androidx/camera/camera-extensions/1.4.0-beta01/AndroidManifest.xml.license
similarity index 100%
rename from app/libs/androidx/camera/camera-extensions/1.4.0-alpha05/AndroidManifest.xml.license
rename to app/libs/androidx/camera/camera-extensions/1.4.0-beta01/AndroidManifest.xml.license
diff --git a/app/libs/androidx/camera/camera-extensions/1.4.0-alpha05/camera-extensions-1.4.0-alpha05.aar b/app/libs/androidx/camera/camera-extensions/1.4.0-beta01/camera-extensions-1.4.0-beta01.aar
similarity index 74%
rename from app/libs/androidx/camera/camera-extensions/1.4.0-alpha05/camera-extensions-1.4.0-alpha05.aar
rename to app/libs/androidx/camera/camera-extensions/1.4.0-beta01/camera-extensions-1.4.0-beta01.aar
index dfce5773..30557568 100644
Binary files a/app/libs/androidx/camera/camera-extensions/1.4.0-alpha05/camera-extensions-1.4.0-alpha05.aar and b/app/libs/androidx/camera/camera-extensions/1.4.0-beta01/camera-extensions-1.4.0-beta01.aar differ
diff --git a/app/libs/androidx/camera/camera-extensions/1.4.0-alpha05/camera-extensions-1.4.0-alpha05.aar.license b/app/libs/androidx/camera/camera-extensions/1.4.0-beta01/camera-extensions-1.4.0-beta01.aar.license
similarity index 100%
rename from app/libs/androidx/camera/camera-extensions/1.4.0-alpha05/camera-extensions-1.4.0-alpha05.aar.license
rename to app/libs/androidx/camera/camera-extensions/1.4.0-beta01/camera-extensions-1.4.0-beta01.aar.license
diff --git a/app/libs/androidx/camera/camera-lifecycle/1.4.0-alpha05/AndroidManifest.xml b/app/libs/androidx/camera/camera-lifecycle/1.4.0-beta01/AndroidManifest.xml
similarity index 78%
rename from app/libs/androidx/camera/camera-lifecycle/1.4.0-alpha05/AndroidManifest.xml
rename to app/libs/androidx/camera/camera-lifecycle/1.4.0-beta01/AndroidManifest.xml
index a3113641..a57761ea 100644
--- a/app/libs/androidx/camera/camera-lifecycle/1.4.0-alpha05/AndroidManifest.xml
+++ b/app/libs/androidx/camera/camera-lifecycle/1.4.0-beta01/AndroidManifest.xml
@@ -2,6 +2,6 @@
-
+
\ No newline at end of file
diff --git a/app/libs/androidx/camera/camera-lifecycle/1.4.0-alpha05/AndroidManifest.xml.license b/app/libs/androidx/camera/camera-lifecycle/1.4.0-beta01/AndroidManifest.xml.license
similarity index 100%
rename from app/libs/androidx/camera/camera-lifecycle/1.4.0-alpha05/AndroidManifest.xml.license
rename to app/libs/androidx/camera/camera-lifecycle/1.4.0-beta01/AndroidManifest.xml.license
diff --git a/app/libs/androidx/camera/camera-lifecycle/1.4.0-alpha05/camera-lifecycle-1.4.0-alpha05.aar b/app/libs/androidx/camera/camera-lifecycle/1.4.0-beta01/camera-lifecycle-1.4.0-beta01.aar
similarity index 53%
rename from app/libs/androidx/camera/camera-lifecycle/1.4.0-alpha05/camera-lifecycle-1.4.0-alpha05.aar
rename to app/libs/androidx/camera/camera-lifecycle/1.4.0-beta01/camera-lifecycle-1.4.0-beta01.aar
index 3451a7ba..a6f20e6c 100644
Binary files a/app/libs/androidx/camera/camera-lifecycle/1.4.0-alpha05/camera-lifecycle-1.4.0-alpha05.aar and b/app/libs/androidx/camera/camera-lifecycle/1.4.0-beta01/camera-lifecycle-1.4.0-beta01.aar differ
diff --git a/app/libs/androidx/camera/camera-lifecycle/1.4.0-alpha05/camera-lifecycle-1.4.0-alpha05.aar.license b/app/libs/androidx/camera/camera-lifecycle/1.4.0-beta01/camera-lifecycle-1.4.0-beta01.aar.license
similarity index 100%
rename from app/libs/androidx/camera/camera-lifecycle/1.4.0-alpha05/camera-lifecycle-1.4.0-alpha05.aar.license
rename to app/libs/androidx/camera/camera-lifecycle/1.4.0-beta01/camera-lifecycle-1.4.0-beta01.aar.license
diff --git a/app/libs/androidx/camera/camera-video/1.4.0-alpha05/camera-video-1.4.0-alpha05.aar b/app/libs/androidx/camera/camera-video/1.4.0-alpha05/camera-video-1.4.0-alpha05.aar
deleted file mode 100644
index e5682c67..00000000
Binary files a/app/libs/androidx/camera/camera-video/1.4.0-alpha05/camera-video-1.4.0-alpha05.aar and /dev/null differ
diff --git a/app/libs/androidx/camera/camera-video/1.4.0-alpha05/AndroidManifest.xml b/app/libs/androidx/camera/camera-video/1.4.0-beta01/AndroidManifest.xml
similarity index 78%
rename from app/libs/androidx/camera/camera-video/1.4.0-alpha05/AndroidManifest.xml
rename to app/libs/androidx/camera/camera-video/1.4.0-beta01/AndroidManifest.xml
index 20f51b3f..fdaa9c9d 100644
--- a/app/libs/androidx/camera/camera-video/1.4.0-alpha05/AndroidManifest.xml
+++ b/app/libs/androidx/camera/camera-video/1.4.0-beta01/AndroidManifest.xml
@@ -2,6 +2,6 @@
-
+
\ No newline at end of file
diff --git a/app/libs/androidx/camera/camera-video/1.4.0-alpha05/AndroidManifest.xml.license b/app/libs/androidx/camera/camera-video/1.4.0-beta01/AndroidManifest.xml.license
similarity index 100%
rename from app/libs/androidx/camera/camera-video/1.4.0-alpha05/AndroidManifest.xml.license
rename to app/libs/androidx/camera/camera-video/1.4.0-beta01/AndroidManifest.xml.license
diff --git a/app/libs/androidx/camera/camera-video/1.4.0-beta01/camera-video-1.4.0-beta01.aar b/app/libs/androidx/camera/camera-video/1.4.0-beta01/camera-video-1.4.0-beta01.aar
new file mode 100644
index 00000000..28dbbd5c
Binary files /dev/null and b/app/libs/androidx/camera/camera-video/1.4.0-beta01/camera-video-1.4.0-beta01.aar differ
diff --git a/app/libs/androidx/camera/camera-video/1.4.0-alpha05/camera-video-1.4.0-alpha05.aar.license b/app/libs/androidx/camera/camera-video/1.4.0-beta01/camera-video-1.4.0-beta01.aar.license
similarity index 100%
rename from app/libs/androidx/camera/camera-video/1.4.0-alpha05/camera-video-1.4.0-alpha05.aar.license
rename to app/libs/androidx/camera/camera-video/1.4.0-beta01/camera-video-1.4.0-beta01.aar.license
diff --git a/app/libs/androidx/camera/camera-view/1.4.0-alpha05/camera-view-1.4.0-alpha05.aar b/app/libs/androidx/camera/camera-view/1.4.0-alpha05/camera-view-1.4.0-alpha05.aar
deleted file mode 100644
index bc2d9300..00000000
Binary files a/app/libs/androidx/camera/camera-view/1.4.0-alpha05/camera-view-1.4.0-alpha05.aar and /dev/null differ
diff --git a/app/libs/androidx/camera/camera-view/1.4.0-alpha05/AndroidManifest.xml b/app/libs/androidx/camera/camera-view/1.4.0-beta01/AndroidManifest.xml
similarity index 78%
rename from app/libs/androidx/camera/camera-view/1.4.0-alpha05/AndroidManifest.xml
rename to app/libs/androidx/camera/camera-view/1.4.0-beta01/AndroidManifest.xml
index ef780fcf..3c71adb1 100644
--- a/app/libs/androidx/camera/camera-view/1.4.0-alpha05/AndroidManifest.xml
+++ b/app/libs/androidx/camera/camera-view/1.4.0-beta01/AndroidManifest.xml
@@ -2,6 +2,6 @@
-
+
\ No newline at end of file
diff --git a/app/libs/androidx/camera/camera-view/1.4.0-alpha05/AndroidManifest.xml.license b/app/libs/androidx/camera/camera-view/1.4.0-beta01/AndroidManifest.xml.license
similarity index 100%
rename from app/libs/androidx/camera/camera-view/1.4.0-alpha05/AndroidManifest.xml.license
rename to app/libs/androidx/camera/camera-view/1.4.0-beta01/AndroidManifest.xml.license
diff --git a/app/libs/androidx/camera/camera-view/1.4.0-beta01/camera-view-1.4.0-beta01.aar b/app/libs/androidx/camera/camera-view/1.4.0-beta01/camera-view-1.4.0-beta01.aar
new file mode 100644
index 00000000..5e98d358
Binary files /dev/null and b/app/libs/androidx/camera/camera-view/1.4.0-beta01/camera-view-1.4.0-beta01.aar differ
diff --git a/app/libs/androidx/camera/camera-view/1.4.0-alpha05/camera-view-1.4.0-alpha05.aar.license b/app/libs/androidx/camera/camera-view/1.4.0-beta01/camera-view-1.4.0-beta01.aar.license
similarity index 100%
rename from app/libs/androidx/camera/camera-view/1.4.0-alpha05/camera-view-1.4.0-alpha05.aar.license
rename to app/libs/androidx/camera/camera-view/1.4.0-beta01/camera-view-1.4.0-beta01.aar.license
diff --git a/app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha05/camera-viewfinder-core-1.4.0-alpha05.aar b/app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha05/camera-viewfinder-core-1.4.0-alpha05.aar
deleted file mode 100644
index cf7c5615..00000000
Binary files a/app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha05/camera-viewfinder-core-1.4.0-alpha05.aar and /dev/null differ
diff --git a/app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha05/AndroidManifest.xml b/app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha06/AndroidManifest.xml
similarity index 79%
rename from app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha05/AndroidManifest.xml
rename to app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha06/AndroidManifest.xml
index f06fa247..15f9973f 100644
--- a/app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha05/AndroidManifest.xml
+++ b/app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha06/AndroidManifest.xml
@@ -2,6 +2,6 @@
-
+
\ No newline at end of file
diff --git a/app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha05/AndroidManifest.xml.license b/app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha06/AndroidManifest.xml.license
similarity index 100%
rename from app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha05/AndroidManifest.xml.license
rename to app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha06/AndroidManifest.xml.license
diff --git a/app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha06/camera-viewfinder-core-1.4.0-alpha06.aar b/app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha06/camera-viewfinder-core-1.4.0-alpha06.aar
new file mode 100644
index 00000000..55fc402b
Binary files /dev/null and b/app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha06/camera-viewfinder-core-1.4.0-alpha06.aar differ
diff --git a/app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha05/camera-viewfinder-core-1.4.0-alpha05.aar.license b/app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha06/camera-viewfinder-core-1.4.0-alpha06.aar.license
similarity index 100%
rename from app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha05/camera-viewfinder-core-1.4.0-alpha05.aar.license
rename to app/libs/androidx/camera/camera-viewfinder-core/1.4.0-alpha06/camera-viewfinder-core-1.4.0-alpha06.aar.license
diff --git a/app/libs/androidx/camera/camera-viewfinder/1.4.0-alpha06/AndroidManifest.xml b/app/libs/androidx/camera/camera-viewfinder/1.4.0-alpha06/AndroidManifest.xml
new file mode 100644
index 00000000..ab9e6ffd
--- /dev/null
+++ b/app/libs/androidx/camera/camera-viewfinder/1.4.0-alpha06/AndroidManifest.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/libs/androidx/camera/camera-viewfinder/1.4.0-alpha06/AndroidManifest.xml.license b/app/libs/androidx/camera/camera-viewfinder/1.4.0-alpha06/AndroidManifest.xml.license
new file mode 100644
index 00000000..9673da87
--- /dev/null
+++ b/app/libs/androidx/camera/camera-viewfinder/1.4.0-alpha06/AndroidManifest.xml.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2022-2024 The Android Open Source Project
+
+SPDX-License-Identifier: Apache-2.0
diff --git a/app/libs/androidx/camera/camera-viewfinder/1.4.0-alpha06/camera-viewfinder-1.4.0-alpha06.aar b/app/libs/androidx/camera/camera-viewfinder/1.4.0-alpha06/camera-viewfinder-1.4.0-alpha06.aar
new file mode 100644
index 00000000..3a8e283c
Binary files /dev/null and b/app/libs/androidx/camera/camera-viewfinder/1.4.0-alpha06/camera-viewfinder-1.4.0-alpha06.aar differ
diff --git a/app/libs/androidx/camera/camera-viewfinder/1.4.0-alpha06/camera-viewfinder-1.4.0-alpha06.aar.license b/app/libs/androidx/camera/camera-viewfinder/1.4.0-alpha06/camera-viewfinder-1.4.0-alpha06.aar.license
new file mode 100644
index 00000000..9673da87
--- /dev/null
+++ b/app/libs/androidx/camera/camera-viewfinder/1.4.0-alpha06/camera-viewfinder-1.4.0-alpha06.aar.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2022-2024 The Android Open Source Project
+
+SPDX-License-Identifier: Apache-2.0
diff --git a/app/src/main/java/androidx/camera/viewfinder/core/ZoomGestureDetector.kt b/app/src/main/java/androidx/camera/viewfinder/core/ZoomGestureDetector.kt
deleted file mode 100644
index 0b7d4aee..00000000
--- a/app/src/main/java/androidx/camera/viewfinder/core/ZoomGestureDetector.kt
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- * 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.
- */
-
-package androidx.camera.viewfinder.core
-
-import android.annotation.SuppressLint
-import android.content.Context
-import android.view.GestureDetector
-import android.view.MotionEvent
-import android.view.View
-import android.view.ViewConfiguration
-import androidx.annotation.IntDef
-import androidx.annotation.RequiresApi
-import androidx.annotation.RestrictTo
-import androidx.annotation.UiThread
-import androidx.camera.viewfinder.core.ZoomGestureDetector.OnZoomGestureListener
-import kotlin.math.abs
-import kotlin.math.hypot
-
-/**
- * Detector that interprets [MotionEvent]s and notify users when a zooming gesture has occurred.
- *
- * To use this class to do pinch-to-zoom on the viewfinder:
- * - In the [OnZoomGestureListener.onZoomEvent], get the [scaleFactor] and set it to
- * `CameraControl.setZoomRatio` if the factor is in the range of `ZoomState.getMinZoomRatio` and
- * `ZoomState.getMaxZoomRatio`. Then create an instance of the `ZoomGestureDetector` with the
- * [OnZoomGestureListener].
- * - In the [View.onTouchEvent], call [onTouchEvent] and pass the [MotionEvent]s to the
- * `ZoomGestureDetector`.
- *
- * @constructor Creates a ZoomGestureDetector for detecting zooming gesture.
- * @param context The application context.
- * @param spanSlop The distance in pixels touches can wander before a gesture to be interpreted
- * as zooming.
- * @param minSpan The distance in pixels between touches that must be reached for a gesture to be
- * interpreted as zooming.
- * @param listener The listener to receive the callback.
- * @sample androidx.camera.viewfinder.core.samples.onTouchEventSample
- */
-@RequiresApi(21) // TODO(b/200306659): Remove and replace with annotation on package-info.java
-class ZoomGestureDetector @SuppressLint("ExecutorRegistration") @JvmOverloads constructor(
- private val context: Context,
- private val spanSlop: Int = ViewConfiguration.get(context).scaledTouchSlop * 2,
- private val minSpan: Int = DEFAULT_MIN_SPAN,
- private val listener: OnZoomGestureListener
-) {
- /**
- * The listener for receiving notifications when gestures occur.
- *
- * An application will receive events in the following order:
- * - One [ZOOM_GESTURE_BEGIN]
- * - Zero or more [ZOOM_GESTURE_MOVE]
- * - One [ZOOM_GESTURE_END]
- */
- fun interface OnZoomGestureListener {
- /**
- * Responds to the events of a zooming gesture.
- *
- * Return `true` to indicate the event is handled by the listener.
- * - For [ZOOM_GESTURE_MOVE] events, the detector will continue to accumulate movement if
- * it's not handled. This can be useful if an application, for example, only wants to update
- * scaling factors if the change is greater than `0.01`.
- * - For [ZOOM_GESTURE_BEGIN] events, the detector will ignore the rest of the gesture if
- * it's not handled. For example, if a gesture is beginning with a focal point outside of a
- * region where it makes sense, [ZOOM_GESTURE_BEGIN] event may return `false` to ignore the
- * rest of the gesture.
- * - For [ZOOM_GESTURE_END] events, the return value is ignored and the zoom gesture will
- * end regardless of what is returned.
- *
- * Once receiving [ZOOM_GESTURE_END] event, [focusX] and [focusY] will return focal point of
- * the pointers remaining on the screen.
- *
- * @param type The type of the event. Possible values include [ZOOM_GESTURE_MOVE],
- * [ZOOM_GESTURE_BEGIN] and [ZOOM_GESTURE_END].
- * @param detector The detector reporting the event - use this to retrieve extended info
- * about event state.
- * @return Whether or not the detector should consider this event as handled.
- */
- @UiThread
- fun onZoomEvent(@ZoomGesture type: Int, detector: ZoomGestureDetector): Boolean
- }
-
- /**
- * The X coordinate of the current gesture's focal point in pixels. If a gesture is in progress,
- * the focal point is between each of the pointers forming the gesture.
- *
- * If [isInProgress] would return `false`, the result of this function is undefined.
- */
- var focusX = 0f
- private set
-
- /**
- * The Y coordinate of the current gesture's focal point in pixels. If a gesture is in progress,
- * the focal point is between each of the pointers forming the gesture.
- *
- * If [isInProgress] would return `false`, the result of this function is undefined.
- */
- var focusY = 0f
- private set
-
- /**
- * Whether the quick zoom gesture, in which the user performs a double tap followed by a swipe,
- * should perform zooming.
- *
- * If not set, this is enabled by default.
- */
- var isQuickZoomEnabled: Boolean = true
-
- /**
- * Whether the stylus zoom gesture, in which the user uses a stylus and presses the button,
- * should perform zooming.
- *
- * If not set, this is enabled by default.
- */
- var isStylusZoomEnabled = true
-
- /**
- * The average distance in pixels between each of the pointers forming the gesture in progress
- * through the focal point.
- */
- private var currentSpan = 0f
-
- /**
- * The previous average distance in pixels between each of the pointers forming the gesture in
- * progress through the focal point.
- */
- private var previousSpan = 0f
-
- /**
- * The average X distance in pixels between each of the pointers forming the gesture in progress
- * through the focal point.
- */
- private var currentSpanX = 0f
-
- /**
- * The average Y distance in pixels between each of the pointers forming the gesture in progress
- * through the focal point.
- */
- private var currentSpanY = 0f
-
- /**
- * The previous average X distance in pixels between each of the pointers forming the gesture in
- * progress through the focal point.
- */
- private var previousSpanX = 0f
-
- /**
- * The previous average Y distance in pixels between each of the pointers forming the gesture in
- * progress through the focal point.
- */
- private var previousSpanY = 0f
-
- /**
- * The event time in milliseconds of the current event being processed.
- */
- var eventTime: Long = 0
- private set
-
- /**
- * Whether a zoom gesture is in progress.
- */
- var isInProgress = false
- private set
-
- private var initialSpan = 0f
- private var prevTime: Long = 0
- private var anchoredZoomStartX = 0f
- private var anchoredZoomStartY = 0f
- private var anchoredZoomMode = ANCHORED_ZOOM_MODE_NONE
- private var gestureDetector: GestureDetector =
- GestureDetector(context, object : GestureDetector.SimpleOnGestureListener() {
- override fun onDoubleTap(e: MotionEvent): Boolean {
- // Double tap: start watching for a swipe
- anchoredZoomStartX = e.x
- anchoredZoomStartY = e.y
- anchoredZoomMode = ANCHORED_ZOOM_MODE_DOUBLE_TAP
- return true
- }
- })
- private var eventBeforeOrAboveStartingGestureEvent = false
-
- /**
- * Accepts [MotionEvent]s and dispatches events to a [OnZoomGestureListener] when appropriate.
- *
- * Applications should pass a complete and consistent event stream to this method.
- *
- * A complete and consistent event stream involves all [MotionEvent]s from the initial
- * [MotionEvent.ACTION_DOWN] to the final [MotionEvent.ACTION_UP] or
- * [MotionEvent.ACTION_CANCEL].
- *
- * @param event The event to process.
- * @return `true` if the event was processed and the detector wants to receive the
- * rest of the [MotionEvent]s in this event stream. Return it in the [View.onTouchEvent] for a
- * normal use case.
- */
- @UiThread
- fun onTouchEvent(event: MotionEvent): Boolean {
- eventTime = event.eventTime
-
- val action = event.actionMasked
-
- // Forward the event to check for double tap gesture
- if (isQuickZoomEnabled) {
- gestureDetector.onTouchEvent(event)
- }
-
- val count = event.pointerCount
- val isStylusButtonDown = (event.buttonState and MotionEvent.BUTTON_STYLUS_PRIMARY) != 0
-
- val anchoredZoomCancelled =
- anchoredZoomMode == ANCHORED_ZOOM_MODE_STYLUS && !isStylusButtonDown
- val streamComplete = action == MotionEvent.ACTION_UP ||
- action == MotionEvent.ACTION_CANCEL ||
- anchoredZoomCancelled
-
- if (action == MotionEvent.ACTION_DOWN || streamComplete) {
- // Reset any scale in progress with the listener.
- // If it's an ACTION_DOWN we're beginning a new event stream.
- // This means the app probably didn't give us all the events.
- if (isInProgress) {
- listener.onZoomEvent(ZOOM_GESTURE_END, this)
- isInProgress = false
- initialSpan = 0f
- anchoredZoomMode = ANCHORED_ZOOM_MODE_NONE
- } else if (inAnchoredZoomMode() && streamComplete) {
- isInProgress = false
- initialSpan = 0f
- anchoredZoomMode = ANCHORED_ZOOM_MODE_NONE
- }
- if (streamComplete) {
- return true
- }
- }
-
- if (!isInProgress &&
- isStylusZoomEnabled &&
- !inAnchoredZoomMode() &&
- !streamComplete &&
- isStylusButtonDown) {
- // Start of a button zoom gesture
- anchoredZoomStartX = event.x
- anchoredZoomStartY = event.y
- anchoredZoomMode = ANCHORED_ZOOM_MODE_STYLUS
- initialSpan = 0f
- }
-
- val configChanged = action == MotionEvent.ACTION_DOWN ||
- action == MotionEvent.ACTION_POINTER_UP ||
- action == MotionEvent.ACTION_POINTER_DOWN ||
- anchoredZoomCancelled
-
- val pointerUp = action == MotionEvent.ACTION_POINTER_UP
- val skipIndex = if (pointerUp) event.actionIndex else -1
-
- // Determine focal point
- var sumX = 0f
- var sumY = 0f
- val div = if (pointerUp) count - 1 else count
- val focusX: Float
- val focusY: Float
- if (inAnchoredZoomMode()) {
- // In anchored scale mode, the focal pt is always where the double tap
- // or button down gesture started
- focusX = anchoredZoomStartX
- focusY = anchoredZoomStartY
- eventBeforeOrAboveStartingGestureEvent = if (event.y < focusY) {
- true
- } else {
- false
- }
- } else {
- for (i in 0 until count) {
- if (skipIndex == i) continue
- sumX += event.getX(i)
- sumY += event.getY(i)
- }
- focusX = sumX / div
- focusY = sumY / div
- }
-
- // Determine average deviation from focal point
- var devSumX = 0f
- var devSumY = 0f
- for (i in 0 until count) {
- if (skipIndex == i) continue
-
- // Convert the resulting diameter into a radius.
- devSumX += abs(event.getX(i) - focusX)
- devSumY += abs(event.getY(i) - focusY)
- }
- val devX = devSumX / div
- val devY = devSumY / div
-
- // Span is the average distance between touch points through the focal point;
- // i.e. the diameter of the circle with a radius of the average deviation from
- // the focal point.
- val spanX = devX * 2
- val spanY = devY * 2
- val span: Float = if (inAnchoredZoomMode()) {
- spanY
- } else {
- hypot(spanX, spanY)
- }
-
- // Dispatch begin/end events as needed.
- // If the configuration changes, notify the app to reset its current state by beginning
- // a fresh zoom event stream.
- val wasInProgress = isInProgress
- this.focusX = focusX
- this.focusY = focusY
- if (!inAnchoredZoomMode() && isInProgress && (span < minSpan || configChanged)) {
- listener.onZoomEvent(ZOOM_GESTURE_END, this)
- isInProgress = false
- initialSpan = span
- }
- if (configChanged) {
- currentSpanX = spanX
- previousSpanX = currentSpanX
- currentSpanY = spanY
- previousSpanY = currentSpanY
- currentSpan = span
- previousSpan = currentSpan
- initialSpan = previousSpan
- }
- val minSpan = if (inAnchoredZoomMode()) spanSlop else minSpan
- if (!isInProgress &&
- span >= minSpan &&
- (wasInProgress || abs(span - initialSpan) > spanSlop)) {
- currentSpanX = spanX
- previousSpanX = currentSpanX
- currentSpanY = spanY
- previousSpanY = currentSpanY
- currentSpan = span
- previousSpan = currentSpan
- prevTime = eventTime
- isInProgress = listener.onZoomEvent(ZOOM_GESTURE_BEGIN, this)
- }
-
- // Handle motion; focal point and span/scale factor are changing.
- if (action == MotionEvent.ACTION_MOVE) {
- currentSpanX = spanX
- currentSpanY = spanY
- currentSpan = span
-
- var updatePrev = true
-
- if (isInProgress) {
- updatePrev = listener.onZoomEvent(ZOOM_GESTURE_MOVE, this)
- }
-
- if (updatePrev) {
- previousSpanX = currentSpanX
- previousSpanY = currentSpanY
- previousSpan = currentSpan
- prevTime = eventTime
- }
- }
- return true
- }
-
- private fun inAnchoredZoomMode(): Boolean {
- return anchoredZoomMode != ANCHORED_ZOOM_MODE_NONE
- }
-
- val scaleFactor: Float
- /**
- * Returns the scaling factor from the previous zoom event to the current event. This value
- * is defined as ([currentSpan] / [previousSpan]).
- *
- * @return The current scaling factor.
- */
- get() {
- if (inAnchoredZoomMode()) {
- // Drag is moving up; the further away from the gesture start, the smaller the span
- // should be, the closer, the larger the span, and therefore the larger the scale
- val scaleUp = eventBeforeOrAboveStartingGestureEvent &&
- currentSpan < previousSpan ||
- !eventBeforeOrAboveStartingGestureEvent &&
- currentSpan > previousSpan
- val spanDiff = (abs(1 - currentSpan / previousSpan) * SCALE_FACTOR)
- return if (previousSpan <= spanSlop) 1.0f
- else if (scaleUp) 1.0f + spanDiff
- else 1.0f - spanDiff
- }
- return if (previousSpan > 0) currentSpan / previousSpan else 1.0f
- }
-
- val timeDelta: Long
- /**
- * Returns the time difference in milliseconds between the previous accepted zooming event
- * and the current zooming event.
- *
- * @return Time difference since the last zooming event in milliseconds.
- */
- get() = eventTime - prevTime
-
- @IntDef(ZOOM_GESTURE_MOVE, ZOOM_GESTURE_BEGIN, ZOOM_GESTURE_END)
- @Retention(AnnotationRetention.SOURCE)
- @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
- annotation class ZoomGesture
-
- companion object {
- /** The moving events of a gesture in progress. Reported by pointer motion. */
- const val ZOOM_GESTURE_MOVE = 0
- /** The beginning of a zoom gesture. Reported by new pointers going down. */
- const val ZOOM_GESTURE_BEGIN = 1
- /** The end of a zoom gesture. Reported by existing pointers going up. */
- const val ZOOM_GESTURE_END = 2
-
- // The default minimum span that the detector interprets a zooming event with. It's set to 0
- // to give the most responsiveness.
- // TODO(b/314702145): define a different span if appropriate.
- private const val DEFAULT_MIN_SPAN = 0
- private const val SCALE_FACTOR = .5f
- private const val ANCHORED_ZOOM_MODE_NONE = 0
- private const val ANCHORED_ZOOM_MODE_DOUBLE_TAP = 1
- private const val ANCHORED_ZOOM_MODE_STYLUS = 2
- }
-}
diff --git a/app/src/main/java/org/lineageos/aperture/CameraActivity.kt b/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
index e49e7ebe..78ad6dc9 100644
--- a/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
+++ b/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
@@ -288,15 +288,26 @@ open class CameraActivity : AppCompatActivity(R.layout.activity_camera) {
})
}
private val zoomGestureDetector by lazy {
- ZoomGestureDetector(this) { type, detector ->
- if (type == ZoomGestureDetector.ZOOM_GESTURE_MOVE) {
- cameraController.onPinchToZoom(detector.scaleFactor)
- handler.removeMessages(MSG_ON_PINCH_TO_ZOOM)
- handler.sendMessageDelayed(handler.obtainMessage(MSG_ON_PINCH_TO_ZOOM), 500)
+ ZoomGestureDetector(this) {
+ when (it) {
+ is ZoomGestureDetector.ZoomEvent.Begin -> {
+ zoomGestureDetectorIsInProgress = true
+ }
+
+ is ZoomGestureDetector.ZoomEvent.Move -> {
+ cameraController.onPinchToZoom(it.scaleFactor)
+ handler.removeMessages(MSG_ON_PINCH_TO_ZOOM)
+ handler.sendMessageDelayed(handler.obtainMessage(MSG_ON_PINCH_TO_ZOOM), 500)
+ }
+
+ is ZoomGestureDetector.ZoomEvent.End -> {
+ zoomGestureDetectorIsInProgress = false
+ }
}
true
}
}
+ private var zoomGestureDetectorIsInProgress = false
private val handler = object : Handler(Looper.getMainLooper()) {
override fun handleMessage(msg: Message) {
@@ -696,7 +707,7 @@ open class CameraActivity : AppCompatActivity(R.layout.activity_camera) {
// Observe manual focus
viewFinder.setOnTouchListener { _, event ->
- if (zoomGestureDetector.onTouchEvent(event) && zoomGestureDetector.isInProgress) {
+ if (zoomGestureDetector.onTouchEvent(event) && zoomGestureDetectorIsInProgress) {
return@setOnTouchListener true
}
return@setOnTouchListener gestureDetector.onTouchEvent(event)
diff --git a/app/src/main/java/org/lineageos/aperture/camera/BaseCamera.kt b/app/src/main/java/org/lineageos/aperture/camera/BaseCamera.kt
new file mode 100644
index 00000000..7f52c324
--- /dev/null
+++ b/app/src/main/java/org/lineageos/aperture/camera/BaseCamera.kt
@@ -0,0 +1,60 @@
+/*
+ * SPDX-FileCopyrightText: 2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.lineageos.aperture.camera
+
+import androidx.camera.camera2.interop.Camera2CameraInfo
+import androidx.camera.core.CameraInfo
+import androidx.camera.core.CameraSelector
+import org.lineageos.aperture.models.CameraFacing
+import org.lineageos.aperture.models.CameraType
+import org.lineageos.aperture.viewmodels.CameraViewModel
+import kotlin.reflect.safeCast
+
+/**
+ * A generic camera device.
+ * The only contract in place is that the camera ID must be unique also between different
+ * implementations (guaranteed by Android).
+ */
+@androidx.camera.camera2.interop.ExperimentalCamera2Interop
+@androidx.camera.core.ExperimentalLensFacing
+abstract class BaseCamera(cameraInfo: CameraInfo, model: CameraViewModel) {
+ /**
+ * The [CameraSelector] for this camera.
+ */
+ abstract val cameraSelector: CameraSelector
+
+ /**
+ * The [Camera2CameraInfo] of this camera.
+ */
+ protected val camera2CameraInfo = Camera2CameraInfo.from(cameraInfo)
+
+ /**
+ * Camera2's camera ID.
+ */
+ val cameraId = camera2CameraInfo.cameraId
+
+ /**
+ * The [CameraFacing] of this camera.
+ */
+ val cameraFacing = when (cameraInfo.lensFacing) {
+ CameraSelector.LENS_FACING_UNKNOWN -> CameraFacing.UNKNOWN
+ CameraSelector.LENS_FACING_FRONT -> CameraFacing.FRONT
+ CameraSelector.LENS_FACING_BACK -> CameraFacing.BACK
+ CameraSelector.LENS_FACING_EXTERNAL -> CameraFacing.EXTERNAL
+ else -> throw Exception("Unknown lens facing value")
+ }
+
+ /**
+ * The [CameraType] of this camera.
+ */
+ val cameraType = cameraFacing.cameraType
+
+ override fun equals(other: Any?) = this::class.safeCast(other)?.let {
+ this.cameraId == it.cameraId
+ } ?: false
+
+ override fun hashCode() = this::class.qualifiedName.hashCode() + cameraId.hashCode()
+}
diff --git a/app/src/main/java/org/lineageos/aperture/camera/Camera.kt b/app/src/main/java/org/lineageos/aperture/camera/Camera.kt
index 2c820b0f..556575ba 100644
--- a/app/src/main/java/org/lineageos/aperture/camera/Camera.kt
+++ b/app/src/main/java/org/lineageos/aperture/camera/Camera.kt
@@ -1,5 +1,5 @@
/*
- * SPDX-FileCopyrightText: 2022-2023 The LineageOS Project
+ * SPDX-FileCopyrightText: 2022-2024 The LineageOS Project
* SPDX-License-Identifier: Apache-2.0
*/
@@ -8,9 +8,7 @@ package org.lineageos.aperture.camera
import android.hardware.camera2.CameraCharacteristics
import android.hardware.camera2.CameraMetadata
import android.os.Build
-import androidx.camera.camera2.interop.Camera2CameraInfo
import androidx.camera.core.CameraInfo
-import androidx.camera.core.CameraSelector
import androidx.camera.video.Recorder
import org.lineageos.aperture.ext.*
import org.lineageos.aperture.models.CameraFacing
@@ -27,7 +25,6 @@ import org.lineageos.aperture.models.VideoDynamicRange
import org.lineageos.aperture.models.VideoQualityInfo
import org.lineageos.aperture.models.VideoStabilizationMode
import org.lineageos.aperture.viewmodels.CameraViewModel
-import kotlin.reflect.safeCast
/**
* Class representing a device camera
@@ -35,26 +32,16 @@ import kotlin.reflect.safeCast
@androidx.camera.camera2.interop.ExperimentalCamera2Interop
@androidx.camera.core.ExperimentalLensFacing
@androidx.camera.core.ExperimentalZeroShutterLag
-class Camera(cameraInfo: CameraInfo, model: CameraViewModel) {
- val cameraSelector = cameraInfo.cameraSelector
-
- private val camera2CameraInfo = Camera2CameraInfo.from(cameraInfo)
- val cameraId = camera2CameraInfo.cameraId
-
- val cameraFacing = when (cameraInfo.lensFacing) {
- CameraSelector.LENS_FACING_UNKNOWN -> CameraFacing.UNKNOWN
- CameraSelector.LENS_FACING_FRONT -> CameraFacing.FRONT
- CameraSelector.LENS_FACING_BACK -> CameraFacing.BACK
- CameraSelector.LENS_FACING_EXTERNAL -> CameraFacing.EXTERNAL
- else -> throw Exception("Unknown lens facing value")
- }
-
- val cameraType = cameraFacing.cameraType
+class Camera(cameraInfo: CameraInfo, model: CameraViewModel) : BaseCamera(cameraInfo, model) {
+ override val cameraSelector = cameraInfo.cameraSelector
val exposureCompensationRange = cameraInfo.exposureState.exposureCompensationRange
private val hasFlashUnit = cameraInfo.hasFlashUnit()
- val isLogical = camera2CameraInfo.physicalCameraIds.size > 1
+ private val physicalCameras = cameraInfo.physicalCameraInfos.map {
+ PhysicalCamera(it, model, this)
+ }
+ val isLogical = physicalCameras.size > 1
val intrinsicZoomRatio = cameraInfo.intrinsicZoomRatio
val logicalZoomRatios = model.getLogicalZoomRatios(cameraId)
@@ -254,15 +241,6 @@ class Camera(cameraInfo: CameraInfo, model: CameraViewModel) {
}
}
- override fun equals(other: Any?): Boolean {
- val camera = this::class.safeCast(other) ?: return false
- return this.cameraId == camera.cameraId
- }
-
- override fun hashCode(): Int {
- return this::class.qualifiedName.hashCode() + cameraId.hashCode()
- }
-
fun supportsExtensionMode(extensionMode: Int): Boolean {
return supportedExtensionModes.contains(extensionMode)
}
diff --git a/app/src/main/java/org/lineageos/aperture/camera/PhysicalCamera.kt b/app/src/main/java/org/lineageos/aperture/camera/PhysicalCamera.kt
new file mode 100644
index 00000000..91e35d86
--- /dev/null
+++ b/app/src/main/java/org/lineageos/aperture/camera/PhysicalCamera.kt
@@ -0,0 +1,25 @@
+/*
+ * SPDX-FileCopyrightText: 2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.lineageos.aperture.camera
+
+import androidx.camera.core.CameraInfo
+import androidx.camera.core.CameraSelector
+import org.lineageos.aperture.viewmodels.CameraViewModel
+
+/**
+ * A logical camera's backing physical camera.
+ */
+@androidx.camera.camera2.interop.ExperimentalCamera2Interop
+@androidx.camera.core.ExperimentalLensFacing
+class PhysicalCamera(
+ cameraInfo: CameraInfo,
+ model: CameraViewModel,
+ logicalCamera: Camera,
+) : BaseCamera(cameraInfo, model) {
+ override val cameraSelector = CameraSelector.Builder()
+ .setPhysicalCameraId(cameraId)
+ .build()
+}
diff --git a/app/src/main/java/org/lineageos/aperture/ext/Camera2CameraInfo.kt b/app/src/main/java/org/lineageos/aperture/ext/Camera2CameraInfo.kt
deleted file mode 100644
index a08eff74..00000000
--- a/app/src/main/java/org/lineageos/aperture/ext/Camera2CameraInfo.kt
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2022 The LineageOS Project
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package org.lineageos.aperture.ext
-
-import android.hardware.camera2.CameraCharacteristics
-import android.os.Build
-import androidx.camera.camera2.interop.Camera2CameraInfo
-
-/**
- * We're adding this here since it's private. We're supposed to use
- * CameraCharacteristics.getPhysicalCameraIds() but it's not exposed by CameraX yet.
- */
-private val LOGICAL_MULTI_CAMERA_PHYSICAL_IDS by lazy {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
- CameraCharacteristics.Key(
- "android.logicalMultiCamera.physicalIds",
- ByteArray::class.java
- )
- } else {
- throw Exception("Requesting LOGICAL_MULTI_CAMERA_PHYSICAL_IDS on older Android version")
- }
-}
-
-/**
- * Return the set of physical camera ids that this logical {@link CameraDevice} is made
- * up of.
- *
- * If the camera device isn't a logical camera, return an empty set.
- */
-val Camera2CameraInfo.physicalCameraIds: Set
- @androidx.camera.camera2.interop.ExperimentalCamera2Interop
- get() {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
- return setOf()
- }
-
- val availableCapabilities = getCameraCharacteristic(
- CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES
- ) ?: throw AssertionError(
- "android.request.availableCapabilities must be non-null in the characteristics"
- )
- if (!availableCapabilities.contains(
- CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
- )
- ) {
- return setOf()
- }
-
- val physicalCamIds: ByteArray = getCameraCharacteristic(
- LOGICAL_MULTI_CAMERA_PHYSICAL_IDS
- ) ?: throw AssertionError(
- "android.logicalMultiCamera.physicalIds must be non-null in the characteristics"
- )
-
- val physicalCamIdString = String(physicalCamIds, Charsets.UTF_8)
- val physicalCameraIdArray = physicalCamIdString.split(0.toChar())
-
- return physicalCameraIdArray.toSet()
- }
diff --git a/app/src/main/res/values-ast-rES/strings.xml b/app/src/main/res/values-ast-rES/strings.xml
index 26fdd7d8..96f8da6f 100644
--- a/app/src/main/res/values-ast-rES/strings.xml
+++ b/app/src/main/res/values-ast-rES/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml
index 143bc945..e54641c7 100644
--- a/app/src/main/res/values-az/strings.xml
+++ b/app/src/main/res/values-az/strings.xml
@@ -1,6 +1,6 @@
@@ -58,6 +58,8 @@
Telefon nömrəsinə zəng et
Telefon nömrəsinə zəng et
Mətn
+ Ödəniş ediləcək tətbiqi seçin
+ Dəstəklənirsə bu UPI keçidini uyğun tətbiqlə aç
URL-ni aç
Dəstəklənirsə bu URL-ni uyğun tətbiqlə aç
VIN axtar
diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml
index 68836e4b..59bb568b 100644
--- a/app/src/main/res/values-be/strings.xml
+++ b/app/src/main/res/values-be/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml
index 7d36ea54..4e926651 100644
--- a/app/src/main/res/values-ca/strings.xml
+++ b/app/src/main/res/values-ca/strings.xml
@@ -1,6 +1,6 @@
@@ -58,6 +58,8 @@
Truca al número de telèfon
Truca al número de telèfon
Text
+ Trieu una aplicació per pagar
+ Obre aquest enllaç UPI amb l\'aplicació adequada si s\'admet
Obre l\'enllaç
Obre aquesta URL amb l\'aplicació adequada si s\'admet
Cerca el VIN
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index a013c5c3..bf5714e6 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-cy/strings.xml b/app/src/main/res/values-cy/strings.xml
index fe8e3ecf..2abbb3b5 100644
--- a/app/src/main/res/values-cy/strings.xml
+++ b/app/src/main/res/values-cy/strings.xml
@@ -1,6 +1,6 @@
@@ -41,6 +41,7 @@
Galw rhif ffôn
Galw\u2019r rhif ffôn
Testun
+ Dewis ap i dalu
Cysylltu â\'r rhwydwaith Wi-Fi hwn
Gosodiadau
Cyffredinol
diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml
index 487f833d..39f93260 100644
--- a/app/src/main/res/values-da/strings.xml
+++ b/app/src/main/res/values-da/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 899f57ac..178eb782 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index 588ca4ce..8b1cdc04 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-en-rAU/strings.xml b/app/src/main/res/values-en-rAU/strings.xml
index 64ed4b35..7e8ae505 100644
--- a/app/src/main/res/values-en-rAU/strings.xml
+++ b/app/src/main/res/values-en-rAU/strings.xml
@@ -1,6 +1,6 @@
@@ -58,6 +58,8 @@
Call phone number
Call the phone number
Text
+ Choose app to pay
+ Open this UPI link with the appropriate app if supported
Open URL
Open this URL with the appropriate app if supported
Lookup VIN
diff --git a/app/src/main/res/values-en-rCA/strings.xml b/app/src/main/res/values-en-rCA/strings.xml
index de3b0fbf..333f513c 100644
--- a/app/src/main/res/values-en-rCA/strings.xml
+++ b/app/src/main/res/values-en-rCA/strings.xml
@@ -1,6 +1,6 @@
@@ -58,6 +58,8 @@
Call phone number
Call the phone number
Text
+ Choose app to pay
+ Open this UPI link with the appropriate app if supported
Open URL
Open this URL with the appropriate app if supported
Lookup VIN
diff --git a/app/src/main/res/values-en-rGB/strings.xml b/app/src/main/res/values-en-rGB/strings.xml
index 64ed4b35..7e8ae505 100644
--- a/app/src/main/res/values-en-rGB/strings.xml
+++ b/app/src/main/res/values-en-rGB/strings.xml
@@ -1,6 +1,6 @@
@@ -58,6 +58,8 @@
Call phone number
Call the phone number
Text
+ Choose app to pay
+ Open this UPI link with the appropriate app if supported
Open URL
Open this URL with the appropriate app if supported
Lookup VIN
diff --git a/app/src/main/res/values-en-rIN/strings.xml b/app/src/main/res/values-en-rIN/strings.xml
index 64ed4b35..7e8ae505 100644
--- a/app/src/main/res/values-en-rIN/strings.xml
+++ b/app/src/main/res/values-en-rIN/strings.xml
@@ -1,6 +1,6 @@
@@ -58,6 +58,8 @@
Call phone number
Call the phone number
Text
+ Choose app to pay
+ Open this UPI link with the appropriate app if supported
Open URL
Open this URL with the appropriate app if supported
Lookup VIN
diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml
index c480ec2e..92406213 100644
--- a/app/src/main/res/values-et/strings.xml
+++ b/app/src/main/res/values-et/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index 3c6ca4b5..0722b8fd 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 6003f7bd..0e0d470e 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-fur-rIT/strings.xml b/app/src/main/res/values-fur-rIT/strings.xml
index 07c3c14d..3cc3217d 100644
--- a/app/src/main/res/values-fur-rIT/strings.xml
+++ b/app/src/main/res/values-fur-rIT/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 8ec19144..22eabba1 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -1,6 +1,6 @@
@@ -11,6 +11,7 @@
Vakumód
Kamerakép tükrözése
Galéria
+ A Google Lens megnyitása
Képelőnézet
Pro-beállítások
Exponálógomb
@@ -36,11 +37,40 @@
Másolás a vágólapra
Ikon
Megosztás
+ Nincs alkalmazás, ami végre tudná hajtani ezt a műveletet
+ Egy névjegy hozzáadása
+ Adja hozzá a névjegyet
+ Egy esemény hozzáadása a naptárhoz
+ Ennek az eseménynek a hozzáadása a naptárhoz
+ Konfigurálja ezt a készüléket
+ Egy új e-mail küldése
+ Létrehoz egy új e-mailt a megadott címekre
+ Jelszóhasználat
+ Kezelje ezt a QR-kódot
+ Ennek a helynek a megnyitása
+ Megnyitja ezt a helyet
+ Egy ISBN megkeresése
+ Keresse meg ezt az ISBN-t az isbnsearch.org webhelyen
+ Egy termék keresése
+ Keresse meg ezt a termékazonosító vonalkódot
+ Egy új SMS küldése
+ Új SMS küldése a megadott címzetteknek
+ Egy telefonszám felhívása
+ Hívja fel a megadott telefonszámot
Szöveg
+ Válasszon alkalmazást a fizetéshez
+ Nyissa meg ezt az UPI linket a megfelelő alkalmazással, ha támogatott
+ Egy URL megnyitása
+ Nyissa meg ezt az URL-t a megfelelő alkalmazással, ha támogatott
+ Egy rendszám megkeresése
+ Keresse meg ezt a járműazonosító számot (VIN)
+ Kapcsolódás ehhez a Wi-Fi hálózathoz
+ Adja hozzá ezt a Wi-Fi hálózatot az ismert hálózatok listájához, és csatlakoztassa hozzá a készüléket
Beállítások
Általános
Fotók
Videó
+ Haladó
Fényes képernyő
Fényerő rögzítése 100%-on
Helyinformációk elmentése
@@ -50,10 +80,87 @@
Hang lejátszása képkészítéskor
Szintező
A készülék tájolását mutató jelző
+ Hengerőgomb-műveletek
Képkészítési mód
Minőség maximalizálása
Késleltetés minimalizálása
+ Zero-Shutter Lag, ha elérhető
+ Ha a kamera támogatja a ZSL-t, akkor használhatja. Ebben a módban a fotóeffektek nem működnek. Vegye figyelembe hogy a ZSL még kisérleti stádiumban van.
+ Az előlapi kamera tükrözése
+ Úgy menti a képeket, ahogy az előnézetben megjelennek
+ A Videó-képstabilizáció engedélyezése
+ Amennyiben elérhető az Ön készülékén ez a funkció, stabilizálja a felvételeket a kéz remegései ellen
+ Videótükrözés be
+ Folyamatban
+ Fotómódban, amikor ZSL-módot használ, csak az alapértelmezett és kikapcsolt értékeket veszi figyelembe a rendszer. Videómód esetén már a gyors értékeket is figyelembe veszi a rendszer.
+ Élesítés
+ Az éljavítás tökéletesebbé teszi a képek élességét és részleteit.
+ Alapértelmezett
+ Ki
+ Gyors
+ Kiváló minőség
+ Zajtalanítás
+ A zajcsökkentési algoritmus próbálja javítani a képminőséget azáltal, hogy eltávolítja a felvétel során belekerült túlzott zajt, különösen sötét körülmények között.
+ Alapértelmezett
+ Ki
+ Gyors
+ Kiváló minőség
+ Minimális
+ Képszélek torzítása
+ A képadatokhoz illesztett lencseárnyékolás-korrekció minősége.
+ Alapértelmezett
+ Ki
+ Gyors
+ Kiváló minőség
+ Színaberráció-korrekció
+ A kromatikus (szín) aberrációt az okozza, hogy a különböző hullámhosszú fények nem tudnak ugyanarra a pontra fókuszálni, miután kiléptek az objektívből.
+ Alapértelmezett
+ Ki
+ Gyors
+ Kiváló minőség
+ Torzítási korrekció
+ A lencsetorzítás korrekciós blokk üzemmódja.
+ Alapértelmezett
+ Ki
+ Gyors
+ Kiváló minőség
+ Túlvezéreltfény-korrekció
+ Ez a funkció interpolálja vagy más módon eltávolítja azokat a képpontokat, ahol nem pontos a bejövő fény mérése (azaz olyan képpontokat, amelyek valamely értéknél beragadtak vagy túlérzékenyek).
+ Alapértelmezett
+ Ki
+ Gyors
+ Kiváló minőség
Szelfi készítése
Videó készítése
Vonalkód beolvasása
+ Fénykép- és videóhelyadat hozzáfűzése
+ Tegye visszakereshetővé emlékeit úgy, hogy minden felvételnél teret ad a helyinformációk metaadatainak.
+ Később
+ Bekapcsolás
+ Elérte az egyszerre megnyitható kamerák maximális számát. Próbáljon meg bezárni más alkalmazásokat, amik használják a kamerát.
+ Ez a kamera már használatban van, próbáljon meg bezárni más alkalmazásokat, amik használják a kamerát.
+ Hiba történt a sztreamelés előkészítése közben. Kérjük, jelentse ezt a fejlesztőknek.
+ Hiba a munkamenet beállítása közben. Az alkalmazás megpróbálja helyreállítani.
+ A kamera le van tiltva. Ennek oka lehet a készülék házirendje.
+ Végzetes hiba történt. Próbálja újraindítani a készülékét.
+ A Ne zavarjanak (DND) mód engedélyezve van. Kapcsolja ki, majd nyissa meg újra az alkalmazást.
+ Ismeretlen, de helyreállítható hiba keletkezett. Kérjük, jelentse ezt a fejlesztőknek.
+ Ismeretlen kritikus hiba keletkezett. Kérjük, jelentse ezt a fejlesztőknek.
+ Nem indítható az alkalmazás, mert az Ön készülékén nem érzékelhető kamera.
+ Exponálógomb
+ Zoomolás
+ Hangerő
+ Semmi
+ Mérsékelt hőszabályozás, ügyeljen arra, hogy a készüléket ne érje közvetlen napfény.
+ Erős hőszabályozás, ajánlott hagyni egy kicsit lehűlni a készüléket.
+ Kritikus hőszabályozás, az alkalmazás hamarosan bezáródik.
+ Vészhelyzeti hőszabályozás, az alkalmazás azonnal bezáródik.
+ Vészleállítási hőszabályozás, készüléke azonnal kikapcsol.
+ Fénykép módban hosszan lenyomva tarthatja a vakugombot, hogy zseblámpa módba váltson.
+ Fénykép
+ Videó
+ Kódolvasó
+ Ki
+ Be
+ Csak a fő arckamerán
diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml
index 7d073cf9..95af32ec 100644
--- a/app/src/main/res/values-in/strings.xml
+++ b/app/src/main/res/values-in/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml
index c2ec1fd2..9a6db77f 100644
--- a/app/src/main/res/values-is/strings.xml
+++ b/app/src/main/res/values-is/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 29e3acf6..7b97758d 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 9f073a75..7233e3f5 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -1,6 +1,6 @@
@@ -58,6 +58,8 @@
電話番号に発信
電話番号に発信します
テキスト
+ 決済アプリを選択
+ 対応している場合は、この UPI リンクを適切なアプリで開きます
URL を開く
対応しているアプリでこの URL を開きます
VIN 検索
diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml
index 9c342e36..ae834e4c 100644
--- a/app/src/main/res/values-ka/strings.xml
+++ b/app/src/main/res/values-ka/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index 50a06693..4276dc18 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index b519a921..ff850a9d 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -1,6 +1,6 @@
@@ -58,6 +58,8 @@
Bel telefoonnummer
Bel het telefoonnummer
Tekst
+ Kies app om te betalen
+ Open deze UPI link naar de juiste app indien ondersteund
Open URL
Open deze URL met de juiste app indien ondersteund
Zoek VIN
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 0900d7dd..99eb4a16 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -1,6 +1,6 @@
@@ -58,6 +58,8 @@
Zadzwoń pod numer telefonu
Zadzwoń pod ten numer telefonu
Tekst
+ Wybierz aplikację do wykonania płatności
+ Otwórz ten adres UPI za pomocą odpowiedniej aplikacji, jeśli jest obsługiwany
Otwórz adres URL
Otwórz ten adres URL za pomocą odpowiedniej aplikacji, jeśli jest obsługiwany
Wyszukaj VIN
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 2ee2bd3c..bbc612fe 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -1,6 +1,6 @@
@@ -8,6 +8,7 @@
Filmadora
Cancelar
Confirmar
+ Modo flash
Virar câmera
Galeria
Abrir Google Lens
@@ -18,6 +19,7 @@
Temporizador desativado
Temporizador 3s
Temporizador 10s
+ QPS automático
%d QPS
NENHUM
NOITE
@@ -27,31 +29,138 @@
GRADE 3x3
GRADE 4x4
GRADE φ
+ MICROFONE DESLIGADO
+ MICROFONE LIGADO
CONFIGURAÇÕES
Permissões não concedidas pelo usuário.
+ Nenhuma câmera suporta gravação de vídeo.
Copiar para a área de transferência
Ícone
Compartilhar
+ Nenhum app disponível para lidar com esta ação
+ Adicionar contato
+ Adicionar contato
+ Adicionar evento ao calendário
+ Adicionar este evento ao calendário
Configurar este dispositivo
+ Enviar um novo email
+ Escrever um novo e-mail para os endereços de e-mail especificados
+ Usar chave de acesso
+ Lidar com este QR Code FIDO
+ Abrir esta localização
+ Abrir esta localização
+ Pesquisar este ISBN
+ Pesquisar este ISBN no isbnsearch.org
+ Procurar produto
+ Pesquisar o código de barras desse produto
+ Enviar um novo SMS
+ Enviar um novo SMS para os destinatários especificados
+ Ligar para número de telefone
+ Ligar para o número de telefone
Texto
+ Escolha o aplicativo de pagamento
+ Abrir este link UPI com o aplicativo apropriado, se suportado
+ Abrir URL
+ Abrir esta URL com o aplicativo apropriado, se suportado
+ Procurar VIN
+ Procurar este número de identificação de veículo (VIN)
Conectar-se a esta rede Wi-Fi
+ Adicionar esta rede Wi-Fi à lista de redes conhecidas e conectar o dispositivo a ela
Configurações
Geral
Fotos
Vídeo
+ Avançado
+ Tela brilhante
+ Bloqueia o brilho em 100%
+ Guardar dados de localização
+ Incluir localização por GPS nos metadados
+ Permissões de localização não concedidas pelo usuário.
Som do obturador
Tocar um som ao capturar
Nivelador
Indicador que mostra a orientação do dispositivo
+ Ação dos botões de volume
Modo de captura
+ Maximizar qualidade
Minimizar latência
Ativar ZSL quando disponível
+ Usar o modo Zero-Shutter Lag quando a câmera suportar. Neste modo os efeitos das fotos são desativados. Note que este modo é experimental.
Espelhar câmera frontal
+ Salvar as fotos da câmera frontal como elas aparecem na pré-visualização
Ativar estabilização de vídeo
+ Quando disponível, habilitar a estabilização de vídeo para reduzir vibrações da câmera durante a gravação
+ Ativar espelhamento de vídeo
+ Processando
+ No modo foto, quando o modo ZSL é utilizado, apenas os valores padrão e desligado serão considerados. Para o modo vídeo, apenas os valores padrão, desligado e rápido serão considerados.
+ Nitidez
+ O aprimoramento de bordas melhora a nitidez e os detalhes da imagem capturada.
+ Padrão
+ Desligado
+ Rápido
+ Alta qualidade
+ Redução de ruído
+ O algoritmo de redução de ruído tenta melhorar a qualidade da imagem removendo o ruído excessivo adicionado pelo processo de captura, especialmente em ambientes escuros.
+ Padrão
+ Desligado
+ Rápido
+ Alta qualidade
+ Mínimo
+ Correção de vinheta
+ Qualidade da correção de sombreamento da lente aplicada aos dados da imagem.
+ Padrão
+ Desligado
+ Rápido
+ Alta qualidade
+ Correção de aberração de cor
+ A aberração cromática (cor) é causada pelo fato de que diferentes comprimentos de onda de luz não conseguem focar no mesmo ponto após sair da lente.
+ Padrão
+ Desligado
+ Rápido
+ Alta qualidade
+ Correção de distorção
+ Modo de operação do bloco de correção de distorção da lente.
+ Padrão
+ Desligado
+ Rápido
+ Alta qualidade
+ Correção de pixels quentes
+ A correção de pixels quentes interpola ou remove pixels que não medem com precisão a luz recebida (ou seja, pixels que estão presos em um valor arbitrário ou são supersensíveis).
+ Padrão
+ Desligado
+ Rápido
+ Alta qualidade
Tirar uma selfie
Gravar um vídeo
Escanear código de barras
Adicionar a localização em fotos e vídeos
Mapeie suas memórias ao incluir metadados de localização em cada captura.
Mais tarde
+ Ativar
+ O número máximo de câmeras abertas foi atingido, tente fechar outros aplicativos usando as câmeras do dispositivo.
+ Esta câmera já está em uso, tente fechar o aplicativo que está utilizando a mesma.
+ Ocorreu um erro ao preparar a transmissão. Por favor, informe isso aos desenvolvedores.
+ Erro ao configurar a sessão. O aplicativo tentará se recuperar.
+ A câmera está desativada. Isso pode ser causado pela política do dispositivo.
+ Ocorreu um erro fatal. Tente reiniciar o seu dispositivo.
+ O modo Não Perturbe está ativado. Desative-o e abra o aplicativo novamente.
+ Um erro desconhecido recuperável foi encontrado. Informe isso aos desenvolvedores.
+ Um erro crítico desconhecido foi encontrado. Informe isso aos desenvolvedores.
+ Nenhuma câmera foi encontrada no dispositivo, não é possível iniciar o aplicativo.
+ Obturador
+ Zoom
+ Volume
+ Nada
+ Limitação térmica moderada, certifique-se de que o dispositivo não está sob a luz solar direta.
+ Limitação térmica severa, é recomendado deixar o aparelho esfriar um pouco.
+ Limitação térmica crítica, o aplicativo poderá ser fechado em breve.
+ Limitação térmica de emergência, o aplicativo será fechado agora.
+ Desligamento por limitação térmica, o dispositivo será desligado.
+ No modo foto, você pode manter pressionado o botão do flash para alternar para o modo lanterna.
+ Foto
+ Vídeo
+ Escanear
+ Desativado
+ Ativado
+ Somente câmera frontal
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index e0b48c6d..1906c799 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index 1a09720e..5eba9858 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -1,6 +1,6 @@
@@ -58,6 +58,8 @@
Sună la numărul de telefon
Apelaţi numărul de telefon
Text
+ Alegeți aplicația pentru plată
+ Deschide acest link UPI cu aplicația corespunzătoare dacă este suportată
Deschide URL
Deschide această adresă URL cu aplicația corespunzătoare dacă este acceptată
Caută VIN
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 871f068e..b30aef57 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -1,6 +1,6 @@
@@ -58,6 +58,8 @@
Позвонить по номеру
Позвонить по номеру
Текст
+ Выберите приложение для оплаты
+ Открыть этот URL в соответствующем приложении, если поддерживается
Открыть URL
Открыть этот URL-адрес в соответствующем приложении, если поддерживается
Поиск VIN
diff --git a/app/src/main/res/values-sc-rIT/strings.xml b/app/src/main/res/values-sc-rIT/strings.xml
index d549e145..d0516976 100644
--- a/app/src/main/res/values-sc-rIT/strings.xml
+++ b/app/src/main/res/values-sc-rIT/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml
index 4d9bbcfd..7922020a 100644
--- a/app/src/main/res/values-sl/strings.xml
+++ b/app/src/main/res/values-sl/strings.xml
@@ -1,6 +1,6 @@
@@ -58,6 +58,8 @@
Kliči telefonsko številko
Kličite telefonsko številko
Besedilo
+ Izberite aplikacijo za plačilo
+ Odpri to UPI povezavo s primerno aplikacijo, če je podprto
Odpri URL
Odprite ta URL s primerno aplikacijo, če je podprto
Išči VIN
diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml
index 56875f9f..9053a5d9 100644
--- a/app/src/main/res/values-sq/strings.xml
+++ b/app/src/main/res/values-sq/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 3ca2f14e..6df62bb5 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 9392e747..f95fd32f 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml
index 0be71ca8..0a97a241 100644
--- a/app/src/main/res/values-vi/strings.xml
+++ b/app/src/main/res/values-vi/strings.xml
@@ -1,6 +1,6 @@
@@ -58,6 +58,8 @@
Gọi số điện thoại
Gọi số điện thoại
Văn bản
+ Chọn ứng dụng để thanh toán
+ Mở liên kết UPI này bằng ứng dụng thích hợp nếu được hỗ trợ
Mở URL
Mở URL này bằng ứng dụng thích hợp nếu được hỗ trợ
Tra cứu số VIN
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index c63b895a..ecbcda24 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -1,6 +1,6 @@
@@ -58,6 +58,8 @@
拨打电话号码
拨打电话号码
文本
+ 选择用于支付的应用
+ 在可用的情况下,使用支持的应用打开UPI链接
打开网址
如果支持的话,用适当的应用程序打开此网址
查找 VIN
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index db4a3791..b5f635da 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -1,6 +1,6 @@
@@ -44,13 +44,26 @@
將此活動新增至日曆
設定此裝置
傳送新電子郵件
+ 撰寫一封新郵件給指定的電子郵件地址
+ 使用通行金鑰
+ 處理此 FIDO QR code
+ 開啟此位置
+ 開啟此位置
+ 搜尋此 ISBN
+ 在 isbnsearch.org 上搜尋此 ISBN
+ 搜尋產品
+ 搜尋此產品 ID 條碼
傳送新簡訊
傳送新簡訊至指定收件者
撥打電話號碼
撥打電話號碼
文字
+ 選擇應用程式進行付款
+ 使用適當的應用程式(若支援)開啟此 UPI 連結
開啟 URL
使用適當的應用程式(若支援)開啟此 URL
+ 搜尋 VIN
+ 搜尋此車輛識別號碼 (VIN)
連線至此 Wi-Fi 網路
新增此 Wi-Fi 網路至已知網路清單並將裝置連線至該網路
設定
diff --git a/build.gradle.kts b/build.gradle.kts
index 721a7815..6db3c5ec 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -5,8 +5,8 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
- id("com.android.application") version "8.2.1" apply false
- id("com.android.library") version "8.2.1" apply false
+ id("com.android.application") version "8.4.0" apply false
+ id("com.android.library") version "8.4.0" apply false
id("org.jetbrains.kotlin.android") version "1.7.10" apply false
}
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index d64cd491..e6441136 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 1af9e093..b82aa23a 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew.bat b/gradlew.bat
index 6689b85b..7101f8e4 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -43,11 +43,11 @@ set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
+echo. 1>&2
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
goto fail
@@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
+echo. 1>&2
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
goto fail
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 8f1dd4b8..87f0c4ad 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -13,7 +13,7 @@ pluginManagement {
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
- maven("https://raw.githubusercontent.com/lineage-next/camerax-aperture/2f3d84611740152a503b606584c93d64dba4ebcd/.m2")
+ maven("https://raw.githubusercontent.com/lineage-next/camerax-aperture/bdc457ba0021c05507c4bec14806c120e132a37f/.m2")
google()
mavenCentral()
}