diff --git a/.gitignore b/.gitignore
index 46ed4410cb88a4b3c28cce54185fa88737340f95..775172ba3e9e2b286aa0f357b00726ecbe482b87 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,7 @@ _saved/
build/
app/release/
+app/version.properties
gfx/
testdata/
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8e2f31462cc1846f193f597d55388d36cf1a2ec9
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,77 @@
+image: "registry.gitlab.e.foundation/e/os/docker-android-apps-cicd:latest"
+
+stages:
+ - update-from-upstream
+ - build
+
+before_script:
+ - apt update && apt-get install libncurses5 -y
+ - export GRADLE_USER_HOME=$(pwd)/.gradle
+ - chmod +x ./gradlew
+
+cache:
+ key: ${CI_PROJECT_ID}
+ paths:
+ - .gradle/
+
+build:
+ stage: build
+ script:
+ - ./gradlew build -x test
+ artifacts:
+ paths:
+ - app/build/outputs/apk
+
+.update-from-upstream:
+ image: registry.gitlab.e.foundation/e/tools/docker-tools:latest
+ stage: update-from-upstream
+ rules:
+ - if: '$CI_PIPELINE_SOURCE == "schedule" && $CI_COMMIT_REF_NAME == $LOCAL_BRANCH'
+ variables:
+ CI_PROJECT_SSH_URL: git@gitlab.e.foundation:$CI_PROJECT_PATH
+ GIT_STRATEGY: none
+ before_script:
+ - 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )'
+ - eval $(ssh-agent -s)
+ - echo "${SSH_E_ROBOT_PRIVATE_KEY}" | tr -d '\r' | ssh-add -
+ - mkdir -p ~/.ssh
+ - chmod 700 ~/.ssh
+ - echo "${SSH_KNOWN_HOSTS}" > ~/.ssh/known_hosts
+ - echo "${SSH_KNOWN_HOSTS}"
+ - chmod 644 ~/.ssh/known_hosts
+ - git config --global user.email $GITLAB_USER_EMAIL
+ - git config --global user.name "$GITLAB_USER_NAME"
+ - cd $CI_BUILD_DIR
+ - rm -rf $CI_PROJECT_DIR
+ - git clone $CI_PROJECT_SSH_URL $CI_PROJECT_DIR
+ - cd $CI_PROJECT_DIR
+ script:
+ - git config http.sslverify false
+ # update $UPSTREAM_BRANCH & tags
+ - git fetch origin
+ - git checkout $UPSTREAM_BRANCH
+ - git remote add upstream $UPSTREAM_URL
+ - git fetch upstream
+ - git pull upstream $UPSTREAM_DEFAULT_BRANCH
+ - git push origin $UPSTREAM_BRANCH
+ - git push origin --tags
+ # checkout to latest tag commit to $TEMP_LATEST_TAG_BRANCH
+ - git checkout $(git describe --tags --abbrev=0)
+ - git checkout -b $TEMP_LATEST_TAG_BRANCH
+ # merge $LOCAL_BRANCH with $TEMP_LATEST_TAG_BRANCH & push
+ - git checkout $LOCAL_BRANCH
+ - git merge $TEMP_LATEST_TAG_BRANCH
+ - git push origin $LOCAL_BRANCH
+ # remove unwanted local branch & remote
+ - git branch -D $TEMP_LATEST_TAG_BRANCH
+ - git remote remove upstream
+
+update-default-branch:
+ extends: .update-from-upstream
+ variables:
+ LOCAL_BRANCH: master
+ UPSTREAM_BRANCH: upstream/master
+ UPSTREAM_DEFAULT_BRANCH: master
+ UPSTREAM_URL: https://git.code.sf.net/p/opencamera/code
+ TEMP_LATEST_TAG_BRANCH: latest_upstream_tag_branch
+ allow_failure: true
diff --git a/app/build.gradle b/app/build.gradle
index c00a8b38cdcbb8b07b9a737cbafdaa8b7ffadb41..61d228d0378f82397b1a179e73b8580eb62eeeaa 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,15 +1,85 @@
apply plugin: 'com.android.application'
+apply plugin: 'org.jetbrains.kotlin.android'
android {
compileSdk 34
compileOptions.encoding = 'UTF-8'
+ def versionPropsFile = file('version.properties')
+ Properties versionProps = new Properties()
+
+ if (!versionPropsFile.exists()) {
+ versionProps['VERSION_CHANGE'] = '0'
+ versionProps['VERSION_MAJOR'] = '1'
+ versionProps['VERSION_MINOR'] = '53'
+ versionProps['VERSION_PATCH'] = '1'
+ versionProps['VERSION_CODE'] = '90'
+ versionProps.store(versionPropsFile.newWriter(), null)
+ }
+
+ def getVersionCode = { ->
+ if (versionPropsFile.canRead()) {
+ versionProps.load(new FileInputStream(versionPropsFile))
+ def versionChange = versionProps['VERSION_CHANGE'].toInteger() + 1
+ def versionMinor = versionProps['VERSION_MINOR'].toInteger()
+ def versionMajor = versionProps['VERSION_MAJOR'].toInteger()
+ def versionPatch = versionProps['VERSION_PATCH'].toInteger()
+ // Up version on each 100 cycles of builds
+ if (versionChange >= 100) {
+ versionPatch = versionProps['VERSION_PATCH'].toInteger() + 1
+ versionChange = 0
+ }
+ if (versionPatch == 9) {
+ versionMinor = versionProps['VERSION_MINOR'].toInteger() + 1
+ versionPatch = 0
+ }
+ if (versionMinor == 9) {
+ versionMajor = versionProps['VERSION_MAJOR'].toInteger() + 1
+ versionMinor = 0
+ }
+ def versionCode = versionProps['VERSION_CODE'].toInteger()
+
+ versionProps['VERSION_CHANGE'] = versionChange.toString()
+ versionProps['VERSION_PATCH'] = versionPatch.toString()
+ versionProps['VERSION_MINOR'] = versionMinor.toString()
+ versionProps['VERSION_MAJOR'] = versionMajor.toString()
+ versionProps['VERSION_CODE'] = (versionCode.toInteger() + 1).toString()
+ versionProps.store(versionPropsFile.newWriter(), null)
+ return versionCode
+ }
+ }
+
+ def getVersionName = { ->
+ if (versionPropsFile.canRead()) {
+ versionProps.load(new FileInputStream(versionPropsFile))
+
+ def versionMajor = versionProps['VERSION_MAJOR']
+ def versionMinor = versionProps['VERSION_MINOR']
+ def versionPatch = versionProps['VERSION_PATCH']
+
+ return "${versionMajor}.${versionMinor}.${versionPatch}"
+ }
+ }
+
+ signingConfigs {
+ // These are public keys provided by AOSP, Use different passcode protected keys for production
+ debug {
+ storeFile file('keys/platform.jks')
+ storePassword 'platform'
+ keyAlias 'platform'
+ keyPassword 'platform'
+ }
+ }
+
defaultConfig {
- applicationId "net.sourceforge.opencamera"
- minSdkVersion 15
+ applicationId "foundation.e.camera"
+ minSdkVersion 26
targetSdkVersion 34
//compileSdkVersion 31 // needed to support appcompat:1.4.0 (which we need for emoji policy support, and not yet ready to target SDK 30)
+ versionCode getVersionCode()
+ versionName getVersionName()
+
renderscriptTargetApi 21
//renderscriptSupportModeEnabled true // don't use support library as it bloats the APK, and we don't need pre-4.4 support
// need build tools at least 20 at least to support ScriptIntrinsicHistogram
@@ -25,8 +95,11 @@ android {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
- }
+ debug {
+ signingConfig signingConfigs.debug
+ }
+ }
// needed to use android.test package (ActivityInstrumentationTestCase2 etc) when targetting sdk 28 (Android 9) -
// see https://developer.android.com/training/testing/set-up-project
@@ -39,20 +112,29 @@ android {
namespace 'net.sourceforge.opencamera'
buildFeatures {
renderScript true
+ buildConfig true
}
//useLibrary 'android.test.mock'
}
dependencies {
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
+ implementation 'androidx.core:core-ktx:1.8.0'
// appcompat version must be 1.4.0 or later to satisfy emoji policy!
implementation 'androidx.appcompat:appcompat:1.6.1'
+ implementation "org.greenrobot:eventbus:3.3.1"
+
+ implementation 'foundation.e:elib:0.0.1-alpha11'
+
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.exifinterface:exifinterface:1.3.7'
+ implementation 'androidx.camera:camera-core:1.2.3'
+ implementation 'com.google.zxing:core:3.5.2'
+
testImplementation 'junit:junit:4.13.2'
// newer AndroidJUnit4 InstrumentedTest
diff --git a/app/keys/platform.jks b/app/keys/platform.jks
new file mode 100644
index 0000000000000000000000000000000000000000..b778840542e79c048bcf570aa960243eeb9b9d53
Binary files /dev/null and b/app/keys/platform.jks differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a25745d04d7da3afb726eae7e6df800369e5e8df..525732197f52e86e59d111ecd786257c7fb8aba0 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -23,6 +23,7 @@
android:maxSdkVersion="28"
tools:ignore="ScopedStorage" />
+
@@ -38,11 +39,14 @@
android:name=".OpenCameraApplication"
android:theme="@style/AppTheme"
android:largeHeap="true"
+ android:hardwareAccelerated="true"
+ android:requestLegacyExternalStorage="true"
>
@@ -89,13 +93,25 @@
+
+
+
+
@@ -128,7 +144,7 @@
@@ -139,7 +155,7 @@
@@ -150,7 +166,7 @@
diff --git a/app/src/main/java/net/sourceforge/opencamera/ContinuousBurstImageRunningAction.java b/app/src/main/java/net/sourceforge/opencamera/ContinuousBurstImageRunningAction.java
new file mode 100644
index 0000000000000000000000000000000000000000..b5cf989e784a373eb2d74dd1dfe46fc74fc2ec3f
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ContinuousBurstImageRunningAction.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2022 E FOUNDATION
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.sourceforge.opencamera;
+
+public class ContinuousBurstImageRunningAction { }
diff --git a/app/src/main/java/net/sourceforge/opencamera/DeviceSettings.java b/app/src/main/java/net/sourceforge/opencamera/DeviceSettings.java
new file mode 100644
index 0000000000000000000000000000000000000000..b76e9fcb3174c548151be18c11c90c79409ef041
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/DeviceSettings.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2022 E FOUNDATION
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.sourceforge.opencamera;
+
+import android.os.Build;
+
+import java.util.Locale;
+
+public class DeviceSettings {
+
+ /** Returns whether the the device uses fake flash in Camera API2.
+ * Some older device have issues in low light.
+ */
+ public static boolean deviceUsingFakeFlash() {
+ final boolean is_xiaomi = Build.MANUFACTURER.toLowerCase(Locale.US).contains("xiaomi");
+ final boolean is_fairphone = Build.MANUFACTURER.toLowerCase(Locale.US).contains("fairphone");
+ final boolean is_GS290 = Build.DEVICE != null && Build.DEVICE.equals("GS290");
+ return is_fairphone || is_xiaomi || is_GS290;
+ }
+
+ public static boolean isMurenaOne() {
+ final boolean isMurena = Build.MANUFACTURER.equals("Secure_Phone")
+ || Build.MANUFACTURER.equals("Murena");
+ final boolean isOne = Build.DEVICE.equals("one") || Build.DEVICE.equals("X2");
+ return isMurena && isOne;
+ }
+
+ public static boolean isMurenaTwo() {
+ return Build.DEVICE.toLowerCase(Locale.US).contains("two");
+ }
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/ImageSaver.java b/app/src/main/java/net/sourceforge/opencamera/ImageSaver.java
index 878c39e2530f229d5900877d02acf37e14cb802f..9bf105cb4ae83664dd457079b9b86f43cb1485d6 100644
--- a/app/src/main/java/net/sourceforge/opencamera/ImageSaver.java
+++ b/app/src/main/java/net/sourceforge/opencamera/ImageSaver.java
@@ -3952,9 +3952,10 @@ public class ImageSaver extends Thread {
}
setCustomExif(exif, custom_tag_artist, custom_tag_copyright);
- if( store_location && ( !exif.hasAttribute(ExifInterface.TAG_GPS_LATITUDE) || !exif.hasAttribute(ExifInterface.TAG_GPS_LATITUDE) ) ) {
+ if( store_location && ( !exif.hasAttribute(ExifInterface.TAG_GPS_LATITUDE) || !exif.hasAttribute(ExifInterface.TAG_GPS_LONGITUDE) || exif.getLatLong()[1] == 0.0d) ) {
// We need this when using camera extensions (since Camera API doesn't support location for camera extensions).
// But some devices (e.g., Pixel 6 Pro with Camera2 API) seem to not store location data, so we always check if we need to add it.
+ // Also for FP5, wherein longitude randomly is 0.0d, even when properly passed via JPEG_GPS_LOCATION
// fine to ignore request.remove_device_exif, as this is a separate user option
if( MyDebug.LOG )
Log.d(TAG, "store location"); // don't log location for privacy reasons!
diff --git a/app/src/main/java/net/sourceforge/opencamera/MainActivity.java b/app/src/main/java/net/sourceforge/opencamera/MainActivity.java
index 07360e28118db95c0743744be96580c0e89634e5..222b911eb3efc3af75d8dd1eefd4c2ccd3e70a15 100644
--- a/app/src/main/java/net/sourceforge/opencamera/MainActivity.java
+++ b/app/src/main/java/net/sourceforge/opencamera/MainActivity.java
@@ -1,26 +1,37 @@
package net.sourceforge.opencamera;
+import net.sourceforge.opencamera.camera2.CameraFinder;
+import net.sourceforge.opencamera.camera2.CameraIdentifier;
import net.sourceforge.opencamera.cameracontroller.CameraController;
import net.sourceforge.opencamera.cameracontroller.CameraControllerManager;
import net.sourceforge.opencamera.cameracontroller.CameraControllerManager2;
+import net.sourceforge.opencamera.camera2.model.CameraModel;
+import net.sourceforge.opencamera.camera2.model.CameraType;
import net.sourceforge.opencamera.preview.Preview;
import net.sourceforge.opencamera.preview.VideoProfile;
+import net.sourceforge.opencamera.qr.QrImageAnalyzer;
import net.sourceforge.opencamera.remotecontrol.BluetoothRemoteControl;
+import net.sourceforge.opencamera.ui.CircleImageView;
import net.sourceforge.opencamera.ui.DrawPreview;
import net.sourceforge.opencamera.ui.FolderChooserDialog;
import net.sourceforge.opencamera.ui.MainUI;
import net.sourceforge.opencamera.ui.ManualSeekbars;
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Hashtable;
+import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Objects;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
@@ -38,6 +49,9 @@ import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CameraManager;
+import android.hardware.camera2.CameraMetadata;
import android.hardware.display.DisplayManager;
import android.media.MediaMetadataRetriever;
import android.net.Uri;
@@ -96,6 +110,7 @@ import android.view.ViewGroup;
import android.view.WindowInsets;
import android.view.WindowManager;
import android.view.animation.AccelerateDecelerateInterpolator;
+import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.SeekBar;
@@ -104,6 +119,12 @@ import android.widget.ZoomControls;
import androidx.appcompat.app.AppCompatActivity;
+import kotlin.coroutines.CoroutineContext;
+import kotlinx.coroutines.CoroutineScope;
+import kotlinx.coroutines.Dispatchers;
+import kotlinx.coroutines.Job;
+import kotlinx.coroutines.JobKt;
+
/** The main Activity for Open Camera.
*/
public class MainActivity extends AppCompatActivity implements PreferenceFragment.OnPreferenceStartFragmentCallback {
@@ -119,6 +140,11 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
// components: always non-null (after onCreate())
private BluetoothRemoteControl bluetoothRemoteControl;
private PermissionHandler permissionHandler;
+ private CameraManager cameraManager;
+ private CameraFinder camerafinder;
+ private CameraIdentifier cameraIdentifier;
+ private ArrayList cameraModel;
+ private CameraCharacteristics cameraCharacteristics;
private SettingsManager settingsManager;
private MainUI mainUI;
private ManualSeekbars manualSeekbars;
@@ -141,24 +167,34 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
private boolean camera_in_background; // whether the camera is covered by a fragment/dialog (such as settings or folder picker)
private GestureDetector gestureDetector;
private boolean screen_is_locked; // whether screen is "locked" - this is Open Camera's own lock to guard against accidental presses, not the standard Android lock
- private final Map preloaded_bitmap_resources = new Hashtable<>();
+ private final Map preloaded_bitmap_resources = new HashMap<>();
private ValueAnimator gallery_save_anim;
private boolean last_continuous_fast_burst; // whether the last photo operation was a continuous_fast_burst
private Future> update_gallery_future;
+ private boolean should_run_continuous_fast_burst = false;
private TextToSpeech textToSpeech;
private boolean textToSpeechSuccess;
+ private List frontZoomRatios = new ArrayList<>();
+ private List backZoomRatios = new ArrayList<>();
+
private AudioListener audio_listener; // may be null - created when needed
//private boolean ui_placement_right = true;
private boolean want_no_limits; // whether we want to run with FLAG_LAYOUT_NO_LIMITS
+ private boolean can_draw_nav_bar = true;
private boolean set_window_insets_listener; // whether we've enabled a setOnApplyWindowInsetsListener()
private int navigation_gap;
public static volatile boolean test_preview_want_no_limits; // test flag, if set to true then instead use test_preview_want_no_limits_value; needs to be static, as it needs to be set before activity is created to take effect
public static volatile boolean test_preview_want_no_limits_value;
+ private boolean murenaTwoHwKill = false;
+
+ private Handler handler;
+ private Runnable retryRunnable = null;
+
// whether this is a multi-camera device (note, this isn't simply having more than 1 camera, but also having more than one with the same facing)
// note that in most cases, code should check the MultiCamButtonPreferenceKey preference as well as the is_multi_cam flag,
// this can be done via isMultiCamEnabled().
@@ -168,6 +204,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
private List back_camera_ids;
private List front_camera_ids;
private List other_camera_ids;
+ private List logical_camera_ids;
private final ToastBoxer switch_video_toast = new ToastBoxer();
private final ToastBoxer screen_locked_toast = new ToastBoxer();
@@ -210,6 +247,8 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
//private final String CHANNEL_ID = "open_camera_channel";
//private final int image_saving_notification_id = 1;
+ private final float defaultLensZoom = 1.0F;
+
private static final float WATER_DENSITY_FRESHWATER = 1.0f;
private static final float WATER_DENSITY_SALTWATER = 1.03f;
private float mWaterDensity = 1.0f;
@@ -218,6 +257,11 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
//public static final boolean lock_to_landscape = true;
public static final boolean lock_to_landscape = false;
+ // QRCode
+ public QrImageAnalyzer qrImageAnalyzer;
+ private Job job;
+ private CoroutineScope coroutineScope;
+
// handling for lock_to_landscape==false:
public enum SystemOrientation {
@@ -250,6 +294,16 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
Log.d(TAG, "activity_count: " + activity_count);
super.onCreate(savedInstanceState);
+ //QRCode
+ job = JobKt.Job(null);
+ coroutineScope = new CoroutineScope() {
+ @Override
+ public CoroutineContext getCoroutineContext() {
+ return Dispatchers.getMain().plus(job);
+ }
+ };
+ qrImageAnalyzer = new QrImageAnalyzer(this, coroutineScope);
+
setContentView(R.layout.activity_main);
PreferenceManager.setDefaultValues(this, R.xml.preferences, false); // initialise any unset preferences to their default values
if( MyDebug.LOG )
@@ -312,6 +366,8 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
magneticSensor = new MagneticSensor(this);
//speechControl = new SpeechControl(this);
+ handler = new Handler();
+
// determine whether we support Camera2 API
// must be done before setDeviceDefaults()
initCamera2Support();
@@ -348,6 +404,30 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
if( MyDebug.LOG )
Log.d(TAG, "onCreate: time after updating folder history: " + (System.currentTimeMillis() - debug_time));
+ SharedPreferences.Editor editor = sharedPreferences.edit();
+ int isFirstTime = sharedPreferences.getInt("isFirstTimeChange", 0);
+ switch (isFirstTime) {
+ case 0:
+ String edge_pref = applicationInterface.getEdgeModePref();
+ if (DeviceSettings.isMurenaOne() && edge_pref.equals("default")) {
+ editor.putString(PreferenceKeys.EdgeModePreferenceKey, "off");
+ }
+ String save_location = sharedPreferences.getString(
+ PreferenceKeys.SaveLocationPreferenceKey, "Camera");
+ if (save_location.equals("OpenCamera")) {
+ editor.putString(PreferenceKeys.SaveLocationPreferenceKey, "Camera");
+ }
+ isFirstTime++;
+ case 1:
+ editor.putBoolean(PreferenceKeys.MaxBrightnessPreferenceKey, false);
+ isFirstTime++;
+ break;
+ default:
+ break;
+ }
+
+ editor.putInt("isFirstTimeChange", isFirstTime).apply();
+
// set up sensors
mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
@@ -402,6 +482,20 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
getWindow().setAttributes(layout);
}
+ if (getResources().getBoolean(R.bool.zoom_level_switch_supported)) {
+ cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
+ camerafinder = new CameraFinder(cameraManager);
+ cameraModel = camerafinder.getCameraModels();
+ cameraIdentifier = new CameraIdentifier(cameraModel);
+ camerafinder.init();
+ cameraIdentifier.init();
+ }
+
+ String[] ignoredCameraIDs = getResources().getStringArray(R.array.config_ignoredCameraIds);
+ if( MyDebug.LOG ) {
+ Log.d(TAG, "ignoredCameraIDs: " + Arrays.toString(ignoredCameraIDs));
+ }
+
// Setup multi-camera buttons (must be done after creating preview so we know which Camera API is being used,
// and before initialising on-screen visibility).
// We only allow the separate icon for switching cameras if:
@@ -412,12 +506,55 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
// If there are more than two cameras, but all cameras have the same "facing, we still stick
// with using the switch camera icon to iterate over all cameras.
int n_cameras = preview.getCameraControllerManager().getNumberOfCameras();
- if( n_cameras > 2 ) {
+ if (getResources().getBoolean(R.bool.zoom_level_switch_supported)) {
+ n_cameras = camerafinder.getAllCameraIdList().size();
+ if( n_cameras > 2 ) {
+ this.back_camera_ids = new ArrayList<>();
+ this.front_camera_ids = new ArrayList<>();
+ this.other_camera_ids = new ArrayList<>();
+ this.logical_camera_ids = new ArrayList<>();
+
+ if (!cameraModel.isEmpty()) {
+ for (CameraModel model : cameraModel) {
+ if (model.getCameraType() == CameraType.LOGICAL) {
+ logical_camera_ids.add(model.getId());
+ }
+ }
+ }
+
+ for(String cameraId: camerafinder.getAllCameraIdList()) {
+ if (Arrays.stream(ignoredCameraIDs).anyMatch(id -> id.equals(cameraId))) {
+ continue;
+ }
+ int id = Integer.parseInt(cameraId);
+ cameraCharacteristics = camerafinder.getCameraCharacteristics(id);
+ Integer facing = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
+ if (!logical_camera_ids.contains(id)
+ || getResources().getBoolean(R.bool.allow_logical_camera_ids)) {
+ switch(facing) {
+ case CameraMetadata.LENS_FACING_BACK:
+ back_camera_ids.add(id);
+ break;
+ case CameraMetadata.LENS_FACING_FRONT:
+ front_camera_ids.add(id);
+ break;
+ case CameraMetadata.LENS_FACING_EXTERNAL:
+ other_camera_ids.add(id);
+ break;
+ }
+ }
+ }
+ }
+ } else if (n_cameras > 2) {
this.back_camera_ids = new ArrayList<>();
this.front_camera_ids = new ArrayList<>();
this.other_camera_ids = new ArrayList<>();
- for(int i=0;i id.equals(currentCameraID))) {
+ continue;
+ }
+ switch (preview.getCameraControllerManager().getFacing(i)) {
case FACING_BACK:
back_camera_ids.add(i);
break;
@@ -430,6 +567,15 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
break;
}
}
+ }
+
+ if (n_cameras > 2) {
+ if( MyDebug.LOG ) {
+ Log.d(TAG, "back_camera_ids: " + back_camera_ids);
+ Log.d(TAG, "front_camera_ids: " + front_camera_ids);
+ Log.d(TAG, "other_camera_ids: " + other_camera_ids);
+ Log.d(TAG, "logical_camera_ids" + logical_camera_ids);
+ }
boolean multi_same_facing = back_camera_ids.size() >= 2 || front_camera_ids.size() >= 2 || other_camera_ids.size() >= 2;
int n_facing = 0;
if( back_camera_ids.size() > 0 )
@@ -446,6 +592,10 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
Log.d(TAG, "is_multi_cam: " + is_multi_cam);
}
+ if (getResources().getBoolean(R.bool.zoom_level_switch_supported)) {
+ initZoomRatios();
+ }
+
if( !is_multi_cam ) {
this.back_camera_ids = null;
this.front_camera_ids = null;
@@ -454,7 +604,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
}
// initialise on-screen button visibility
- View switchCameraButton = findViewById(R.id.switch_camera);
+ ImageButton switchCameraButton = findViewById(R.id.switch_camera);
switchCameraButton.setVisibility(n_cameras > 1 ? View.VISIBLE : View.GONE);
// switchMultiCameraButton visibility updated below in mainUI.updateOnScreenIcons(), as it also depends on user preference
View speechRecognizerButton = findViewById(R.id.audio_control);
@@ -463,10 +613,12 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
Log.d(TAG, "onCreate: time after setting button visibility: " + (System.currentTimeMillis() - debug_time));
View pauseVideoButton = findViewById(R.id.pause_video);
pauseVideoButton.setVisibility(View.GONE);
- View takePhotoVideoButton = findViewById(R.id.take_photo_when_video_recording);
+ ImageButton takePhotoVideoButton = findViewById(R.id.take_photo_when_video_recording);
takePhotoVideoButton.setVisibility(View.GONE);
View cancelPanoramaButton = findViewById(R.id.cancel_panorama);
cancelPanoramaButton.setVisibility(View.GONE);
+ View finishPanoramaButton = findViewById(R.id.finish_panorama);
+ finishPanoramaButton.setVisibility(View.GONE);
// We initialise optional controls to invisible/gone, so they don't show while the camera is opening - the actual visibility is
// set in cameraSetup().
@@ -480,6 +632,8 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
zoomControls.setVisibility(View.GONE);
View zoomSeekbar = findViewById(R.id.zoom_seekbar);
zoomSeekbar.setVisibility(View.INVISIBLE);
+ View zoomSeekbarIcon = findViewById(R.id.zoom_seekbar_icon);
+ zoomSeekbarIcon.setVisibility(View.INVISIBLE);
// initialise state of on-screen icons
mainUI.updateOnScreenIcons();
@@ -576,7 +730,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
});
// set up switch camera button long click - must be done after setting is_multi_cam
- if( n_cameras > 2 ) {
+ if( n_cameras > 2 && !getResources().getBoolean(R.bool.zoom_level_switch_supported)) {
View.OnLongClickListener long_click_listener = new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
@@ -612,7 +766,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
Log.d(TAG, "onCreate: time after setting system ui visibility listener: " + (System.currentTimeMillis() - debug_time));
// show "about" dialog for first time use
- if( !has_done_first_time ) {
+ if(false) {
if( !is_test ) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setTitle(R.string.app_name);
@@ -690,7 +844,6 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
// We set the latest_version whether or not the dialog is shown - if we showed the first time dialog, we don't
// want to then show the What's New dialog next time we run! Similarly if the user had disabled showing the dialog,
// but then enables it, we still shouldn't show the dialog until the new time Open Camera upgrades.
- SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt(PreferenceKeys.LatestVersionPreferenceKey, version_code);
editor.apply();
}
@@ -750,10 +903,49 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
notificationManager.createNotificationChannel(channel);
}*/
+ calculateNavigationGap();
+
if( MyDebug.LOG )
Log.d(TAG, "onCreate: total time for Activity startup: " + (System.currentTimeMillis() - debug_time));
}
+ @Override
+ protected void onStart() {
+ super.onStart();
+ EventBus.getDefault().register(this);
+ }
+
+ /**
+ * if navigationMode is no gesture, then retrieve navigationBar's height & update navigation_gap
+ */
+ private void calculateNavigationGap() {
+ int resourceId = getResources().getIdentifier("config_navBarInteractionMode", "integer", "android");
+ if (resourceId > 0) {
+ int navType = getResources().getInteger(resourceId);
+ if (navType != 2) { //gesture mode = 2
+ resourceId = getResources().getIdentifier("navigation_bar_height", "dimen", "android");
+ if (resourceId > 0) {
+ navigation_gap = getResources().getDimensionPixelSize(resourceId);
+ }
+ }
+ }
+ }
+
+ public void handleDecorFitsSystemWindows(double previewRatio, double screenRatio) {
+ boolean decorFitsSystemWindows = screenRatio >= previewRatio;
+ setDecorFitsSystemWindows(decorFitsSystemWindows);
+ can_draw_nav_bar = !decorFitsSystemWindows;
+ }
+
+ /**
+ * check is the preview size = maximise && is not in video mode, then return true
+ */
+ public boolean isInFullScreenMode() {
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
+ String preview_size = sharedPreferences.getString(PreferenceKeys.PreviewSizePreferenceKey, "preference_preview_size_display");
+ return !(preview_size.equals("preference_preview_size_wysiwyg") || preview.isVideo());
+ }
+
/** Whether to use codepaths that are compatible with scoped storage.
*/
public static boolean useScopedStorage() {
@@ -801,15 +993,15 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
int cameraId = getActualCameraId();
switch( preview.getCameraControllerManager().getFacing(cameraId) ) {
case FACING_BACK:
- if( back_camera_ids.size() > 0 )
+ if( back_camera_ids.size() > 1 )
return true;
break;
case FACING_FRONT:
- if( front_camera_ids.size() > 0 )
+ if( front_camera_ids.size() > 1 )
return true;
break;
default:
- if( other_camera_ids.size() > 0 )
+ if( other_camera_ids.size() > 1 )
return true;
break;
}
@@ -847,6 +1039,14 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
//Log.d(TAG, "is_pixel_phone? " + is_pixel_phone);
//Log.d(TAG, "is_pixel_xl_phone? " + is_pixel_xl_phone);
}*/
+ if ( DeviceSettings.deviceUsingFakeFlash() ) {
+ if( MyDebug.LOG )
+ Log.d(TAG, "set fake flash for camera2");
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
+ final SharedPreferences.Editor editor = sharedPreferences.edit();
+ editor.putBoolean(PreferenceKeys.Camera2FakeFlashPreferenceKey, true);
+ editor.apply();
+ }
/*if( is_samsung || is_oneplus ) {
// The problems we used to have on Samsung Galaxy devices are now fixed, by setting
// TEMPLATE_PREVIEW for the precaptureBuilder in CameraController2. This also fixes the
@@ -912,6 +1112,8 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
}
}
}
+
+ updateCameraResolution();
}
/** Switches modes if required, if called from a relevant intent/tile.
@@ -1091,7 +1293,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
String new_folder;
if( res.alt == null ) {
// no alternative, fall back to default
- new_folder = "OpenCamera";
+ new_folder = "Camera";
}
else {
// replace with the alternative
@@ -1245,6 +1447,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
if( MyDebug.LOG )
Log.d(TAG, "onStop");
super.onStop();
+ EventBus.getDefault().unregister(this);
// we stop location listening in onPause, but done here again just to be certain!
applicationInterface.getLocationSupplier().freeLocationListeners();
@@ -1435,6 +1638,26 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
else {
mainUI.onKeyUp(keyCode, event);
}
+
+ if (!camera_in_background && keyCode == 131 && DeviceSettings.isMurenaTwo()) {
+ String cameraState = Utils.getProperty("persist.sys.hwswitch.state", null);
+ if (cameraState == null) return super.onKeyUp(keyCode, event);
+
+ if (retryRunnable != null) {
+ handler.removeCallbacks(retryRunnable);
+ }
+
+ murenaTwoHwKill = Objects.equals(cameraState, "1");
+ retryRunnable = () -> {
+ if (!murenaTwoHwKill) {
+ preview.retryOpenCamera();
+ } else {
+ restartOpenCamera();
+ }
+ };
+ handler.postDelayed(retryRunnable, murenaTwoHwKill ? 200 : 5000);
+ }
+
return super.onKeyUp(keyCode, event);
}
@@ -1466,11 +1689,11 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
}
public void zoomIn() {
- zoomByStep(1);
+ zoomByStep(-1);
}
public void zoomOut() {
- zoomByStep(-1);
+ zoomByStep(1);
}
public void changeExposure(int change) {
@@ -2025,6 +2248,13 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
applicationInterface.stopPanorama(true);
}
+ public void clickedFinishPanorama(View view) {
+ if (MyDebug.LOG) {
+ Log.d(TAG, "clickedFinishPanorama");
+ }
+ this.takePicture(false);
+ }
+
public void clickedCycleRaw(View view) {
if( MyDebug.LOG )
Log.d(TAG, "clickedCycleRaw");
@@ -2321,20 +2551,8 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
Log.e(TAG, "getNextMultiCameraId() called but not in multi-cam mode");
throw new RuntimeException("getNextMultiCameraId() called but not in multi-cam mode");
}
- List camera_set;
- // don't use preview.getCameraController(), as it may be null if user quickly switches between cameras
int currCameraId = getActualCameraId();
- switch( preview.getCameraControllerManager().getFacing(currCameraId) ) {
- case FACING_BACK:
- camera_set = back_camera_ids;
- break;
- case FACING_FRONT:
- camera_set = front_camera_ids;
- break;
- default:
- camera_set = other_camera_ids;
- break;
- }
+ List camera_set = getCameraSet(currCameraId);
int cameraId;
int indx = camera_set.indexOf(currCameraId);
if( indx == -1 ) {
@@ -2358,6 +2576,24 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
return cameraId;
}
+ private List getCameraSet(int currCameraId) {
+ // don't use preview.getCameraController(), as it may be null if user quickly switches between cameras
+ List camera_set;
+ switch( preview.getCameraControllerManager().getFacing(currCameraId) ) {
+ case FACING_BACK:
+ camera_set = back_camera_ids;
+ break;
+ case FACING_FRONT:
+ camera_set = front_camera_ids;
+ break;
+ default:
+ camera_set = other_camera_ids;
+ break;
+ }
+
+ return camera_set;
+ }
+
private void pushCameraIdToast(int cameraId) {
if( MyDebug.LOG )
Log.d(TAG, "pushCameraIdToast: " + cameraId);
@@ -2374,7 +2610,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
}
}
- private void userSwitchToCamera(int cameraId) {
+ private void userSwitchToCamera(int cameraId, boolean is_multi_cam) {
if( MyDebug.LOG )
Log.d(TAG, "userSwitchToCamera: " + cameraId);
View switchCameraButton = findViewById(R.id.switch_camera);
@@ -2384,13 +2620,93 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
switchMultiCameraButton.setEnabled(false);
applicationInterface.reset(true);
this.getApplicationInterface().getDrawPreview().setDimPreview(true);
- this.preview.setCamera(cameraId);
+ if (is_multi_cam && getResources().getBoolean(R.bool.zoom_level_switch_supported)) {
+ changeZoomFactor();
+ } else {
+ this.preview.setCamera(cameraId);
+ }
switchCameraButton.setEnabled(true);
switchMultiCameraButton.setEnabled(true);
// no need to call mainUI.setSwitchCameraContentDescription - this will be called from Preview.cameraSetup when the
// new camera is opened
}
+ private void initZoomRatios() {
+ String[] auxZoomRatios = getResources().getStringArray(R.array.config_auxCameraZoomRatios);
+ if (auxZoomRatios.length == 0 && !cameraModel.isEmpty()) {
+ for (CameraModel model : cameraModel) {
+ cameraCharacteristics = camerafinder.getCameraCharacteristics(model.getId());
+ Integer facing = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
+ CameraType cameraType = model.getCameraType();
+ if (cameraType != CameraType.LOGICAL) {
+ if (facing == CameraMetadata.LENS_FACING_BACK) {
+ if (cameraType == CameraType.MAIN || cameraType == CameraType.ULTRAWIDE
+ || cameraType == CameraType.TELE || cameraType == CameraType.MACRO) {
+ backZoomRatios.add(model.getZoomFactor());
+ }
+ } else if (facing == CameraMetadata.LENS_FACING_FRONT) {
+ if (cameraType == CameraType.MAIN || cameraType == CameraType.ULTRAWIDE) {
+ frontZoomRatios.add(model.getZoomFactor());
+ }
+ }
+ }
+ }
+ } else {
+ for (String zoom : auxZoomRatios) {
+ String[] separated = zoom.split(":");
+ float id = Integer.parseInt(separated[0]);
+ float zoomRatio = Float.parseFloat(separated[1]);
+ if (id == 1) {
+ frontZoomRatios.add(zoomRatio);
+ } else {
+ backZoomRatios.add(zoomRatio);
+ }
+ }
+ }
+
+ if( MyDebug.LOG ) {
+ Log.d(TAG, "frontZoomRatios" + frontZoomRatios);
+ Log.d(TAG, "backZoomRatios" + backZoomRatios);
+ }
+ }
+
+ private void changeZoomFactor() {
+ float zoom = getNextMultiZoomRatio(backZoomRatios);
+ if (preview.getCameraControllerManager().getFacing(getActualCameraId())
+ == CameraController.Facing.FACING_FRONT) {
+ zoom = getNextMultiZoomRatio(frontZoomRatios);
+ }
+
+ preview.zoomTo(preview.findNxZoom(zoom), true);
+ updateMultiPixelIcon(backZoomRatios.indexOf(zoom));
+
+ if( MyDebug.LOG )
+ Log.d(TAG, "changeZoomFactor" + zoom);
+ }
+
+ public float getNextMultiZoomRatio(List zoomRations) {
+ float currentZoom = preview.getZoomRatio();
+ float zoomRatio;
+ int index = zoomRations.indexOf(currentZoom);
+ if ( index == -1 ) {
+ zoomRatio = zoomRations.get(0);
+ } else {
+ index = (index+1) % zoomRations.size();
+ zoomRatio = zoomRations.get(index);
+ }
+ if( MyDebug.LOG )
+ Log.d(TAG, "next zoom: " + zoomRatio);
+ return zoomRatio;
+ }
+
+ private void updateMultiPixelIcon(int index) {
+ Button multiCameraButton = findViewById(R.id.switch_multi_camera);
+ if (multiCameraButton.getVisibility() != View.GONE) {
+ String text = getString(R.string.switch_multi_camera_lens) + " " + (index + 1);
+ multiCameraButton.setText(text);
+ }
+ }
+
/**
* Selects the next camera on the phone - in practice, switches between
* front and back cameras
@@ -2419,7 +2735,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
// disappear when the user touches the screen anyway.)
preview.clearActiveFakeToast();
}
- userSwitchToCamera(cameraId);
+ userSwitchToCamera(cameraId, false);
push_switched_camera = true;
}
@@ -2441,7 +2757,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
if( this.preview.canSwitchCamera() ) {
int cameraId = getNextMultiCameraId();
pushCameraIdToast(cameraId);
- userSwitchToCamera(cameraId);
+ userSwitchToCamera(cameraId, true);
}
}
@@ -2490,7 +2806,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
MainActivity.this.closePopup();
if( MainActivity.this.preview.canSwitchCamera() ) {
pushCameraIdToast(which);
- userSwitchToCamera(which);
+ userSwitchToCamera(which, true);
}
}
setWindowFlagsForCamera();
@@ -2508,6 +2824,56 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
showAlert(alertDialog.create());
}
+ /* getBetterQRCodeCameraID()
+ Returns the best camera ID, based on the fact that it's probably the first rear camera available.
+ The user always has the option of selecting with the lens switcher in case the choice is wrong.
+ Returns -1 if no camera available. In that case we do *NOT* trig any switch.
+ */
+ public int getBetterQRCodeCameraID() {
+ int best_qrcode_camera = -1;
+ if( MyDebug.LOG )
+ Log.d(TAG, "getBetterQRCodeCameraID");
+ if( !isMultiCamEnabled() ) {
+ Log.e(TAG, "getBetterQRCodeCameraID switch multi camera icon shouldn't have been visible");
+ return best_qrcode_camera;
+ }
+ if( preview.isOpeningCamera() ) {
+ if( MyDebug.LOG )
+ Log.d(TAG, "getBetterQRCodeCameraID already opening camera in background thread");
+ return best_qrcode_camera;
+ }
+ if( this.preview.canSwitchCamera() ) {
+ try {
+ CameraManager _cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
+ for (String _cameraId : _cameraManager.getCameraIdList()) {
+ CameraCharacteristics characteristics = _cameraManager.getCameraCharacteristics(_cameraId);
+ Integer facing = characteristics.get(CameraCharacteristics.LENS_FACING);
+ if (facing != null && facing == CameraCharacteristics.LENS_FACING_BACK) {
+ best_qrcode_camera = Integer.parseInt(_cameraId);
+ if( MyDebug.LOG )
+ Log.d(TAG, "best_qrcode_camera ="+best_qrcode_camera);
+ break;
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return best_qrcode_camera;
+ }
+
+ private void updateMultiCameraIcon() {
+ Button multiCameraButton = findViewById(R.id.switch_multi_camera);
+
+ if (multiCameraButton.getVisibility() != View.GONE) {
+ int currCameraId = getActualCameraId();
+ List camera_set = getCameraSet(currCameraId);
+ int index = camera_set.indexOf(currCameraId);
+ String text = getString(R.string.switch_multi_camera_lens) + " " + (index + 1);
+ multiCameraButton.setText(text);
+ }
+ }
+
/**
* Toggles Photo/Video mode
*/
@@ -2705,7 +3071,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
//case "preference_show_take_photo": // need to update the UI
case "preference_show_toasts":
case "preference_show_whats_new":
- //case "preference_multi_cam_button": // need to update the UI
+ //case "preference_multi_cam_button": // need to update the UI
case "preference_keep_display_on":
case "preference_max_brightness":
//case "preference_resolution": // need to set up camera controller and preview
@@ -2947,6 +3313,10 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
if( preview.getCurrentPictureSize() != null ) {
bundle.putInt("resolution_width", preview.getCurrentPictureSize().width);
bundle.putInt("resolution_height", preview.getCurrentPictureSize().height);
+ SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
+ if (pref.getBoolean("isFirstTimeResolution_" + preview.getCameraId(), true)) {
+ updateCameraResolution();
+ }
}
//List video_quality = this.preview.getVideoQualityHander().getSupportedVideoQuality();
@@ -3097,6 +3467,38 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
return true;
}
+ private void updateCameraResolution() {
+ SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
+ SharedPreferences.Editor editor = pref.edit();
+ String[] defaultResolutions = getResources().getStringArray(
+ R.array.config_e_os_camera_default_resolution_lens);
+ for (String entry : defaultResolutions) {
+ if (!entry.matches("\\d+:\\d+x\\d+")) continue;
+
+ String[] mainParts = entry.split(":");
+ String[] resParts = mainParts[1].split("x");
+ int cameraId = Integer.parseInt(mainParts[0]);
+ String resolution = resParts[0] + " " + resParts[1];
+
+ boolean existing = true;
+ if (preview != null && preview.getSupportedPictureSizes(false) != null) {
+ List supportedResolutions =
+ preview.getSupportedPictureSizes(false);
+ String highestResolution = supportedResolutions.get(0).width + " "
+ + supportedResolutions.get(0).height;
+ String currentResolution = pref.getString(
+ PreferenceKeys.getResolutionPreferenceKey(cameraId), "");
+ existing = highestResolution.equals(currentResolution) && cameraId == preview.getCameraId();
+ }
+ if (existing) {
+ editor.putString(PreferenceKeys.getResolutionPreferenceKey(cameraId), resolution);
+ editor.putBoolean("isFirstTimeResolution_" + cameraId, false);
+ }
+ }
+
+ editor.apply();
+ }
+
public void updateForSettings(boolean update_camera) {
updateForSettings(update_camera, null);
}
@@ -3380,6 +3782,8 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
changed = changed || (button.getVisibility() != View.GONE);
button.setVisibility(View.GONE);
}
+ updateMultiCameraIcon();
+
if( MyDebug.LOG )
Log.d(TAG, "checkDisableGUIIcons: " + changed);
return changed;
@@ -3592,7 +3996,13 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
}
}
+ /**
+ * if sdk>=R & can't draw navigation bar, means the DecorFitsSystemWindows=true, then we can ignore navigationGap.
+ */
public int getNavigationGap() {
+ if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !can_draw_nav_bar) {
+ return 0;
+ }
return want_no_limits ? navigation_gap : 0;
}
@@ -3607,7 +4017,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
return;
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
- String immersive_mode = sharedPreferences.getString(PreferenceKeys.ImmersiveModePreferenceKey, "immersive_mode_low_profile");
+ String immersive_mode = sharedPreferences.getString(PreferenceKeys.ImmersiveModePreferenceKey, "immersive_mode_off");
boolean hide_ui = immersive_mode.equals("immersive_mode_gui") || immersive_mode.equals("immersive_mode_everything");
if( visible ) {
@@ -3628,8 +4038,8 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
}
/** Set up listener to handle listening for system ui changes (for immersive mode), and setting
- * a WindowsInsetsListener to find the navigation_gap.
- */
+ * a WindowsInsetsListener to find the navigation_gap.
+ */
private void setupSystemUiVisibilityListener() {
View decorView = getWindow().getDecorView();
@@ -3783,7 +4193,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
// whether we are using a Kit Kat style immersive mode (either hiding navigation bar, GUI, or everything)
if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT ) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
- String immersive_mode = sharedPreferences.getString(PreferenceKeys.ImmersiveModePreferenceKey, "immersive_mode_low_profile");
+ String immersive_mode = sharedPreferences.getString(PreferenceKeys.ImmersiveModePreferenceKey, "immersive_mode_off");
if( immersive_mode.equals("immersive_mode_navigation") || immersive_mode.equals("immersive_mode_gui") || immersive_mode.equals("immersive_mode_everything") )
return true;
}
@@ -3794,7 +4204,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
// whether we are using a Kit Kat style immersive mode for everything
if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT ) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
- String immersive_mode = sharedPreferences.getString(PreferenceKeys.ImmersiveModePreferenceKey, "immersive_mode_low_profile");
+ String immersive_mode = sharedPreferences.getString(PreferenceKeys.ImmersiveModePreferenceKey, "immersive_mode_off");
if( immersive_mode.equals("immersive_mode_everything") )
return true;
}
@@ -3854,7 +4264,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
}
else {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
- String immersive_mode = sharedPreferences.getString(PreferenceKeys.ImmersiveModePreferenceKey, "immersive_mode_low_profile");
+ String immersive_mode = sharedPreferences.getString(PreferenceKeys.ImmersiveModePreferenceKey, "immersive_mode_off");
if( immersive_mode.equals("immersive_mode_low_profile") )
getWindow().getDecorView().setSystemUiVisibility(saved_flags | View.SYSTEM_UI_FLAG_LOW_PROFILE);
else
@@ -3865,6 +4275,18 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
getWindow().getDecorView().setSystemUiVisibility(saved_flags);
}
+ /**
+ * setDecorFitsSystemWindows for build >=R
+ * @return if the operation successful or not
+ */
+ public boolean setDecorFitsSystemWindows(boolean decorFitsSystemWindows) {
+ if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+ getWindow().setDecorFitsSystemWindows(decorFitsSystemWindows);
+ return true;
+ }
+ return false;
+ }
+
/** Sets the brightness level for normal operation (when camera preview is visible).
* If force_max is true, this always forces maximum brightness; otherwise this depends on user preference.
*/
@@ -3875,7 +4297,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
// done here rather than onCreate, so that changing it in preferences takes effect without restarting app
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
final WindowManager.LayoutParams layout = getWindow().getAttributes();
- if( force_max || sharedPreferences.getBoolean(PreferenceKeys.MaxBrightnessPreferenceKey, true) ) {
+ if( force_max || sharedPreferences.getBoolean(PreferenceKeys.MaxBrightnessPreferenceKey, false) ) {
layout.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL;
}
else {
@@ -4059,6 +4481,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
}
setImmersiveMode(false);
+ setDecorFitsSystemWindows(true);
camera_in_background = true;
// we disable location listening when showing settings or a dialog etc - saves battery life, also better for privacy
@@ -4259,7 +4682,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
private void updateGalleryIconToBlank() {
if( MyDebug.LOG )
Log.d(TAG, "updateGalleryIconToBlank");
- ImageButton galleryButton = this.findViewById(R.id.gallery);
+ CircleImageView galleryButton = this.findViewById(R.id.gallery);
int bottom = galleryButton.getPaddingBottom();
int top = galleryButton.getPaddingTop();
int right = galleryButton.getPaddingRight();
@@ -4267,7 +4690,8 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
/*if( MyDebug.LOG )
Log.d(TAG, "padding: " + bottom);*/
galleryButton.setImageBitmap(null);
- galleryButton.setImageResource(R.drawable.baseline_photo_library_white_48);
+ galleryButton.setImageResource(R.drawable.ic_album);
+ galleryButton.setBorderWidth(0);
// workaround for setImageResource also resetting padding, Android bug
galleryButton.setPadding(left, top, right, bottom);
gallery_bitmap = null;
@@ -4287,8 +4711,9 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
Log.d(TAG, "cancel update_gallery_future");
update_gallery_future.cancel(true);
}
- ImageButton galleryButton = this.findViewById(R.id.gallery);
+ CircleImageView galleryButton = this.findViewById(R.id.gallery);
galleryButton.setImageBitmap(thumbnail);
+ galleryButton.setBorderWidth(6);
gallery_bitmap = thumbnail;
}
@@ -4444,7 +4869,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
update_gallery_future = null;
}
- //}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ //}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
};
ExecutorService executor = Executors.newSingleThreadExecutor();
@@ -4461,7 +4886,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
this.runOnUiThread(new Runnable() {
public void run() {
- final ImageButton galleryButton = findViewById(R.id.gallery);
+ final CircleImageView galleryButton = findViewById(R.id.gallery);
if( started ) {
//galleryButton.setColorFilter(0x80ffffff, PorterDuff.Mode.MULTIPLY);
if( gallery_save_anim == null ) {
@@ -4506,7 +4931,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
}
/** Creates a notification to indicate still saving images (or updates an existing one).
- * Update: notifications now removed due to needing permissions on Android 13+.
+ * Update: notifications now removed due to needing permissions on Android 13+.
*/
private void createImageSavingNotification() {
if( MyDebug.LOG )
@@ -4550,8 +4975,9 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
if( MyDebug.LOG )
Log.d(TAG, "openGallery");
//Intent intent = new Intent(Intent.ACTION_VIEW, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
- Uri uri = applicationInterface.getStorageUtils().getLastMediaScanned();
- boolean is_raw = uri != null && applicationInterface.getStorageUtils().getLastMediaScannedIsRaw();
+ Uri primaryUri = applicationInterface.getStorageUtils().getLastMediaScanned();
+ Uri uri = null;
+ boolean is_raw = false;
if( MyDebug.LOG && uri != null ) {
Log.d(TAG, "found cached most recent uri: " + uri);
Log.d(TAG, " is_raw: " + is_raw);
@@ -4602,11 +5028,20 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
is_raw = false;
}
+
+ boolean allowEdit = true;
+ if( uri == null ) {
+ uri = primaryUri;
+ is_raw = uri != null && applicationInterface.getStorageUtils().getLastMediaScannedIsRaw();
+ allowEdit = false;
+ }
+
if( !is_test ) {
// don't do if testing, as unclear how to exit activity to finish test (for testGallery())
if( MyDebug.LOG )
Log.d(TAG, "launch uri:" + uri);
final String REVIEW_ACTION = "com.android.camera.action.REVIEW";
+ final String KEY_FROM_SNAPCAM = "from-snapcam";
boolean done = false;
if( !is_raw ) {
// REVIEW_ACTION means we can view video files without autoplaying.
@@ -4618,6 +5053,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
Log.d(TAG, "try REVIEW_ACTION");
try {
Intent intent = new Intent(REVIEW_ACTION, uri);
+ intent.putExtra(KEY_FROM_SNAPCAM, allowEdit);
this.startActivity(intent);
done = true;
}
@@ -4630,6 +5066,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
Log.d(TAG, "try ACTION_VIEW");
try {
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
+ intent.putExtra(KEY_FROM_SNAPCAM, allowEdit);
this.startActivity(intent);
}
catch(ActivityNotFoundException e) {
@@ -4967,7 +5404,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
editText.setHint(getResources().getString(R.string.preference_save_location));
editText.setInputType(InputType.TYPE_CLASS_TEXT);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
- editText.setText(sharedPreferences.getString(PreferenceKeys.SaveLocationPreferenceKey, "OpenCamera"));
+ editText.setText(sharedPreferences.getString(PreferenceKeys.SaveLocationPreferenceKey, "Camera"));
InputFilter filter = new InputFilter() {
// whilst Android seems to allow any characters on internal memory, SD cards are typically formatted with FAT32
final String disallowed = "|\\?*<\":>";
@@ -5284,6 +5721,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
closePopup();
this.last_continuous_fast_burst = continuous_fast_burst;
+ this.should_run_continuous_fast_burst = continuous_fast_burst;
this.preview.takePicturePressed(photo_snapshot, continuous_fast_burst);
}
@@ -5484,36 +5922,38 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
Log.d(TAG, "set up zoom");
if( MyDebug.LOG )
Log.d(TAG, "has_zoom? " + preview.supportsZoom());
- ZoomControls zoomControls = findViewById(R.id.zoom);
+ View zoomControlHolder = findViewById(R.id.zoom);
SeekBar zoomSeekBar = findViewById(R.id.zoom_seekbar);
+ View zoomSeekbarIcon = findViewById(R.id.zoom_seekbar_icon);
if( preview.supportsZoom() ) {
if( sharedPreferences.getBoolean(PreferenceKeys.ShowZoomControlsPreferenceKey, false) ) {
- zoomControls.setIsZoomInEnabled(true);
- zoomControls.setIsZoomOutEnabled(true);
- zoomControls.setZoomSpeed(20);
-
- zoomControls.setOnZoomInClickListener(new View.OnClickListener(){
- public void onClick(View v){
- zoomIn();
- }
- });
- zoomControls.setOnZoomOutClickListener(new View.OnClickListener(){
- public void onClick(View v){
- zoomOut();
- }
- });
if( !mainUI.inImmersiveMode() ) {
- zoomControls.setVisibility(View.VISIBLE);
+ View zoomInButton = findViewById(R.id.button_zoom_in);
+ View zoomOutButton = findViewById(R.id.button_zoom_out);
+ zoomInButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ zoomIn();
+ }
+ });
+
+ zoomOutButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ zoomOut();
+ }
+ });
+ zoomControlHolder.setVisibility(View.VISIBLE);
}
}
else {
- zoomControls.setVisibility(View.GONE);
+ zoomControlHolder.setVisibility(View.GONE);
}
zoomSeekBar.setOnSeekBarChangeListener(null); // clear an existing listener - don't want to call the listener when setting up the progress bar to match the existing state
zoomSeekBar.setMax(preview.getMaxZoom());
- zoomSeekBar.setProgress(preview.getMaxZoom()-preview.getCameraController().getZoom());
+ zoomSeekBar.setProgress(preview.getCameraController().getZoom());
zoomSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
@@ -5523,7 +5963,8 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
// indirectly set zoom via this method, from setting the zoom slider
// if hasSmoothZoom()==true, then the preview already handled zooming to the current value
if( !preview.hasSmoothZoom() )
- preview.zoomTo(preview.getMaxZoom() - progress, false);
+ preview.zoomTo(progress, false);
+ updateMultiCameraIcon();
}
@Override
@@ -5535,23 +5976,26 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
}
});
- if( sharedPreferences.getBoolean(PreferenceKeys.ShowZoomSliderControlsPreferenceKey, true) ) {
+ if( sharedPreferences.getBoolean(PreferenceKeys.ShowZoomSliderControlsPreferenceKey, false) ) {
if( !mainUI.inImmersiveMode() ) {
zoomSeekBar.setVisibility(View.VISIBLE);
+ zoomSeekbarIcon.setVisibility(View.VISIBLE);
}
}
else {
zoomSeekBar.setVisibility(View.INVISIBLE); // should be INVISIBLE not GONE, as the focus_seekbar is aligned to be left to this; in future we might want this similarly for exposure panel
+ zoomSeekbarIcon.setVisibility(View.INVISIBLE);
}
}
else {
- zoomControls.setVisibility(View.GONE);
+ zoomControlHolder.setVisibility(View.GONE);
zoomSeekBar.setVisibility(View.INVISIBLE); // should be INVISIBLE not GONE, as the focus_seekbar is aligned to be left to this; in future we might want this similarly for the exposure panel
+ zoomSeekbarIcon.setVisibility(View.INVISIBLE);
}
if( MyDebug.LOG )
Log.d(TAG, "cameraSetup: time after setting up zoom: " + (System.currentTimeMillis() - debug_time));
- View takePhotoButton = findViewById(R.id.take_photo);
+ ImageButton takePhotoButton = findViewById(R.id.take_photo);
if( sharedPreferences.getBoolean(PreferenceKeys.ShowTakePhotoPreferenceKey, true) ) {
if( !mainUI.inImmersiveMode() ) {
takePhotoButton.setVisibility(View.VISIBLE);
@@ -5668,18 +6112,6 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
-
- ZoomControls seek_bar_zoom = findViewById(R.id.exposure_seekbar_zoom);
- seek_bar_zoom.setOnZoomInClickListener(new View.OnClickListener(){
- public void onClick(View v){
- changeExposure(1);
- }
- });
- seek_bar_zoom.setOnZoomOutClickListener(new View.OnClickListener(){
- public void onClick(View v){
- changeExposure(-1);
- }
- });
}
}
if( MyDebug.LOG )
@@ -6189,7 +6621,7 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
simple = false;
}
}
- else {
+ else { //Camera
if( photo_mode == MyApplicationInterface.PhotoMode.Panorama ) {
// don't show resolution in panorama mode
toast_string = "";
@@ -6223,7 +6655,9 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
simple = false;
}
}
- if( applicationInterface.getFaceDetectionPref() ) {
+ if (preview.isQRCode()) {
+ toast_string = "QRCode";
+ } else if( applicationInterface.getFaceDetectionPref() ) { //Camera || Video
// important so that the user realises why touching for focus/metering areas won't work - easy to forget that face detection has been turned on!
toast_string += "\n" + getResources().getString(R.string.preference_face_detection);
simple = false;
@@ -6479,7 +6913,18 @@ public class MainActivity extends AppCompatActivity implements PreferenceFragmen
public void takePhotoButtonLongClickCancelled() {
if( MyDebug.LOG )
Log.d(TAG, "takePhotoButtonLongClickCancelled");
- if( preview.getCameraController() != null && preview.getCameraController().isContinuousBurstInProgress() ) {
+ if (preview.getCameraController() == null) {
+ return;
+ }
+ if (preview.getCameraController().isContinuousBurstInProgress()) {
+ preview.getCameraController().stopContinuousBurst();
+ }
+ should_run_continuous_fast_burst = false;
+ }
+
+ @Subscribe(threadMode = ThreadMode.MAIN_ORDERED)
+ public void onContinuousBurstImageRunningAction(ContinuousBurstImageRunningAction action) {
+ if (!should_run_continuous_fast_burst && preview.getCameraController() != null && preview.getCameraController().isContinuousBurstInProgress()) {
preview.getCameraController().stopContinuousBurst();
}
}
diff --git a/app/src/main/java/net/sourceforge/opencamera/MyApplicationInterface.java b/app/src/main/java/net/sourceforge/opencamera/MyApplicationInterface.java
index e0c997e5ba663c9f267803639d140781665dff72..0ef85af2c448cb62f11b3ffa83b8210900519bd0 100644
--- a/app/src/main/java/net/sourceforge/opencamera/MyApplicationInterface.java
+++ b/app/src/main/java/net/sourceforge/opencamera/MyApplicationInterface.java
@@ -18,6 +18,7 @@ import net.sourceforge.opencamera.preview.ApplicationInterface;
import net.sourceforge.opencamera.preview.BasicApplicationInterface;
import net.sourceforge.opencamera.preview.Preview;
import net.sourceforge.opencamera.preview.VideoProfile;
+import net.sourceforge.opencamera.ui.CircleImageView;
import net.sourceforge.opencamera.ui.DrawPreview;
import android.annotation.TargetApi;
@@ -1887,9 +1888,7 @@ public class MyApplicationInterface extends BasicApplicationInterface {
panorama_pic_accepted = false;
panorama_dir_left_to_right = true;
- main_activity.getMainUI().setTakePhotoIcon();
- View cancelPanoramaButton = main_activity.findViewById(R.id.cancel_panorama);
- cancelPanoramaButton.setVisibility(View.VISIBLE);
+ main_activity.getMainUI().handlePanoromaModeButtonsVisibility();
main_activity.getMainUI().closeExposureUI(); // close seekbars if open (popup is already closed when taking a photo)
// taking the photo will end up calling MainUI.showGUI(), which will hide the other on-screen icons
}
@@ -1925,9 +1924,7 @@ public class MyApplicationInterface extends BasicApplicationInterface {
if( is_cancelled ) {
imageSaver.flushImageBatch();
}
- main_activity.getMainUI().setTakePhotoIcon();
- View cancelPanoramaButton = main_activity.findViewById(R.id.cancel_panorama);
- cancelPanoramaButton.setVisibility(View.GONE);
+ main_activity.getMainUI().handlePanoromaModeButtonsVisibility();
main_activity.getMainUI().showGUI(); // refresh UI icons now that we've stopped panorama
}
@@ -2352,6 +2349,9 @@ public class MyApplicationInterface extends BasicApplicationInterface {
if( dategeo_subtitles && video_method != ApplicationInterface.VideoMethod.URI ) {
startVideoSubtitlesTask(video_method);
}
+
+ ImageButton view = main_activity.findViewById(R.id.take_photo);
+ view.setImageResource(R.drawable.ic_camera_video_recording);
}
@Override
@@ -2458,7 +2458,7 @@ public class MyApplicationInterface extends BasicApplicationInterface {
}
}
if( thumbnail != null ) {
- ImageButton galleryButton = main_activity.findViewById(R.id.gallery);
+ CircleImageView galleryButton = main_activity.findViewById(R.id.gallery);
int width = thumbnail.getWidth();
int height = thumbnail.getHeight();
if( MyDebug.LOG )
@@ -2639,6 +2639,7 @@ public class MyApplicationInterface extends BasicApplicationInterface {
@Override
public void onCameraError() {
+ if (DeviceSettings.isMurenaTwo()) return;
main_activity.getPreview().showToast(null, R.string.camera_error);
}
diff --git a/app/src/main/java/net/sourceforge/opencamera/MyDebug.java b/app/src/main/java/net/sourceforge/opencamera/MyDebug.java
index 00e82f8f59e7016b25fcc99a8d0063e37661982b..f3ff6fff9820f6c3a911283991e303708090c767 100644
--- a/app/src/main/java/net/sourceforge/opencamera/MyDebug.java
+++ b/app/src/main/java/net/sourceforge/opencamera/MyDebug.java
@@ -1,8 +1,9 @@
package net.sourceforge.opencamera;
+
/** Global constant to control logging, should always be set to false in
* released versions.
*/
public class MyDebug {
- public static final boolean LOG = false;
+ public static final boolean LOG = BuildConfig.DEBUG;
}
diff --git a/app/src/main/java/net/sourceforge/opencamera/MyPreferenceFragment.java b/app/src/main/java/net/sourceforge/opencamera/MyPreferenceFragment.java
index 1947e707403fb6062cd6dd21f359527b1b03c6b0..24a38378c6d379f4b71101dd1c09f7481bc3f804 100644
--- a/app/src/main/java/net/sourceforge/opencamera/MyPreferenceFragment.java
+++ b/app/src/main/java/net/sourceforge/opencamera/MyPreferenceFragment.java
@@ -66,6 +66,7 @@ import java.util.List;
*/
public class MyPreferenceFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {
private static final String TAG = "MyPreferenceFragment";
+ public static final String BUILD_VERION = "build_version";
private int cameraId;
@@ -86,6 +87,7 @@ public class MyPreferenceFragment extends PreferenceFragment implements OnShared
Log.d(TAG, "onCreate");
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
+ findPreference(BUILD_VERION).setSummary(BuildConfig.VERSION_NAME);
final Bundle bundle = getArguments();
this.cameraId = bundle.getInt("cameraId");
@@ -402,7 +404,7 @@ public class MyPreferenceFragment extends PreferenceFragment implements OnShared
Log.d(TAG, "NameNotFoundException exception trying to get version number");
e.printStackTrace();
}
- about_string.append("Open Camera v");
+ about_string.append("Camera v");
about_string.append(version);
about_string.append("\nCode: ");
about_string.append(version_code);
@@ -677,7 +679,7 @@ public class MyPreferenceFragment extends PreferenceFragment implements OnShared
about_string.append("\nUsing SAF?: ");
about_string.append(sharedPreferences.getBoolean(PreferenceKeys.UsingSAFPreferenceKey, false));
- String save_location = sharedPreferences.getString(PreferenceKeys.SaveLocationPreferenceKey, "OpenCamera");
+ String save_location = sharedPreferences.getString(PreferenceKeys.SaveLocationPreferenceKey, "Camera");
about_string.append("\nSave Location: ");
about_string.append(save_location);
String save_location_saf = sharedPreferences.getString(PreferenceKeys.SaveLocationSAFPreferenceKey, "");
diff --git a/app/src/main/java/net/sourceforge/opencamera/PreferenceKeys.java b/app/src/main/java/net/sourceforge/opencamera/PreferenceKeys.java
index 8d12f7942754db20304eaf36ccdf4cf651d3b639..7938965b588c0904dd84adb442f6ac5b4ee4a567 100644
--- a/app/src/main/java/net/sourceforge/opencamera/PreferenceKeys.java
+++ b/app/src/main/java/net/sourceforge/opencamera/PreferenceKeys.java
@@ -37,7 +37,7 @@ public class PreferenceKeys {
*/
public static final String MagneticAccuracyPreferenceKey = "done_magnetic_accuracy";
- public static final String CameraAPIPreferenceDefault = "preference_camera_api_old";
+ public static final String CameraAPIPreferenceDefault = "preference_camera_api_camera2";
public static final String CameraAPIPreferenceKey = "preference_camera_api";
public static String getFlashPreferenceKey(int cameraId) {
diff --git a/app/src/main/java/net/sourceforge/opencamera/PreferenceSubPhoto.java b/app/src/main/java/net/sourceforge/opencamera/PreferenceSubPhoto.java
index f6a6486288885ea1b8e5030b35e580d2a63a4f95..9ea7c30fd9e9eb0160037d1f655295e02fde473f 100644
--- a/app/src/main/java/net/sourceforge/opencamera/PreferenceSubPhoto.java
+++ b/app/src/main/java/net/sourceforge/opencamera/PreferenceSubPhoto.java
@@ -196,6 +196,18 @@ public class PreferenceSubPhoto extends PreferenceSubScreen {
pg.removePreference(pref);
}
+ if ( DeviceSettings.deviceUsingFakeFlash() ) {
+ if( MyDebug.LOG )
+ Log.d(TAG, "set fake flash for camera2");
+ Preference pref = findPreference(PreferenceKeys.Camera2FakeFlashPreferenceKey);
+ pref.setDefaultValue(true);
+ pref.setEnabled(false);
+
+ final SharedPreferences.Editor editor = sharedPreferences.edit();
+ editor.putBoolean(PreferenceKeys.Camera2FakeFlashPreferenceKey, true);
+ editor.apply();
+ }
+
if( !supports_expo_bracketing || max_expo_bracketing_n_images <= 3 ) {
Preference pref = findPreference("preference_expo_bracketing_n_images");
//PreferenceGroup pg = (PreferenceGroup) this.findPreference("preference_screen_photo_settings");
diff --git a/app/src/main/java/net/sourceforge/opencamera/ScaleUtils.java b/app/src/main/java/net/sourceforge/opencamera/ScaleUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..0b50e16b869b51b56657f363869c37057524f876
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ScaleUtils.java
@@ -0,0 +1,17 @@
+package net.sourceforge.opencamera;
+
+import android.content.Context;
+
+public class ScaleUtils {
+
+ private ScaleUtils() {
+ }
+
+ public static float convertPxToDp(Context context, float px) {
+ return px / context.getResources().getDisplayMetrics().density;
+ }
+
+ public static float convertDpToPx(Context context, float dp) {
+ return dp * context.getResources().getDisplayMetrics().density;
+ }
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/StorageUtils.java b/app/src/main/java/net/sourceforge/opencamera/StorageUtils.java
index e42fce1d9dcf08aae8f504d096535f2b63918c25..d2d61cf762ead3c6d421f1949372ccc83b2c1c47 100644
--- a/app/src/main/java/net/sourceforge/opencamera/StorageUtils.java
+++ b/app/src/main/java/net/sourceforge/opencamera/StorageUtils.java
@@ -378,7 +378,7 @@ public class StorageUtils {
// only valid if !isUsingSAF()
String getSaveLocation() {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
- return sharedPreferences.getString(PreferenceKeys.SaveLocationPreferenceKey, "OpenCamera");
+ return sharedPreferences.getString(PreferenceKeys.SaveLocationPreferenceKey, "Camera");
}
// only valid if isUsingSAF()
diff --git a/app/src/main/java/net/sourceforge/opencamera/Utils.java b/app/src/main/java/net/sourceforge/opencamera/Utils.java
new file mode 100644
index 0000000000000000000000000000000000000000..761e8e0d81e994b1a03692ff03f100b1a6631077
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/Utils.java
@@ -0,0 +1,19 @@
+package net.sourceforge.opencamera;
+
+import android.os.Build;
+
+import java.lang.reflect.Method;
+import java.util.Locale;
+
+public class Utils {
+ public static String getProperty(String key, String defaultValue) {
+ try {
+ Class> systemProperties = Class.forName("android.os.SystemProperties");
+ Method get = systemProperties.getMethod("get", String.class, String.class);
+ return (String) get.invoke(null, key, defaultValue);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return defaultValue;
+ }
+ }
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/camera2/CameraFinder.kt b/app/src/main/java/net/sourceforge/opencamera/camera2/CameraFinder.kt
new file mode 100644
index 0000000000000000000000000000000000000000..72451906591a09bc79a3f32dd91e1a85085ebd55
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/camera2/CameraFinder.kt
@@ -0,0 +1,91 @@
+package net.sourceforge.opencamera.camera2
+
+import android.graphics.ImageFormat
+import android.hardware.camera2.CameraCharacteristics
+import android.hardware.camera2.CameraManager
+import android.hardware.camera2.CameraMetadata
+import android.os.Build
+import android.util.Size
+import net.sourceforge.opencamera.camera2.model.Camera2ApiProperties
+import net.sourceforge.opencamera.camera2.model.CameraModel
+import net.sourceforge.opencamera.camera2.model.DerivedProperties
+import java.util.function.Consumer
+
+class CameraFinder(cameraManager: CameraManager) :
+ CameraFinderAbstract>(cameraManager) {
+ init {
+ cameraModels = ArrayList()
+ }
+
+ public override fun createModels() {
+ validCameraIds.forEach(Consumer { cameraModels.add(CameraModel(it.toInt())) })
+ cameraModels.forEach(Consumer {
+ it.camera2ApiProperties = findProperties(it.id, getCameraCharacteristics(it.id)!!)
+ })
+ cameraModels.forEach(Consumer {
+ it.derivedProperties = deriveProperties(it.id, it.camera2ApiProperties)
+ })
+ }
+
+ public override fun findProperties(
+ cameraId: Int, characteristics: CameraCharacteristics): Camera2ApiProperties {
+ return Camera2ApiProperties(cameraId).apply {
+ facing = characteristics.get(CameraCharacteristics.LENS_FACING)!!
+ focalLength =
+ characteristics.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS)!![0]
+ aperture =
+ characteristics.get(CameraCharacteristics.LENS_INFO_AVAILABLE_APERTURES)!![0]
+ aeModes = characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES)!!
+ isFlashSupported = characteristics.get(
+ CameraCharacteristics.FLASH_INFO_AVAILABLE)!!
+ val configMap = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP)
+ if (configMap?.getOutputSizes(ImageFormat.RAW_SENSOR) != null) {
+ rawSensorSizes = configMap.getOutputSizes(ImageFormat.RAW_SENSOR)
+ }
+ sensorSize = characteristics.get(
+ CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE)!!
+ pixelArraySize = characteristics.get(
+ CameraCharacteristics.SENSOR_INFO_PIXEL_ARRAY_SIZE)!!
+ supportedHardwareLevel = characteristics.get(
+ CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL)!!
+ supportedHardwareLevelString = reflectionProvider.getResultFieldName(
+ CameraMetadata::class.java,
+ "INFO_SUPPORTED_HARDWARE_LEVEL_",
+ supportedHardwareLevel
+ )
+ physicalIds = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ characteristics.physicalCameraIds
+ } else {
+ setOf()
+ }
+ }
+ }
+
+ public override fun deriveProperties(
+ cameraId: Int,
+ camera2ApiProperties: Camera2ApiProperties
+ ): DerivedProperties {
+ return DerivedProperties(cameraId).apply {
+ facing = reflectionProvider.getResultFieldName(
+ CameraMetadata::class.java,
+ "LENS_FACING_",
+ camera2ApiProperties.facing
+ )
+ isLogical = camera2ApiProperties.physicalIds.isNotEmpty()
+ angleOfView = CameraUtil.calculateAngleOfView(
+ camera2ApiProperties.focalLength,
+ camera2ApiProperties.sensorSize,
+ camera2ApiProperties.pixelArraySize
+ )
+ pixelSize = CameraUtil.calculatePixelSize(
+ camera2ApiProperties.pixelArraySize.width,
+ camera2ApiProperties.sensorSize.width
+ )
+ mm35FocalLength =
+ CameraUtil.calculate35mmeqv(
+ camera2ApiProperties.focalLength,
+ camera2ApiProperties.sensorSize
+ )
+ }
+ }
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/camera2/CameraFinderAbstract.kt b/app/src/main/java/net/sourceforge/opencamera/camera2/CameraFinderAbstract.kt
new file mode 100644
index 0000000000000000000000000000000000000000..860dd367af725ad5b8253a28abf012341ed24c94
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/camera2/CameraFinderAbstract.kt
@@ -0,0 +1,68 @@
+package net.sourceforge.opencamera.camera2
+
+import android.hardware.camera2.CameraAccessException
+import android.hardware.camera2.CameraCharacteristics
+import android.hardware.camera2.CameraManager
+import net.sourceforge.opencamera.camera2.model.Camera2ApiProperties
+import net.sourceforge.opencamera.camera2.model.CameraModel
+import net.sourceforge.opencamera.camera2.model.DerivedProperties
+import java.util.*
+import java.util.stream.Collectors
+
+abstract class CameraFinderAbstract>(
+ private val cameraManager: CameraManager
+) : CameraIDs.Finder {
+ protected val validCameraIds: MutableList = ArrayList()
+ protected val reflectionProvider = ReflectionProvider()
+ override lateinit var cameraModels: T
+ protected set
+
+ override fun init() {
+ scanCameras(cameraManager)
+ createModels()
+ }
+
+ protected abstract fun createModels()
+ protected abstract fun findProperties(
+ cameraId: Int,
+ characteristics: CameraCharacteristics
+ ): Camera2ApiProperties
+
+ protected abstract fun deriveProperties(
+ cameraId: Int,
+ camera2ApiProperties: Camera2ApiProperties
+ ): DerivedProperties
+
+ private fun scanCameras(cameraManager: CameraManager) {
+ for (id in 0..511) {
+ try {
+ cameraManager.getCameraCharacteristics(id.toString())
+ validCameraIds.add(id.toString())
+ } catch (ignored: IllegalArgumentException) {
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+ }
+
+ override fun getCameraCharacteristics(cameraId: Int): CameraCharacteristics? {
+ try {
+ return cameraManager.getCameraCharacteristics(cameraId.toString())
+ } catch (e: CameraAccessException) {
+ e.printStackTrace()
+ }
+ return null
+ }
+
+ override val apiCameraIdList: List
+ get() {
+ try {
+ return Arrays.stream(cameraManager.cameraIdList).collect(Collectors.toList())
+ } catch (e: CameraAccessException) {
+ e.printStackTrace()
+ }
+ return ArrayList()
+ }
+ override val allCameraIdList: List
+ get() = validCameraIds
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/camera2/CameraIDs.kt b/app/src/main/java/net/sourceforge/opencamera/camera2/CameraIDs.kt
new file mode 100644
index 0000000000000000000000000000000000000000..059eb1a638634a7c2c027da217e47ca2034f90bc
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/camera2/CameraIDs.kt
@@ -0,0 +1,19 @@
+package net.sourceforge.opencamera.camera2
+
+import android.hardware.camera2.CameraCharacteristics
+import net.sourceforge.opencamera.camera2.model.CameraModel
+
+interface CameraIDs {
+ interface Finder> {
+ fun init()
+ fun getCameraCharacteristics(cameraId: Int): CameraCharacteristics?
+ val cameraModels: T
+ val apiCameraIdList: List
+ val allCameraIdList: List
+ }
+
+ interface Identifier> {
+ fun init()
+ fun identifyCamera(cameraModels: T)
+ }
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/camera2/CameraIdentifier.kt b/app/src/main/java/net/sourceforge/opencamera/camera2/CameraIdentifier.kt
new file mode 100644
index 0000000000000000000000000000000000000000..df908f1e1d898dc52785e0e47c83404784dc1a4a
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/camera2/CameraIdentifier.kt
@@ -0,0 +1,104 @@
+package net.sourceforge.opencamera.camera2
+
+import android.hardware.camera2.CameraCharacteristics
+import net.sourceforge.opencamera.camera2.model.Camera2ApiProperties
+import net.sourceforge.opencamera.camera2.model.CameraModel
+import net.sourceforge.opencamera.camera2.model.CameraType
+import java.util.TreeSet
+import java.util.function.Consumer
+import kotlin.Comparator
+import kotlin.collections.ArrayList
+
+class CameraIdentifier(cameraModels: ArrayList) :
+ CameraIdentifierAbstract>(cameraModels) {
+ private val frontCameraModels = ArrayList()
+ private val backCameraModels = ArrayList()
+ private val widerThanMain = TreeSet(SORT_BY_ANGLE_OF_VIEW)
+ private val narrowerThanMain = ArrayList()
+ private val propertiesArrayList = ArrayList()
+ override fun init() {
+ cameraModels.forEach(Consumer {
+ propertiesArrayList.add(it.camera2ApiProperties)
+ })
+ frontOrBack(cameraModels)
+ identifyCamera(frontCameraModels)
+ identifyCamera(backCameraModels)
+ }
+
+ private fun frontOrBack(cameraModels: Collection) {
+ for (model in cameraModels) {
+ if (model.camera2ApiProperties.facing == CameraCharacteristics.LENS_FACING_BACK) {
+ backCameraModels.add(model)
+ }
+ if (model.camera2ApiProperties.facing == CameraCharacteristics.LENS_FACING_FRONT) {
+ frontCameraModels.add(model)
+ }
+ }
+ }
+
+ override fun identifyCamera(cameraModels: ArrayList) {
+ if (cameraModels.isNotEmpty()) {
+ val main = cameraModels[0]
+ main.cameraType = CameraType.MAIN
+ main.zoomFactor = 1f
+ cameraModels.removeAt(0)
+
+ //Determine whether camera is logical
+ cameraModels.forEach(Consumer { model: CameraModel ->
+ if (model.derivedProperties.isLogical || getBit(6, model.id)) {
+ model.cameraType = CameraType.LOGICAL
+ }
+ propertiesArrayList.forEach(Consumer {
+ if (model.id != it.id && model.camera2ApiProperties == it) {
+ model.cameraType = CameraType.LOGICAL
+ }
+ })
+ })
+ cameraModels.removeIf { it.isTypeSet }
+ cameraModels.sortWith(SORT_BY_ANGLE_OF_VIEW)
+ cameraModels.forEach(Consumer {
+ val zoom =
+ it.derivedProperties.mm35FocalLength / main.derivedProperties.mm35FocalLength
+ it.zoomFactor = zoom
+
+ //Determine whether camera is Depth or Other
+ it.cameraType = CameraType.OTHER
+ if (!it.camera2ApiProperties.isFlashSupported) {
+ it.cameraType = CameraType.DEPTH
+ } else {
+ if (it.derivedProperties.angleOfView > main.derivedProperties.angleOfView) {
+ widerThanMain.add(it)
+ } else {
+ narrowerThanMain.add(it)
+ }
+ }
+ })
+
+ //Determine whether camera is Ultrawide or Macro
+ widerThanMain.forEach(Consumer {
+ it.cameraType = if (
+ it.derivedProperties.angleOfView ==
+ widerThanMain.last().derivedProperties.angleOfView
+ ) {
+ CameraType.ULTRAWIDE
+ } else {
+ CameraType.MACRO
+ }
+ })
+
+ // Determine whether camera is Tele
+ narrowerThanMain.forEach(Consumer { cameraModel: CameraModel ->
+ cameraModel.cameraType = CameraType.TELE
+ })
+ }
+ }
+
+ private fun getBit(num: Int, `val`: Int): Boolean {
+ return `val` shr num - 1 and 1 == 1
+ }
+
+ companion object {
+ private val SORT_BY_ANGLE_OF_VIEW =
+ Comparator.comparingDouble { cameraModel: CameraModel -> cameraModel.derivedProperties.angleOfView }
+ }
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/camera2/CameraIdentifierAbstract.kt b/app/src/main/java/net/sourceforge/opencamera/camera2/CameraIdentifierAbstract.kt
new file mode 100644
index 0000000000000000000000000000000000000000..9f2e1d8a82d0e19a22da30ebbcef91cb4e5e0bff
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/camera2/CameraIdentifierAbstract.kt
@@ -0,0 +1,7 @@
+package net.sourceforge.opencamera.camera2
+
+import net.sourceforge.opencamera.camera2.model.CameraModel
+
+abstract class CameraIdentifierAbstract>(
+ protected val cameraModels: T
+) : CameraIDs.Identifier
diff --git a/app/src/main/java/net/sourceforge/opencamera/camera2/CameraUtil.kt b/app/src/main/java/net/sourceforge/opencamera/camera2/CameraUtil.kt
new file mode 100644
index 0000000000000000000000000000000000000000..cfef5db5906bc8a456074eac8719fa7f484c63f3
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/camera2/CameraUtil.kt
@@ -0,0 +1,26 @@
+package net.sourceforge.opencamera.camera2
+
+import android.util.Size
+import android.util.SizeF
+import kotlin.math.atan
+import kotlin.math.pow
+import kotlin.math.sqrt
+
+object CameraUtil {
+ fun calculatePixelSize(pixelArrayWidth: Int, sensorWidth: Float): Float {
+ return sensorWidth / pixelArrayWidth.toFloat() * 1000.0f
+ }
+
+ fun calculateAngleOfView(
+ focalLength: Float, sensorSize: SizeF, pixelArraySize: Size
+ ): Double {
+ val pixelSize = calculatePixelSize(pixelArraySize.width, sensorSize.width)
+ return Math.toDegrees(atan(sqrt((sensorSize.width * pixelSize).toDouble().pow(2.0)
+ + (sensorSize.height * pixelSize).toDouble().pow(2.0)
+ ) / (2.0f * focalLength).toDouble()) * 2.0)
+ }
+
+ fun calculate35mmeqv(focalLength: Float, sensorSize: SizeF): Float {
+ return 36.0f / sensorSize.width * focalLength
+ }
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/camera2/ReflectionApi.kt b/app/src/main/java/net/sourceforge/opencamera/camera2/ReflectionApi.kt
new file mode 100644
index 0000000000000000000000000000000000000000..73240f6a4a5b48acc2e35f0aaababf08906446f9
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/camera2/ReflectionApi.kt
@@ -0,0 +1,9 @@
+package net.sourceforge.opencamera.camera2
+
+import java.lang.reflect.Field
+import java.lang.reflect.Method
+
+interface ReflectionApi {
+ fun getFields(aClass: Class<*>): Array
+ fun getMethods(aClass: Class<*>): Array
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/camera2/ReflectionProvider.kt b/app/src/main/java/net/sourceforge/opencamera/camera2/ReflectionProvider.kt
new file mode 100644
index 0000000000000000000000000000000000000000..16400bed9149f9dbe4122378d3d312982b78ea51
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/camera2/ReflectionProvider.kt
@@ -0,0 +1,25 @@
+package net.sourceforge.opencamera.camera2
+
+import java.lang.reflect.Field
+import java.lang.reflect.Method
+
+class ReflectionProvider : ReflectionApi {
+ override fun getFields(aClass: Class<*>): Array {
+ return aClass.declaredFields
+ }
+
+ override fun getMethods(aClass: Class<*>): Array {
+ return aClass.declaredMethods
+ }
+
+ fun getResultFieldName(aClass: Class<*>, prefix: String, value: Int): String {
+ for (f in getFields(aClass)) if (f.name.startsWith(prefix)) {
+ try {
+ if (f.getInt(f) == value) return f.name.replace(prefix, "")
+ } catch (e: IllegalAccessException) {
+ e.printStackTrace()
+ }
+ }
+ return ""
+ }
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/camera2/model/Camera2ApiProperties.kt b/app/src/main/java/net/sourceforge/opencamera/camera2/model/Camera2ApiProperties.kt
new file mode 100644
index 0000000000000000000000000000000000000000..d8bba062ae089cd1e41a3b1ed8c73e459a0561b0
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/camera2/model/Camera2ApiProperties.kt
@@ -0,0 +1,35 @@
+package net.sourceforge.opencamera.camera2.model
+
+import android.util.Size
+import android.util.SizeF
+import java.util.Objects
+
+class Camera2ApiProperties(val id: Int) {
+ var facing = 0
+ var focalLength = 0f
+ var aperture = 0f
+ lateinit var aeModes: IntArray
+ lateinit var rawSensorSizes: Array
+ lateinit var sensorSize: SizeF
+ lateinit var pixelArraySize: Size
+ var isFlashSupported = false
+ var supportedHardwareLevel = 0
+ lateinit var supportedHardwareLevelString: String
+ lateinit var physicalIds: Set
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (other == null || javaClass != other.javaClass) return false
+ val that = other as Camera2ApiProperties
+ return facing == that.facing && that.focalLength.compareTo(focalLength) == 0 && that.aperture.compareTo(
+ aperture
+ ) == 0 && isFlashSupported == that.isFlashSupported &&
+ aeModes.contentEquals(that.aeModes) && sensorSize == that.sensorSize
+ }
+
+ override fun hashCode(): Int {
+ var result = Objects.hash(facing, focalLength, aperture, sensorSize, isFlashSupported)
+ result = 31 * result + aeModes.contentHashCode()
+ return result
+ }
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/camera2/model/CameraModel.kt b/app/src/main/java/net/sourceforge/opencamera/camera2/model/CameraModel.kt
new file mode 100644
index 0000000000000000000000000000000000000000..eaa1d8ece9d6065e5a266dc1a71ae370c62fc39a
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/camera2/model/CameraModel.kt
@@ -0,0 +1,48 @@
+package net.sourceforge.opencamera.camera2.model
+
+import java.util.Locale
+import kotlin.math.roundToInt
+
+class CameraModel(val id: Int) {
+ var cameraType: CameraType? = null
+ var zoomFactor = 0f
+ lateinit var camera2ApiProperties: Camera2ApiProperties
+ lateinit var derivedProperties: DerivedProperties
+
+ val isTypeSet: Boolean
+ get() = cameraType != null
+
+ fun cameraFullModel(): MutableMap {
+ return mutableMapOf().apply {
+ this["CameraID"] = "[$id]"
+ if (cameraType != CameraType.LOGICAL) {
+ this["CameraID"] += " \u2605"
+ } else if (camera2ApiProperties.physicalIds.isNotEmpty()) {
+ this["CameraID"] +=
+ " = ${camera2ApiProperties.physicalIds.toString().replace(", ", "+")}"
+ }
+
+ this["Facing"] = "${derivedProperties.facing}"
+
+ if (cameraType != CameraType.LOGICAL) {
+ this["Zoom"] = String.format(Locale.ROOT, "%.2fx", zoomFactor)
+ .replace(".00", "")
+ }
+
+ this["Type"] = "$cameraType"
+ this["FocalLength"] = String.format(
+ Locale.ROOT, "%.2fmm", camera2ApiProperties.focalLength)
+ this["35mm eqv FocalLength"] = String.format(
+ Locale.ROOT, "%.2fmm", derivedProperties.mm35FocalLength)
+ this["Aperture"] = "${camera2ApiProperties.aperture}"
+ this["SensorSize"] = "${camera2ApiProperties.sensorSize}"
+ this["PixelArray"] = "${camera2ApiProperties.pixelArraySize}"
+ this["PixelSize"] = String.format(Locale.ROOT, "%.2fµm", derivedProperties.pixelSize)
+ this["AngleOfView(Diagonal)"] = "${derivedProperties.angleOfView.roundToInt()}°"
+ this["AEModes"] = camera2ApiProperties.aeModes.contentToString()
+ this["FlashSupported"] = "${camera2ApiProperties.isFlashSupported}"
+ this["RAW_SENSOR sizes"] = camera2ApiProperties.rawSensorSizes.contentDeepToString()
+ this["SupportedHardwareLevel"] = camera2ApiProperties.supportedHardwareLevelString
+ }
+ }
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/camera2/model/CameraType.kt b/app/src/main/java/net/sourceforge/opencamera/camera2/model/CameraType.kt
new file mode 100644
index 0000000000000000000000000000000000000000..601886465efac1069f44b45ba50c5d0db0a136e2
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/camera2/model/CameraType.kt
@@ -0,0 +1,11 @@
+package net.sourceforge.opencamera.camera2.model
+
+enum class CameraType {
+ MAIN,
+ ULTRAWIDE,
+ TELE,
+ MACRO,
+ DEPTH,
+ LOGICAL,
+ OTHER
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/sourceforge/opencamera/camera2/model/DerivedProperties.kt b/app/src/main/java/net/sourceforge/opencamera/camera2/model/DerivedProperties.kt
new file mode 100644
index 0000000000000000000000000000000000000000..266a9349cdbd62bc036b4a03767711b77243fa8c
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/camera2/model/DerivedProperties.kt
@@ -0,0 +1,9 @@
+package net.sourceforge.opencamera.camera2.model
+
+class DerivedProperties(val id: Int) {
+ var isLogical = false
+ var facing: String? = null
+ var angleOfView = 0.0
+ var mm35FocalLength = 0f
+ var pixelSize = 0f
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/cameracontroller/CameraController1.java b/app/src/main/java/net/sourceforge/opencamera/cameracontroller/CameraController1.java
index 3e573d219d3295fbff10e7fc807491076cbc580f..3596a0e557959e9a24a0ebcc7024ba0afe001312 100644
--- a/app/src/main/java/net/sourceforge/opencamera/cameracontroller/CameraController1.java
+++ b/app/src/main/java/net/sourceforge/opencamera/cameracontroller/CameraController1.java
@@ -3,6 +3,7 @@ package net.sourceforge.opencamera.cameracontroller;
import net.sourceforge.opencamera.MyDebug;
import java.io.IOException;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
@@ -58,15 +59,28 @@ public class CameraController1 extends CameraController {
if( MyDebug.LOG )
Log.d(TAG, "create new CameraController1: " + cameraId);
this.camera_error_cb = camera_error_cb;
+
try {
- camera = Camera.open(cameraId);
+ Method openMethod = Class.forName("android.hardware.Camera")
+ .getMethod("openLegacy", int.class, int.class);
+ camera = (Camera) openMethod.invoke(null,
+ cameraId, 0x100);
+ } catch (Exception e) {
+ /* Retry with open if openLegacy doesn't exist/fails */
+ camera = null;
}
- catch(RuntimeException e) {
- if( MyDebug.LOG )
- Log.e(TAG, "failed to open camera");
- e.printStackTrace();
- throw new CameraControllerException();
+
+ if (camera == null) {
+ try {
+ camera = Camera.open(cameraId);
+ } catch (RuntimeException e) {
+ if (MyDebug.LOG)
+ Log.e(TAG, "failed to open camera");
+ e.printStackTrace();
+ throw new CameraControllerException();
+ }
}
+
if( camera == null ) {
// Although the documentation says Camera.open() should throw a RuntimeException, it seems that it some cases it can return null
// I've seen this in some crashes reported in Google Play; also see:
diff --git a/app/src/main/java/net/sourceforge/opencamera/cameracontroller/CameraController2.java b/app/src/main/java/net/sourceforge/opencamera/cameracontroller/CameraController2.java
index c94d6d938d243cb3b2fe46fc7daa96fc306b3254..d0abeb0b09f7c68b0540145733f0829d2ff58fea 100644
--- a/app/src/main/java/net/sourceforge/opencamera/cameracontroller/CameraController2.java
+++ b/app/src/main/java/net/sourceforge/opencamera/cameracontroller/CameraController2.java
@@ -1,7 +1,9 @@
package net.sourceforge.opencamera.cameracontroller;
+import net.sourceforge.opencamera.ContinuousBurstImageRunningAction;
import net.sourceforge.opencamera.HDRProcessor;
import net.sourceforge.opencamera.MyDebug;
+import net.sourceforge.opencamera.R;
import java.nio.ByteBuffer;
import java.util.ArrayList;
@@ -63,6 +65,9 @@ import android.view.Display;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.TextureView;
+import android.widget.Toast;
+
+import org.greenrobot.eventbus.EventBus;
/** Provides support using Android 5's Camera 2 API
* android.hardware.camera2.*.
@@ -75,6 +80,7 @@ public class CameraController2 extends CameraController {
private CameraDevice camera;
private final String cameraIdS;
+ private final boolean is_fairphone;
private final boolean is_samsung;
private final boolean is_samsung_s7; // Galaxy S7 or Galaxy S7 Edge
private final boolean is_samsung_galaxy_s;
@@ -100,6 +106,8 @@ public class CameraController2 extends CameraController {
private long min_exposure_time;
private long max_exposure_time;
+ private int toastCounter = 0;
+
private final static int tonemap_log_max_curve_points_c = 64;
private final static float [] jtvideo_values_base = new float[] {
0.00f, 0.00f,
@@ -180,7 +188,7 @@ public class CameraController2 extends CameraController {
private boolean previewIsVideoMode;
private AutoFocusCallback autofocus_cb;
private long autofocus_time_ms = -1; // time we set autofocus_cb to non-null
- private static final long autofocus_timeout_c = 1000; // timeout for calling autofocus_cb (applies for both auto and continuous focus)
+ private static final long autofocus_timeout_c = 500; // timeout for calling autofocus_cb (applies for both auto and continuous focus)
private boolean capture_follows_autofocus_hint;
private boolean ready_for_capture;
private FaceDetectionListener face_detection_listener;
@@ -265,8 +273,8 @@ public class CameraController2 extends CameraController {
private static final int STATE_WAITING_FAKE_PRECAPTURE_DONE = 5;
private int state = STATE_NORMAL;
private long precapture_state_change_time_ms = -1; // time we changed state for precapture modes
- private static final long precapture_start_timeout_c = 2000;
- private static final long precapture_done_timeout_c = 3000;
+ private static final long precapture_start_timeout_c = 500;
+ private static final long precapture_done_timeout_c = 1000;
private boolean use_fake_precapture; // see CameraController.setUseCamera2FakeFlash() for details - this is the user/application setting, see use_fake_precapture_mode for whether fake precapture is enabled (as we may do this for other purposes, e.g., front screen flash)
private boolean use_fake_precapture_mode; // true if either use_fake_precapture is true, or we're temporarily using fake precapture mode (e.g., for front screen flash or exposure bracketing)
@@ -1634,6 +1642,9 @@ public class CameraController2 extends CameraController {
takePhotoCompleted();
}
+ if (n_burst_taken == 1) {
+ EventBus.getDefault().post(new ContinuousBurstImageRunningAction());
+ }
if( MyDebug.LOG )
Log.d(TAG, "done onImageAvailable");
}
@@ -2050,10 +2061,12 @@ public class CameraController2 extends CameraController {
this.camera_error_cb = camera_error_cb;
//this.is_oneplus = Build.MANUFACTURER.toLowerCase(Locale.US).contains("oneplus");
+ this.is_fairphone = Build.MANUFACTURER.toLowerCase(Locale.US).contains("fairphone");
this.is_samsung = Build.MANUFACTURER.toLowerCase(Locale.US).contains("samsung");
this.is_samsung_s7 = Build.MODEL.toLowerCase(Locale.US).contains("sm-g93");
this.is_samsung_galaxy_s = is_samsung && Build.MODEL.toLowerCase(Locale.US).contains("sm-g");
if( MyDebug.LOG ) {
+ Log.d(TAG, "is_fairphone: " + is_fairphone);
Log.d(TAG, "is_samsung: " + is_samsung);
Log.d(TAG, "is_samsung_s7: " + is_samsung_s7);
Log.d(TAG, "is_samsung_galaxy_s: " + is_samsung_galaxy_s);
@@ -2901,6 +2914,27 @@ public class CameraController2 extends CameraController {
camera_features.picture_sizes.add(new CameraController.Size(camera_size.getWidth(), camera_size.getHeight()));
}
}
+
+ if(is_fairphone && Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+ CameraCharacteristics.Key qcfaDimensionKey =
+ new CameraCharacteristics.Key<>("org.codeaurora.qcamera3.quadra_cfa.qcfa_dimension", int[].class);
+ try {
+ int[] qcfaDimension = characteristics.get(qcfaDimensionKey);
+ if (qcfaDimension != null && qcfaDimension.length == 2) {
+ int qcfaWidth = qcfaDimension[0];
+ int qcfaHeight = qcfaDimension[1];
+ Size qcfaSize = new Size(qcfaWidth, qcfaHeight);
+ if (!camera_features.picture_sizes.contains(qcfaSize)) {
+ if (MyDebug.LOG)
+ Log.d(TAG, "Adding QCFA size: " + qcfaWidth + " x " + qcfaHeight);
+ camera_features.picture_sizes.add(qcfaSize);
+ }
+ }
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ }
+ }
+
// sizes are usually already sorted from high to low, but sort just in case
// note some devices do have sizes in a not fully sorted order (e.g., Nokia 8)
Collections.sort(camera_features.picture_sizes, new CameraController.SizeSorter());
@@ -8402,14 +8436,17 @@ public class CameraController2 extends CameraController {
// need to check af_state != null, I received Google Play crash in 1.33 where it was null
boolean focus_success = af_state != null && ( af_state == CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED || af_state == CaptureResult.CONTROL_AF_STATE_PASSIVE_FOCUSED );
if( MyDebug.LOG ) {
- if( focus_success )
+ if( focus_success ) {
Log.d(TAG, "autofocus success");
- else
+ } else {
Log.d(TAG, "autofocus failed");
- if( af_state == null )
+ onFocusFailed();
+ }
+ if( af_state == null ) {
Log.e(TAG, "continuous focus mode but af_state is null");
- else
+ } else {
Log.d(TAG, "af_state: " + af_state);
+ }
}
if( af_state == null ) {
test_af_state_null_focus++;
@@ -8462,10 +8499,12 @@ public class CameraController2 extends CameraController {
) {
boolean focus_success = af_state == CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED || af_state == CaptureResult.CONTROL_AF_STATE_PASSIVE_FOCUSED;
if( MyDebug.LOG ) {
- if( focus_success )
+ if( focus_success ) {
Log.d(TAG, "onCaptureCompleted: autofocus success");
- else
+ } else {
Log.d(TAG, "onCaptureCompleted: autofocus failed");
+ onFocusFailed();
+ }
Log.d(TAG, "af_state: " + af_state);
}
state = STATE_NORMAL;
@@ -8655,6 +8694,18 @@ public class CameraController2 extends CameraController {
}
}
+ private void onFocusFailed() {
+ // Show only if focus failed twice.
+ if (toastCounter == 1) {
+ Toast.makeText(context,
+ R.string.preference_failed_focus_mode_message,
+ Toast.LENGTH_SHORT).show();
+ toastCounter = 0;
+ } else {
+ toastCounter++;
+ }
+ }
+
private void handleContinuousFocusMove(CaptureResult result) {
Integer af_state = result.get(CaptureResult.CONTROL_AF_STATE);
if( af_state != null && af_state == CaptureResult.CONTROL_AF_STATE_PASSIVE_SCAN && af_state != last_af_state ) {
diff --git a/app/src/main/java/net/sourceforge/opencamera/ext/AddressBookParsedResult.kt b/app/src/main/java/net/sourceforge/opencamera/ext/AddressBookParsedResult.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ba23aedf8f95fd5dcc2af7b622197ea488510058
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ext/AddressBookParsedResult.kt
@@ -0,0 +1,130 @@
+/*
+ * SPDX-FileCopyrightText: 2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.ext
+
+import android.app.RemoteAction
+import android.content.Context
+import android.content.Intent
+import android.os.Build
+import android.provider.ContactsContract
+import android.view.textclassifier.TextClassification
+import android.view.textclassifier.TextClassifier
+import com.google.zxing.client.result.AddressBookParsedResult
+import net.sourceforge.opencamera.R
+
+fun AddressBookParsedResult.createIntent() = Intent(
+ Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI
+).apply {
+ names.firstOrNull()?.let {
+ putExtra(ContactsContract.Intents.Insert.NAME, it)
+ }
+
+ pronunciation?.let {
+ putExtra(ContactsContract.Intents.Insert.PHONETIC_NAME, it)
+ }
+
+ phoneNumbers?.let { phoneNumbers ->
+ val phoneTypes = phoneTypes ?: arrayOf()
+
+ for ((key, keys) in listOf(
+ listOf(
+ ContactsContract.Intents.Insert.PHONE,
+ ContactsContract.Intents.Insert.PHONE_TYPE,
+ ),
+ listOf(
+ ContactsContract.Intents.Insert.SECONDARY_PHONE,
+ ContactsContract.Intents.Insert.SECONDARY_PHONE_TYPE,
+ ),
+ listOf(
+ ContactsContract.Intents.Insert.TERTIARY_PHONE,
+ ContactsContract.Intents.Insert.TERTIARY_PHONE_TYPE,
+ ),
+ ).withIndex()) {
+ phoneNumbers.getOrNull(key)?.let { phone ->
+ putExtra(keys.first(), phone)
+ phoneTypes.getOrNull(key)?.let {
+ putExtra(keys.last(), it)
+ }
+ }
+ }
+ }
+
+ emails?.let { emails ->
+ val emailTypes = emailTypes ?: arrayOf()
+
+ for ((key, keys) in listOf(
+ listOf(
+ ContactsContract.Intents.Insert.EMAIL,
+ ContactsContract.Intents.Insert.EMAIL_TYPE,
+ ),
+ listOf(
+ ContactsContract.Intents.Insert.SECONDARY_EMAIL,
+ ContactsContract.Intents.Insert.SECONDARY_EMAIL_TYPE,
+ ),
+ listOf(
+ ContactsContract.Intents.Insert.TERTIARY_EMAIL,
+ ContactsContract.Intents.Insert.TERTIARY_EMAIL_TYPE,
+ ),
+ ).withIndex()) {
+ emails.getOrNull(key)?.let { phone ->
+ putExtra(keys.first(), phone)
+ emailTypes.getOrNull(key)?.let {
+ putExtra(keys.last(), it)
+ }
+ }
+ }
+ }
+
+ instantMessenger?.let {
+ putExtra(ContactsContract.Intents.Insert.IM_HANDLE, it)
+ }
+
+ note?.let {
+ putExtra(ContactsContract.Intents.Insert.NOTES, it)
+ }
+
+ addresses?.let { emails ->
+ val addressTypes = addressTypes ?: arrayOf()
+
+ for ((key, keys) in listOf(
+ listOf(
+ ContactsContract.Intents.Insert.POSTAL,
+ ContactsContract.Intents.Insert.POSTAL_TYPE,
+ ),
+ ).withIndex()) {
+ emails.getOrNull(key)?.let { phone ->
+ putExtra(keys.first(), phone)
+ addressTypes.getOrNull(key)?.let {
+ putExtra(keys.last(), it)
+ }
+ }
+ }
+ }
+
+ org?.let {
+ putExtra(ContactsContract.Intents.Insert.COMPANY, it)
+ }
+}
+
+fun AddressBookParsedResult.createTextClassification(
+ context: Context
+) = TextClassification.Builder()
+ .setText(title ?: names.firstOrNull() ?: "")
+ .setEntityType(TextClassifier.TYPE_OTHER, 1.0f)
+ .apply {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ addAction(
+ RemoteAction::class.build(
+ context,
+ R.drawable.ic_contact_phone,
+ R.string.qr_address_title,
+ R.string.qr_address_content_description,
+ createIntent()
+ )
+ )
+ }
+ }
+ .build()
diff --git a/app/src/main/java/net/sourceforge/opencamera/ext/CalendarParsedResult.kt b/app/src/main/java/net/sourceforge/opencamera/ext/CalendarParsedResult.kt
new file mode 100644
index 0000000000000000000000000000000000000000..a76232ea0deee74a79b79080a09607d940c0f3c5
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ext/CalendarParsedResult.kt
@@ -0,0 +1,63 @@
+/*
+ * SPDX-FileCopyrightText: 2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.ext
+
+import android.app.RemoteAction
+import android.content.Context
+import android.content.Intent
+import android.os.Build
+import android.provider.CalendarContract
+import android.view.textclassifier.TextClassification
+import android.view.textclassifier.TextClassifier
+import androidx.core.os.bundleOf
+import com.google.zxing.client.result.CalendarParsedResult
+import net.sourceforge.opencamera.R
+
+fun CalendarParsedResult.createIntent() = Intent(
+ Intent.ACTION_INSERT, CalendarContract.Events.CONTENT_URI
+).apply {
+ summary?.let {
+ putExtra(CalendarContract.Events.TITLE, it)
+ }
+ description?.let {
+ putExtra(CalendarContract.Events.DESCRIPTION, it)
+ }
+ location?.let {
+ putExtra(CalendarContract.Events.EVENT_LOCATION, it)
+ }
+ organizer?.let {
+ putExtra(CalendarContract.Events.ORGANIZER, it)
+ }
+ attendees?.let {
+ putExtra(Intent.EXTRA_EMAIL, it.joinToString(","))
+ }
+
+ putExtras(
+ bundleOf(
+ CalendarContract.EXTRA_EVENT_BEGIN_TIME to startTimestamp,
+ CalendarContract.EXTRA_EVENT_END_TIME to endTimestamp,
+ CalendarContract.EXTRA_EVENT_ALL_DAY to (isStartAllDay && isEndAllDay),
+ )
+ )
+}
+
+fun CalendarParsedResult.createTextClassification(context: Context) = TextClassification.Builder()
+ .setText(summary)
+ .setEntityType(TextClassifier.TYPE_OTHER, 1.0f)
+ .apply {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+ addAction(
+ RemoteAction::class.build(
+ context,
+ R.drawable.ic_calendar_add_on,
+ R.string.qr_calendar_title,
+ R.string.qr_calendar_content_description,
+ createIntent()
+ )
+ )
+ }
+ }
+ .build()
diff --git a/app/src/main/java/net/sourceforge/opencamera/ext/Context.kt b/app/src/main/java/net/sourceforge/opencamera/ext/Context.kt
new file mode 100644
index 0000000000000000000000000000000000000000..4026fb52ee304448cbbbdf029b665cd6bde33690
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ext/Context.kt
@@ -0,0 +1,17 @@
+/*
+ * SPDX-FileCopyrightText: 2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.ext
+
+import android.content.Context
+import android.util.TypedValue
+import androidx.annotation.AttrRes
+import androidx.annotation.ColorInt
+
+@ColorInt
+fun Context.getThemeColor(@AttrRes attribute: Int) = TypedValue().let {
+ theme.resolveAttribute(attribute, it, true)
+ it.data
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/ext/EmailAddressParsedResult.kt b/app/src/main/java/net/sourceforge/opencamera/ext/EmailAddressParsedResult.kt
new file mode 100644
index 0000000000000000000000000000000000000000..764e70016e8975450a4c3ca06b5c19f1c32a821b
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ext/EmailAddressParsedResult.kt
@@ -0,0 +1,52 @@
+/*
+ * SPDX-FileCopyrightText: 2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.ext
+
+import android.app.RemoteAction
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.os.Build
+import android.view.textclassifier.TextClassification
+import android.view.textclassifier.TextClassifier
+import androidx.core.os.bundleOf
+import com.google.zxing.client.result.EmailAddressParsedResult
+import net.sourceforge.opencamera.R
+
+fun EmailAddressParsedResult.createIntent() = Intent(
+ Intent.ACTION_SENDTO,
+ Uri.parse("mailto:${tos?.firstOrNull() ?: ""}")
+).apply {
+ putExtras(
+ bundleOf(
+ Intent.EXTRA_EMAIL to tos,
+ Intent.EXTRA_CC to cCs,
+ Intent.EXTRA_BCC to bcCs,
+ Intent.EXTRA_SUBJECT to subject,
+ Intent.EXTRA_TEXT to body,
+ )
+ )
+}
+
+fun EmailAddressParsedResult.createTextClassification(
+ context: Context
+) = TextClassification.Builder()
+ .setText(tos.joinToString())
+ .setEntityType(TextClassifier.TYPE_EMAIL, 1.0f)
+ .apply {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ addAction(
+ RemoteAction::class.build(
+ context,
+ R.drawable.ic_email,
+ R.string.qr_email_title,
+ R.string.qr_email_content_description,
+ createIntent()
+ )
+ )
+ }
+ }
+ .build()
diff --git a/app/src/main/java/net/sourceforge/opencamera/ext/GeoParsedResult.kt b/app/src/main/java/net/sourceforge/opencamera/ext/GeoParsedResult.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ecac26eeb6dbf210a1d8b342c7c5e585240814d3
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ext/GeoParsedResult.kt
@@ -0,0 +1,36 @@
+/*
+ * SPDX-FileCopyrightText: 2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.ext
+
+import android.app.RemoteAction
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.os.Build
+import android.view.textclassifier.TextClassification
+import android.view.textclassifier.TextClassifier
+import com.google.zxing.client.result.GeoParsedResult
+import net.sourceforge.opencamera.R
+
+fun GeoParsedResult.createIntent() = Intent(Intent.ACTION_VIEW, Uri.parse(geoURI))
+
+fun GeoParsedResult.createTextClassification(context: Context) = TextClassification.Builder()
+ .setText(displayResult)
+ .setEntityType(TextClassifier.TYPE_ADDRESS, 1.0f)
+ .apply {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ addAction(
+ RemoteAction::class.build(
+ context,
+ R.drawable.ic_location_on,
+ R.string.qr_geo_title,
+ R.string.qr_geo_content_description,
+ createIntent()
+ )
+ )
+ }
+ }
+ .build()
diff --git a/app/src/main/java/net/sourceforge/opencamera/ext/ISBNParsedResult.kt b/app/src/main/java/net/sourceforge/opencamera/ext/ISBNParsedResult.kt
new file mode 100644
index 0000000000000000000000000000000000000000..44f6bd8c79eb6503677008691329d447d83c8d46
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ext/ISBNParsedResult.kt
@@ -0,0 +1,38 @@
+/*
+ * SPDX-FileCopyrightText: 2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.ext
+
+import android.app.RemoteAction
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.os.Build
+import android.view.textclassifier.TextClassification
+import android.view.textclassifier.TextClassifier
+import com.google.zxing.client.result.ISBNParsedResult
+import net.sourceforge.opencamera.R
+
+fun ISBNParsedResult.createIntent() = Intent(
+ Intent.ACTION_VIEW, Uri.parse("https://isbnsearch.org/isbn/${isbn}")
+)
+
+fun ISBNParsedResult.createTextClassification(context: Context) = TextClassification.Builder()
+ .setText(isbn)
+ .setEntityType(TextClassifier.TYPE_OTHER, 1.0f)
+ .apply {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ addAction(
+ RemoteAction::class.build(
+ context,
+ R.drawable.ic_book,
+ R.string.qr_isbn_title,
+ R.string.qr_isbn_content_description,
+ createIntent()
+ )
+ )
+ }
+ }
+ .build()
diff --git a/app/src/main/java/net/sourceforge/opencamera/ext/ImageProxy.kt b/app/src/main/java/net/sourceforge/opencamera/ext/ImageProxy.kt
new file mode 100644
index 0000000000000000000000000000000000000000..3b0d19456afd94def412d71280151712a7775823
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ext/ImageProxy.kt
@@ -0,0 +1,42 @@
+/*
+ * SPDX-FileCopyrightText: 2022 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.ext
+
+import androidx.camera.core.ImageProxy
+import com.google.zxing.PlanarYUVLuminanceSource
+
+private fun rotateYUVLuminancePlane(data: ByteArray, width: Int, height: Int): ByteArray {
+ val yuv = ByteArray(width * height)
+ // Rotate the Y luma
+ var i = 0
+ for (x in 0 until width) {
+ for (y in height - 1 downTo 0) {
+ yuv[i] = data[y * width + x]
+ i++
+ }
+ }
+ return yuv
+}
+
+internal val ImageProxy.planarYUVLuminanceSource: PlanarYUVLuminanceSource
+ get() {
+ val plane = planes[0]
+ val buffer = plane.buffer
+ var bytes = ByteArray(buffer.remaining())
+ buffer.get(bytes)
+
+ var width = width
+ var height = height
+
+ if (imageInfo.rotationDegrees == 90 || imageInfo.rotationDegrees == 270) {
+ bytes = rotateYUVLuminancePlane(bytes, width, height)
+ width = height.also { height = width }
+ }
+
+ return PlanarYUVLuminanceSource(
+ bytes, width, height, 0, 0, width, height, true
+ )
+ }
diff --git a/app/src/main/java/net/sourceforge/opencamera/ext/Int.kt b/app/src/main/java/net/sourceforge/opencamera/ext/Int.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e3e8d83ff0a2df53e9291e54075e90107e68a8ba
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ext/Int.kt
@@ -0,0 +1,20 @@
+/*
+ * SPDX-FileCopyrightText: 2022 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.ext
+
+import android.content.res.Resources.getSystem
+import android.util.Range
+import kotlin.math.roundToInt
+
+val Int.px
+ get() = (this * getSystem().displayMetrics.density).roundToInt()
+
+val Int.dp
+ get() = (this / getSystem().displayMetrics.density).roundToInt()
+
+internal fun Int.Companion.mapToRange(range: Range, percentage: Float): Int {
+ return (((range.upper - range.lower) * percentage) + range.lower).roundToInt()
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/ext/ParsedResult.kt b/app/src/main/java/net/sourceforge/opencamera/ext/ParsedResult.kt
new file mode 100644
index 0000000000000000000000000000000000000000..a35f89e48e0da9e75ef4af3275a889f855451c6c
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ext/ParsedResult.kt
@@ -0,0 +1,50 @@
+/*
+ * SPDX-FileCopyrightText: 2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.ext
+
+import android.content.Context
+import com.google.zxing.client.result.AddressBookParsedResult
+import com.google.zxing.client.result.CalendarParsedResult
+import com.google.zxing.client.result.EmailAddressParsedResult
+import com.google.zxing.client.result.GeoParsedResult
+import com.google.zxing.client.result.ISBNParsedResult
+import com.google.zxing.client.result.ParsedResult
+import com.google.zxing.client.result.ProductParsedResult
+import com.google.zxing.client.result.SMSParsedResult
+import com.google.zxing.client.result.TelParsedResult
+import com.google.zxing.client.result.TextParsedResult
+import com.google.zxing.client.result.URIParsedResult
+import com.google.zxing.client.result.VINParsedResult
+import com.google.zxing.client.result.WifiParsedResult
+
+fun ParsedResult.createTextClassification(context: Context) = when (this) {
+ is AddressBookParsedResult -> createTextClassification(context)
+
+ is CalendarParsedResult -> createTextClassification(context)
+
+ is EmailAddressParsedResult -> createTextClassification(context)
+
+ is GeoParsedResult -> createTextClassification(context)
+
+ is ISBNParsedResult -> createTextClassification(context)
+
+ is ProductParsedResult -> createTextClassification(context)
+
+ is SMSParsedResult -> createTextClassification(context)
+
+ is TelParsedResult -> createTextClassification(context)
+
+ is TextParsedResult -> null // Try with the next methods
+
+ is URIParsedResult -> null // We handle this manually
+
+ is VINParsedResult -> createTextClassification(context)
+
+ is WifiParsedResult -> createTextClassification(context)
+
+ else -> null
+}
+
diff --git a/app/src/main/java/net/sourceforge/opencamera/ext/ProductParsedResult.kt b/app/src/main/java/net/sourceforge/opencamera/ext/ProductParsedResult.kt
new file mode 100644
index 0000000000000000000000000000000000000000..4c43b9c40a1bd738bc103de032e5123a1f662386
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ext/ProductParsedResult.kt
@@ -0,0 +1,38 @@
+/*
+ * SPDX-FileCopyrightText: 2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.ext
+
+import android.app.RemoteAction
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.os.Build
+import android.view.textclassifier.TextClassification
+import android.view.textclassifier.TextClassifier
+import com.google.zxing.client.result.ProductParsedResult
+import net.sourceforge.opencamera.R
+
+fun ProductParsedResult.createIntent() = Intent(
+ Intent.ACTION_VIEW, Uri.parse("https://www.barcodelookup.com/${productID}")
+)
+
+fun ProductParsedResult.createTextClassification(context: Context) = TextClassification.Builder()
+ .setText(productID)
+ .setEntityType(TextClassifier.TYPE_OTHER, 1.0f)
+ .apply {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ addAction(
+ RemoteAction::class.build(
+ context,
+ R.drawable.ic_shopping_cart,
+ R.string.qr_product_title,
+ R.string.qr_product_content_description,
+ createIntent()
+ )
+ )
+ }
+ }
+ .build()
diff --git a/app/src/main/java/net/sourceforge/opencamera/ext/RemoteAction.kt b/app/src/main/java/net/sourceforge/opencamera/ext/RemoteAction.kt
new file mode 100644
index 0000000000000000000000000000000000000000..bc510110112ae93a994e22ee5b95e1915ad36a28
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ext/RemoteAction.kt
@@ -0,0 +1,44 @@
+/*
+ * SPDX-FileCopyrightText: 2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.ext
+
+import android.app.PendingIntent
+import android.app.RemoteAction
+import android.content.Context
+import android.content.Intent
+import android.graphics.drawable.Icon
+import androidx.annotation.AttrRes
+import androidx.annotation.DrawableRes
+import androidx.annotation.StringRes
+import androidx.appcompat.content.res.AppCompatResources
+import androidx.core.graphics.drawable.DrawableCompat
+import androidx.core.graphics.drawable.toBitmap
+import kotlin.reflect.KClass
+
+fun KClass.build(
+ context: Context,
+ @DrawableRes iconRes: Int,
+ @StringRes titleRes: Int,
+ @StringRes contentDescriptionRes: Int,
+ intent: Intent,
+ requestCode: Int = 0,
+ flags: Int = PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT,
+ @AttrRes iconTint: Int = com.google.android.material.R.attr.colorOnBackground,
+) = RemoteAction(
+ Icon.createWithBitmap(
+ AppCompatResources.getDrawable(context, iconRes)?.let {
+ DrawableCompat.wrap(it.mutate()).apply {
+ DrawableCompat.setTint(
+ this,
+ context.getThemeColor(iconTint)
+ )
+ }
+ }?.toBitmap()
+ ),
+ context.getString(titleRes),
+ context.getString(contentDescriptionRes),
+ PendingIntent.getActivity(context, requestCode, intent, flags)
+)
diff --git a/app/src/main/java/net/sourceforge/opencamera/ext/SMSParsedResult.kt b/app/src/main/java/net/sourceforge/opencamera/ext/SMSParsedResult.kt
new file mode 100644
index 0000000000000000000000000000000000000000..cdb2cfd5de5cb7bef825ee744677d25ee779a921
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ext/SMSParsedResult.kt
@@ -0,0 +1,36 @@
+/*
+ * SPDX-FileCopyrightText: 2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.ext
+
+import android.app.RemoteAction
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.os.Build
+import android.view.textclassifier.TextClassification
+import android.view.textclassifier.TextClassifier
+import com.google.zxing.client.result.SMSParsedResult
+import net.sourceforge.opencamera.R
+
+fun SMSParsedResult.createIntent() = Intent(Intent.ACTION_SENDTO, Uri.parse(smsuri))
+
+fun SMSParsedResult.createTextClassification(context: Context) = TextClassification.Builder()
+ .setText(numbers.first())
+ .setEntityType(TextClassifier.TYPE_OTHER, 1.0f)
+ .apply {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ addAction(
+ RemoteAction::class.build(
+ context,
+ R.drawable.ic_sms,
+ R.string.qr_sms_title,
+ R.string.qr_sms_content_description,
+ createIntent()
+ )
+ )
+ }
+ }
+ .build()
diff --git a/app/src/main/java/net/sourceforge/opencamera/ext/TelParsedResult.kt b/app/src/main/java/net/sourceforge/opencamera/ext/TelParsedResult.kt
new file mode 100644
index 0000000000000000000000000000000000000000..a2af666fe80a598a79da30bae3775ac155fa4408
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ext/TelParsedResult.kt
@@ -0,0 +1,36 @@
+/*
+ * SPDX-FileCopyrightText: 2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.ext
+
+import android.app.RemoteAction
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.os.Build
+import android.view.textclassifier.TextClassification
+import android.view.textclassifier.TextClassifier
+import com.google.zxing.client.result.TelParsedResult
+import net.sourceforge.opencamera.R
+
+fun TelParsedResult.createIntent() = Intent(Intent.ACTION_SENDTO, Uri.parse(telURI))
+
+fun TelParsedResult.createTextClassification(context: Context) = TextClassification.Builder()
+ .setText(number)
+ .setEntityType(TextClassifier.TYPE_PHONE, 1.0f)
+ .apply {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ addAction(
+ RemoteAction::class.build(
+ context,
+ R.drawable.ic_phone,
+ R.string.qr_tel_title,
+ R.string.qr_tel_content_description,
+ createIntent()
+ )
+ )
+ }
+ }
+ .build()
diff --git a/app/src/main/java/net/sourceforge/opencamera/ext/VINParsedResult.kt b/app/src/main/java/net/sourceforge/opencamera/ext/VINParsedResult.kt
new file mode 100644
index 0000000000000000000000000000000000000000..a27c3aebd34cc3bb7a9e4eef7a380b2e1bddbba6
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ext/VINParsedResult.kt
@@ -0,0 +1,39 @@
+/*
+ * SPDX-FileCopyrightText: 2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.ext
+
+
+import android.app.RemoteAction
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.os.Build
+import android.view.textclassifier.TextClassification
+import android.view.textclassifier.TextClassifier
+import com.google.zxing.client.result.VINParsedResult
+import net.sourceforge.opencamera.R
+
+fun VINParsedResult.createIntent() = Intent(
+ Intent.ACTION_VIEW, Uri.parse("https://www.vindecoderz.com/EN/check-lookup/${vin}")
+)
+
+fun VINParsedResult.createTextClassification(context: Context) = TextClassification.Builder()
+ .setText(vin)
+ .setEntityType(TextClassifier.TYPE_OTHER, 1.0f)
+ .apply {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ addAction(
+ RemoteAction::class.build(
+ context,
+ R.drawable.ic_directions_car,
+ R.string.qr_vin_title,
+ R.string.qr_vin_content_description,
+ createIntent()
+ )
+ )
+ }
+ }
+ .build()
diff --git a/app/src/main/java/net/sourceforge/opencamera/ext/WifiParsedResult.kt b/app/src/main/java/net/sourceforge/opencamera/ext/WifiParsedResult.kt
new file mode 100644
index 0000000000000000000000000000000000000000..c523f3e888b5b7e8db0b512cf7aaf75a9a961b85
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ext/WifiParsedResult.kt
@@ -0,0 +1,66 @@
+/*
+ * SPDX-FileCopyrightText: 2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.ext
+
+
+import android.app.RemoteAction
+import android.content.Context
+import android.content.Intent
+import android.net.wifi.WifiNetworkSuggestion
+import android.os.Build
+import android.provider.Settings
+import android.view.textclassifier.TextClassification
+import android.view.textclassifier.TextClassifier
+import androidx.annotation.RequiresApi
+import com.google.zxing.client.result.WifiParsedResult
+import net.sourceforge.opencamera.R
+
+@RequiresApi(Build.VERSION_CODES.R)
+fun WifiParsedResult.createIntent() = Intent(Settings.ACTION_WIFI_ADD_NETWORKS).apply {
+ putExtra(
+ Settings.EXTRA_WIFI_NETWORK_LIST,
+ arrayListOf(
+ WifiNetworkSuggestion.Builder()
+ .setSsid(ssid)
+ .setIsHiddenSsid(isHidden)
+ .apply {
+ password?.let {
+ when (networkEncryption) {
+ "WPA" -> {
+ // Per specs, Wi-Fi QR codes are only used for
+ // WPA2 and WPA-Mixed networks, we can safely assume
+ // this networks supports WPA2
+ setWpa2Passphrase(it)
+ }
+
+ "SAE" -> {
+ setWpa3Passphrase(it)
+ }
+ }
+ }
+ }
+ .build()
+ )
+ )
+}
+
+fun WifiParsedResult.createTextClassification(context: Context) = TextClassification.Builder()
+ .setText(ssid)
+ .setEntityType(TextClassifier.TYPE_OTHER, 1.0f)
+ .apply {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+ addAction(
+ RemoteAction::class.build(
+ context,
+ R.drawable.ic_network_wifi,
+ R.string.qr_wifi_title,
+ R.string.qr_wifi_content_description,
+ createIntent()
+ )
+ )
+ }
+ }
+ .build()
diff --git a/app/src/main/java/net/sourceforge/opencamera/preview/OverlayQRCodeView.java b/app/src/main/java/net/sourceforge/opencamera/preview/OverlayQRCodeView.java
new file mode 100644
index 0000000000000000000000000000000000000000..90113f94c4833b92d2aa18afde2de5b9ccf86687
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/preview/OverlayQRCodeView.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright MURENA SAS 2024
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.sourceforge.opencamera.preview;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.drawable.Drawable;
+import android.util.DisplayMetrics;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+
+import net.sourceforge.opencamera.R;
+
+public class OverlayQRCodeView extends View {
+ private Drawable qrcode;
+ // Do not draw the additional resource if something goes wrong
+ private boolean isValid = true;
+
+ public OverlayQRCodeView(Context context) {
+ super(context);
+ init();
+ }
+
+ private void init() {
+ qrcode = ContextCompat.getDrawable(this.getContext(), R.drawable.scan_area);
+ DisplayMetrics displayMetrics =this.getContext().getResources().getDisplayMetrics();
+ final int screenWidth = displayMetrics.widthPixels;
+ final int screenHeight = displayMetrics.heightPixels;
+
+ final int left = (screenWidth - qrcode.getIntrinsicWidth()) / 2;
+ final int top = (screenHeight - qrcode.getIntrinsicHeight()) / 2;
+ final int right = left + qrcode.getIntrinsicWidth();
+ final int bottom = top + qrcode.getIntrinsicHeight();
+
+ if (left <= 0 || top <= 0 || right <= 0 || bottom <= 0) {
+ isValid = false;
+ } else {
+ qrcode.setBounds(left, top, right, bottom);
+ }
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+ if (isValid) {
+ qrcode.draw(canvas);
+ }
+ }
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/preview/Preview.java b/app/src/main/java/net/sourceforge/opencamera/preview/Preview.java
index cc1698d2201b24efd15dcb501331c2146a38cb6e..78fcee29035b7b73cda493159121926df0698112 100644
--- a/app/src/main/java/net/sourceforge/opencamera/preview/Preview.java
+++ b/app/src/main/java/net/sourceforge/opencamera/preview/Preview.java
@@ -3,8 +3,8 @@ package net.sourceforge.opencamera.preview;
import net.sourceforge.opencamera.HDRProcessor;
import net.sourceforge.opencamera.JavaImageFunctions;
import net.sourceforge.opencamera.JavaImageProcessing;
+import net.sourceforge.opencamera.MainActivity;
import net.sourceforge.opencamera.cameracontroller.RawImage;
-//import net.sourceforge.opencamera.MainActivity;
import net.sourceforge.opencamera.MyDebug;
import net.sourceforge.opencamera.R;
import net.sourceforge.opencamera.ScriptC_histogram_compute;
@@ -101,6 +101,15 @@ import android.widget.FrameLayout;
import android.widget.TextView;
import android.widget.Toast;
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.BinaryBitmap;
+import com.google.zxing.LuminanceSource;
+import com.google.zxing.MultiFormatReader;
+import com.google.zxing.Reader;
+import com.google.zxing.Result;
+import com.google.zxing.common.HybridBinarizer;
+import com.google.zxing.RGBLuminanceSource;
+
/** This class was originally named due to encapsulating the camera preview,
* but in practice it's grown to more than this, and includes most of the
* operation of the camera. It exists at a higher level than CameraController
@@ -198,7 +207,15 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
private AsyncTask open_camera_task; // background task used for opening camera
private CloseCameraTask close_camera_task; // background task used for closing camera
private boolean has_permissions = true; // whether we have permissions necessary to operate the camera (camera, storage); assume true until we've been denied one of them
- private boolean is_video;
+ public static enum FunctionalMode {
+ PHOTO,
+ VIDEO,
+ QRCODE
+ };
+ private FunctionalMode functionalMode = FunctionalMode.PHOTO;
+ private boolean is_video() {return functionalMode == FunctionalMode.VIDEO;};
+ private boolean is_qrcode() {return functionalMode == FunctionalMode.QRCODE;};
+ private boolean is_photo() {return functionalMode == FunctionalMode.PHOTO;};
private volatile MediaRecorder video_recorder; // must be volatile for test project reading the state
private volatile boolean video_start_time_set; // must be volatile for test project reading the state
private long video_start_time; // system time when the video recording was started, or last resumed if it was paused
@@ -211,6 +228,8 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
* Important to call close() when the video recording is finished, to free up any resources
* (e.g., supplied ParcelFileDescriptor).
*/
+
+ private OverlayQRCodeView overlayQRCodeView;
private static class VideoFileInfo {
private final ApplicationInterface.VideoMethod video_method;
private final Uri video_uri; // for VideoMethod.SAF, VideoMethod.URI or VideoMethod.MEDIASTORE
@@ -487,6 +506,8 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
if( canvasView != null ) {
parent.addView(canvasView);
}
+
+ overlayQRCodeView = new OverlayQRCodeView(getContext());
}
/*private void previewToCamera(float [] coords) {
@@ -690,14 +711,14 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
if( MyDebug.LOG )
Log.d(TAG, "handleSingleTouch");
- if( !this.is_video && this.isTakingPhotoOrOnTimer() ) {
+ if( !this.is_video() && this.isTakingPhotoOrOnTimer() ) {
// if video, okay to refocus when recording
return true;
}
// note, we always try to force start the preview (in case is_preview_paused has become false)
// except if recording video (firstly, the preview should be running; secondly, we don't want to reset the phase!)
- if( !this.is_video ) {
+ if( !this.is_video() ) {
startCameraPreview();
}
cancelAutoFocus();
@@ -795,7 +816,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
has_smooth_zoom = true;
smooth_zoom = zoom_ratios.get(multitouch_start_zoom_factor)/100.0f;
}
- else {
+ else {
has_multitouch_start_zoom_factor = false;
multitouch_start_zoom_factor = 0;
has_smooth_zoom = false;
@@ -1106,6 +1127,40 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
@Override
public void onSurfaceTextureUpdated(@NonNull SurfaceTexture arg0) {
refreshPreviewBitmap();
+
+ if (isQRCode()) {
+ enablePreviewBitmap();
+ TextureView textureView = (TextureView) this.cameraSurface;
+ Bitmap bitmap = textureView.getBitmap(preview_bitmap);
+
+ if (bitmap!=null) {
+ int width = bitmap.getWidth();
+ int height = bitmap.getHeight();
+ int[] pixels = new int[width * height];
+ bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
+
+ LuminanceSource source = new RGBLuminanceSource(width, height, pixels);
+ BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(source));
+ Reader reader = new MultiFormatReader();
+
+ try {
+ Result result = reader.decode(binaryBitmap);
+ String qrcodeContent = result.getText();
+ MainActivity mActivity = (MainActivity) this.getContext();
+ if (MyDebug.LOG)
+ Log.d(TAG, "Find QRCode qrcodeContent="+qrcodeContent );
+ if (result.getBarcodeFormat() == BarcodeFormat.QR_CODE) {
+ mActivity.qrImageAnalyzer.showQrDialog(result);
+ }
+ } catch (Exception e) {
+ // K1ZFP TODO Error 2
+ }
+ } else {
+ // K1ZFP TODO Error 1
+ }
+ } else {
+ disablePreviewBitmap();
+ }
}
private void configureTransform() {
@@ -1276,7 +1331,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
}
}
if( due_to_max_filesize || remaining_restart_video > 0 ) {
- if( is_video ) {
+ if( is_video() ) {
String toast = null;
if( !due_to_max_filesize )
toast = remaining_restart_video + " " + getContext().getResources().getString(R.string.repeats_to_go);
@@ -1657,7 +1712,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
current_focus_index = -1;
max_num_focus_areas = 0;
applicationInterface.cameraInOperation(false, false);
- if( is_video )
+ if( is_video() )
applicationInterface.cameraInOperation(false, true);
if( !this.has_surface ) {
if( MyDebug.LOG ) {
@@ -2037,7 +2092,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
saved_is_video = false;
}
// must switch video before setupCameraParameters(), and starting preview
- if( saved_is_video != this.is_video ) {
+ if( saved_is_video != this.is_video() ) {
if( MyDebug.LOG )
Log.d(TAG, "switch video mode as not in correct mode");
this.switchVideo(true, false);
@@ -2088,7 +2143,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
updateFlashForVideo();
if( take_photo ) {
- if( this.is_video ) {
+ if( this.is_video() ) {
if( MyDebug.LOG )
Log.d(TAG, "switch to video for take_photo widget");
this.switchVideo(true, true);
@@ -2097,8 +2152,8 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
// must be done after switching to video mode (so is_video is set correctly)
if( MyDebug.LOG )
- Log.d(TAG, "is_video?: " + is_video);
- if( this.is_video ) {
+ Log.d(TAG, "is_video?: " + is_video());
+ if( this.is_video() ) {
CameraController.TonemapProfile tonemap_profile = CameraController.TonemapProfile.TONEMAPPROFILE_OFF;
if( supports_tonemap_curve ) {
tonemap_profile = applicationInterface.getVideoTonemapProfile();
@@ -2117,7 +2172,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
// Setup for high speed - must be done after setupCameraParameters() and switching to video mode, but before setPreviewSize() and startCameraPreview().
// In theory it shouldn't matter if we call setVideoHighSpeed(true) if is_video==false, as it should only have an effect
// when recording video; but don't set high speed mode in photo mode just to be safe.
- camera_controller.setVideoHighSpeed(is_video && video_high_speed);
+ camera_controller.setVideoHighSpeed(is_video() && video_high_speed);
if( do_startup_focus && using_android_l && camera_controller.supportsAutoFocus() ) {
// need to switch flash off for autofocus - and for Android L, need to do this before starting preview (otherwise it won't work in time); for old camera API, need to do this after starting preview!
@@ -2276,9 +2331,13 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
}
}
- private int find1xZoom() {
+ public int find1xZoom() {
+ return findNxZoom(1.0f);
+ }
+
+ public int findNxZoom(float zoom) {
for(int i=0;i= Build.VERSION_CODES.JELLY_BEAN
- ) {
+ ) {
int n_faces = local_faces.length;
FaceLocation face_location = FaceLocation.FACELOCATION_UNKNOWN;
if( n_faces > 0 ) {
@@ -2634,10 +2693,10 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
{
if( MyDebug.LOG ) {
Log.d(TAG, "set up video stabilization");
- Log.d(TAG, "is_video?: " + is_video);
+ Log.d(TAG, "is_video?: " + is_video());
}
if( this.supports_video_stabilization ) {
- boolean using_video_stabilization = is_video && applicationInterface.getVideoStabilizationPref();
+ boolean using_video_stabilization = is_video() && applicationInterface.getVideoStabilizationPref();
if( MyDebug.LOG )
Log.d(TAG, "using_video_stabilization?: " + using_video_stabilization);
camera_controller.setVideoStabilization(using_video_stabilization);
@@ -3083,7 +3142,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
if( MyDebug.LOG )
Log.d(TAG, "check if we need high speed video for " + profile.videoFrameWidth + " x " + profile.videoFrameHeight + " at fps " + profile.videoCaptureRate);
CameraController.Size best_video_size = video_quality_handler.findVideoSizeForFrameRate(profile.videoFrameWidth, profile.videoFrameHeight, profile.videoCaptureRate, false);
- // n.b., we should pass videoCaptureRate and not videoFrameRate (as for slow motion, it's videoCaptureRate that will be high, not videoFrameRate)
+ // n.b., we should pass videoCaptureRate and not videoFrameRate (as for slow motion, it's videoCaptureRate that will be high, not videoFrameRate)
if( best_video_size == null && fpsIsHighSpeed("" + profile.videoFrameRate) && video_quality_handler.getSupportedVideoSizesHighSpeed() != null ) {
Log.e(TAG, "can't find match for capture rate: " + profile.videoCaptureRate + " and video size: " + profile.videoFrameWidth + " x " + profile.videoFrameHeight + " at fps " + profile.videoCaptureRate);
@@ -3137,7 +3196,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
Log.d(TAG, "video_high_speed?: " + video_high_speed);
}
- if( is_video && video_high_speed && supports_iso_range && is_manual_iso ) {
+ if( is_video() && video_high_speed && supports_iso_range && is_manual_iso ) {
if( MyDebug.LOG )
Log.d(TAG, "manual mode not supported for video_high_speed");
camera_controller.setManualISO(false, 0);
@@ -3290,7 +3349,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
}
// first set picture size (for photo mode, must be done now so we can set the picture size from this; for video, doesn't really matter when we set it)
CameraController.Size new_size;
- if( this.is_video ) {
+ if( this.is_video() ) {
// see comments for getOptimalVideoPictureSize()
VideoProfile profile = getVideoProfile();
if( MyDebug.LOG )
@@ -3820,8 +3879,8 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
String preview_size = applicationInterface.getPreviewSizePref();
// should always use wysiwig for video mode, otherwise we get incorrect aspect ratio shown when recording video (at least on Galaxy Nexus, e.g., at 640x480)
// also not using wysiwyg mode with video caused corruption on Samsung cameras (tested with Samsung S3, Android 4.3, front camera, infinity focus)
- if( preview_size.equals("preference_preview_size_wysiwyg") || this.is_video ) {
- if( this.is_video ) {
+ if( preview_size.equals("preference_preview_size_wysiwyg") || this.is_video() ) {
+ if( this.is_video() ) {
if( MyDebug.LOG )
Log.d(TAG, "set preview aspect ratio from video size (wysiwyg)");
VideoProfile profile = getVideoProfile();
@@ -3879,7 +3938,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
final double ASPECT_TOLERANCE = 0.05;
if( sizes == null )
return null;
- if( is_video && video_high_speed ) {
+ if( is_video() && video_high_speed ) {
VideoProfile profile = getVideoProfile();
if( MyDebug.LOG )
Log.d(TAG, "video size: " + profile.videoFrameWidth + " x " + profile.videoFrameHeight);
@@ -3939,6 +3998,9 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
Log.d(TAG, "no preview size matches the aspect ratio");
optimalSize = getClosestSize(sizes, targetRatio, null);
}
+
+ handleDecorFitsSystemWindows(optimalSize, display_size);
+
if( MyDebug.LOG ) {
Log.d(TAG, "chose optimalSize: " + optimalSize.width + " x " + optimalSize.height);
Log.d(TAG, "optimalSize ratio: " + ((double)optimalSize.width / optimalSize.height));
@@ -3946,6 +4008,12 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
return optimalSize;
}
+ private void handleDecorFitsSystemWindows(CameraController.Size optimalSize, Point display_size) {
+ double previewRatio = (double) optimalSize.width / optimalSize.height;
+ double screenRatio = (double) display_size.x / display_size.y;
+ ((MainActivity)getContext()).handleDecorFitsSystemWindows(previewRatio, screenRatio);
+ }
+
public CameraController.Size getOptimalVideoPictureSize(List sizes, double targetRatio) {
if( MyDebug.LOG )
Log.d(TAG, "getOptimalVideoPictureSize()");
@@ -4161,6 +4229,13 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
if( MyDebug.LOG )
Log.d(TAG, "getImageVideoRotation() lock to portrait, returns " + result);
return result;
+ } else {
+ int cameraRotationOffset = camera_controller.getCameraOrientation();
+ boolean isFrontFacing = camera_controller.getFacing() == CameraController.Facing.FACING_FRONT;
+ int rotation = isFrontFacing ? cameraRotationOffset + getDisplayRotationDegrees(true) :
+ cameraRotationOffset - getDisplayRotationDegrees(true);
+
+ current_rotation = (360 + rotation) % 360;
}
if( MyDebug.LOG )
Log.d(TAG, "getImageVideoRotation() returns current_rotation " + current_rotation);
@@ -4700,7 +4775,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
// (important not to return here however - still want to call
// camera_controller.clearPreviewFpsRange() to clear a previously set fps)
}
- else if( this.is_video ) {
+ else if( this.is_video() ) {
// For Nexus 5 and Nexus 6, we need to set the preview fps using matchPreviewFpsToVideo to avoid problem of dark preview in low light, as described above.
// When the video recording starts, the preview automatically adjusts, but still good to avoid too-dark preview before the user starts recording.
// However I'm wary of changing the behaviour for all devices at the moment, since some devices can be
@@ -4771,22 +4846,27 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
Log.d(TAG, "camera not opened!");
return;
}
- if( !is_video && !supports_video ) {
+ if( !is_video() && !supports_video ) {
if( MyDebug.LOG )
Log.d(TAG, "video not supported");
return;
}
- boolean old_is_video = is_video;
- if( this.is_video ) {
+
+ boolean old_is_video = is_video();
+ boolean old_is_qrcode = is_qrcode();
+ if( this.is_video() ) {
if( video_recorder != null ) {
stopVideo(false);
}
- this.is_video = false;
- }
- else {
+ setQRCode(true);
+ } else if (this.is_qrcode()) {
+ this.functionalMode = FunctionalMode.PHOTO;
+ setQRCode(false);
+ } else if (this.is_photo()) {
if( this.isOnTimer() ) {
cancelTimer();
- this.is_video = true;
+ ((MainActivity)getContext()).setDecorFitsSystemWindows(true);
+ this.functionalMode = FunctionalMode.VIDEO;
}
else if( this.phase == PHASE_TAKING_PHOTO ) {
// wait until photo taken
@@ -4794,11 +4874,17 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
Log.d(TAG, "wait until photo taken");
}
else {
- this.is_video = true;
+ ((MainActivity)getContext()).setDecorFitsSystemWindows(true);
+ this.functionalMode = FunctionalMode.VIDEO;
}
+ // nothing to do for overlayQRCodeView in this mode
}
- if( is_video != old_is_video ) {
+ if (is_qrcode() != old_is_qrcode) {
+ applicationInterface.setVideoPref(false);
+ this.reopenCamera();
+ }
+ else if (is_video() != old_is_video) {
setFocusPref(false); // first restore the saved focus for the new photo/video mode; don't do autofocus, as it'll be cancelled when restarting preview
/*if( !is_video ) {
// changing from video to photo mode
@@ -4807,7 +4893,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
if( change_user_pref ) {
// now save
- applicationInterface.setVideoPref(is_video);
+ applicationInterface.setVideoPref(true);
}
if( !during_startup ) {
// if during startup, updateFlashForVideo() needs to always be explicitly called anyway
@@ -4834,7 +4920,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
// changing from photo to video mode
setFocusPref(false);
}*/
- if( is_video ) {
+ if( is_video() ) {
if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && applicationInterface.getRecordAudioPref() ) {
// check for audio permission now, rather than when user starts video recording
// we restrict the checks to Android 6 or later just in case, see note in LocationSupplier.setupLocationListener()
@@ -4862,7 +4948,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
private void setFocusPref(boolean auto_focus) {
if( MyDebug.LOG )
Log.d(TAG, "setFocusPref()");
- String focus_value = applicationInterface.getFocusPref(is_video);
+ String focus_value = applicationInterface.getFocusPref(is_video());
if( focus_value.length() > 0 ) {
if( MyDebug.LOG )
Log.d(TAG, "found existing focus_value: " + focus_value);
@@ -4877,7 +4963,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
Log.d(TAG, "found no existing focus_value");
// here we set the default values for focus mode
// note if updating default focus value for photo mode, also update MainActivityTest.setToDefault()
- if( !updateFocus(is_video ? "focus_mode_continuous_video" : "focus_mode_continuous_picture", true, true, auto_focus) ) {
+ if( !updateFocus(is_video() ? "focus_mode_continuous_video" : "focus_mode_continuous_picture", true, true, auto_focus) ) {
if( MyDebug.LOG )
Log.d(TAG, "continuous focus not supported, so fall back to first");
updateFocus(0, true, true, auto_focus);
@@ -4896,12 +4982,12 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
if( MyDebug.LOG )
Log.d(TAG, "updateFocusForVideo()");
String old_focus_mode = null;
- if( this.supported_focus_values != null && camera_controller != null && is_video ) {
+ if( this.supported_focus_values != null && camera_controller != null && is_video() ) {
boolean focus_is_video = focusIsVideo();
if( MyDebug.LOG ) {
- Log.d(TAG, "focus_is_video: " + focus_is_video + " , is_video: " + is_video);
+ Log.d(TAG, "focus_is_video: " + focus_is_video + " , is_video: " + is_video());
}
- if( focus_is_video != is_video ) {
+ if( focus_is_video != is_video() ) {
if( MyDebug.LOG )
Log.d(TAG, "need to change focus mode");
old_focus_mode = this.getCurrentFocusValue();
@@ -4918,7 +5004,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
private void updateFlashForVideo() {
if( MyDebug.LOG )
Log.d(TAG, "updateFlashForVideo()");
- if( is_video ) {
+ if( is_video() ) {
// check flash is not auto or on
String current_flash = getCurrentFlashValue();
if( current_flash != null && !isFlashSupportedForVideo(current_flash) ) {
@@ -4982,7 +5068,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
public void updateFlash(String flash_value) {
if( MyDebug.LOG )
Log.d(TAG, "updateFlash(): " + flash_value);
- if( this.phase == PHASE_TAKING_PHOTO && !is_video ) {
+ if( this.phase == PHASE_TAKING_PHOTO && !is_video() ) {
// just to be safe - risk of cancelling the autofocus before taking a photo, or otherwise messing things up
if( MyDebug.LOG )
Log.d(TAG, "currently taking a photo");
@@ -5023,7 +5109,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
// don't bother setting done to false as we shouldn't have two torches in a row...
}
- if( is_video ) {
+ if( is_video() ) {
// check supported for video
String new_flash_value = supported_flash_values.get(new_flash_index);
if( !isFlashSupportedForVideo(new_flash_value) ) {
@@ -5193,7 +5279,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
if( save ) {
// now save
- applicationInterface.setFocusPref(focus_value, is_video);
+ applicationInterface.setFocusPref(focus_value, is_video());
}
}
}
@@ -5242,7 +5328,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
String focus_value = current_focus_index != -1 ? supported_focus_values.get(current_focus_index) : null;
if( MyDebug.LOG )
Log.d(TAG, "focus_value is " + focus_value);
- if( camera_controller != null && focus_value != null && focus_value.equals("focus_mode_continuous_picture") && !this.is_video ) {
+ if( camera_controller != null && focus_value != null && focus_value.equals("focus_mode_continuous_picture") && !this.is_video()) {
if( MyDebug.LOG )
Log.d(TAG, "set continuous picture focus move callback");
camera_controller.setContinuousFocusMoveCallback(new CameraController.ContinuousFocusMoveCallback() {
@@ -5326,7 +5412,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
this.phase = PHASE_NORMAL;
return;
}
- if( is_video && continuous_fast_burst ) {
+ if( is_video() && continuous_fast_burst ) {
Log.e(TAG, "continuous_fast_burst not supported for video mode");
this.phase = PHASE_NORMAL;
return;
@@ -5338,7 +5424,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
}
//if( !photo_snapshot && this.phase == PHASE_TAKING_PHOTO ) {
//if( (is_video && is_video_recording && !photo_snapshot) || this.phase == PHASE_TAKING_PHOTO ) {
- if( is_video && isVideoRecording() && !photo_snapshot ) {
+ if( is_video() && isVideoRecording() && !photo_snapshot ) {
// user requested stop video
if( !video_start_time_set || System.currentTimeMillis() - video_start_time < 500 ) {
// if user presses to stop too quickly, we ignore
@@ -5352,7 +5438,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
}
return;
}
- else if( ( !is_video || photo_snapshot ) && this.phase == PHASE_TAKING_PHOTO ) {
+ else if( ( !is_video() || photo_snapshot ) && this.phase == PHASE_TAKING_PHOTO ) {
// user requested take photo while already taking photo
if( MyDebug.LOG )
Log.d(TAG, "already taking a photo");
@@ -5360,14 +5446,14 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
cancelRepeat();
showToast(take_photo_toast, R.string.cancelled_repeat_mode, true);
}
- else if( !is_video && camera_controller.getBurstType() == CameraController.BurstType.BURSTTYPE_FOCUS && camera_controller.isCapturingBurst() ) {
+ else if( !is_video() && camera_controller.getBurstType() == CameraController.BurstType.BURSTTYPE_FOCUS && camera_controller.isCapturingBurst() ) {
camera_controller.stopFocusBracketingBurst();
showToast(take_photo_toast, R.string.cancelled_focus_bracketing, true);
}
return;
}
- if( !is_video || photo_snapshot ) {
+ if( !is_video() || photo_snapshot ) {
// check it's okay to take a photo
if( !applicationInterface.canTakeNewPhoto() ) {
if( MyDebug.LOG )
@@ -5651,7 +5737,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
if( MyDebug.LOG )
Log.d(TAG, "takePicture");
//this.thumbnail_anim = false;
- if( !is_video || photo_snapshot )
+ if( !is_video() || photo_snapshot )
this.phase = PHASE_TAKING_PHOTO;
else {
if( phase == PHASE_TIMER )
@@ -5666,7 +5752,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
Log.d(TAG, "camera not opened!");
this.phase = PHASE_NORMAL;
applicationInterface.cameraInOperation(false, false);
- if( is_video )
+ if( is_video() )
applicationInterface.cameraInOperation(false, true);
return;
}
@@ -5675,7 +5761,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
Log.d(TAG, "preview surface not yet available");
this.phase = PHASE_NORMAL;
applicationInterface.cameraInOperation(false, false);
- if( is_video )
+ if( is_video() )
applicationInterface.cameraInOperation(false, true);
return;
}
@@ -5691,17 +5777,17 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
if( MyDebug.LOG )
Log.d(TAG, "location data required, but not available");
showToast(null, R.string.location_not_available, true);
- if( !is_video || photo_snapshot )
+ if( !is_video() || photo_snapshot )
this.phase = PHASE_NORMAL;
applicationInterface.cameraInOperation(false, false);
- if( is_video )
+ if( is_video() )
applicationInterface.cameraInOperation(false, true);
return;
}
}
}
- if( is_video && !photo_snapshot ) {
+ if( is_video() && !photo_snapshot ) {
if( MyDebug.LOG )
Log.d(TAG, "start video recording");
startVideoRecording(max_filesize_restart);
@@ -6559,7 +6645,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
camera_controller.setRotation(getImageVideoRotation());
boolean enable_sound = applicationInterface.getShutterSoundPref();
- if( is_video && isVideoRecording() )
+ if( is_video() && isVideoRecording() )
enable_sound = false; // always disable shutter sound if we're taking a photo while recording video
if( MyDebug.LOG )
Log.d(TAG, "enable_sound? " + enable_sound);
@@ -6663,7 +6749,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
if( MyDebug.LOG )
Log.d(TAG, "preview not yet started");
}
- else if( !(manual && this.is_video) && (this.isVideoRecording() || this.isTakingPhotoOrOnTimer()) ) {
+ else if( !(manual && this.is_video()) && (this.isVideoRecording() || this.isTakingPhotoOrOnTimer()) ) {
// if taking a video, we allow manual autofocuses
// autofocus may cause problem if there is a video corruption problem, see testTakeVideoBitrate() on Nexus 7 at 30Mbs or 50Mbs, where the startup autofocus would cause a problem here
if( MyDebug.LOG )
@@ -6674,7 +6760,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
// remove any previous request to switch back to continuous
removePendingContinuousFocusReset();
}
- if( manual && !is_video && camera_controller.focusIsContinuous() && supportedFocusValue("focus_mode_auto") ) {
+ if( manual && !is_video() && camera_controller.focusIsContinuous() && supportedFocusValue("focus_mode_auto") ) {
if( MyDebug.LOG )
Log.d(TAG, "switch from continuous to autofocus mode for touch focus");
camera_controller.setFocusValue("focus_mode_auto"); // switch to autofocus
@@ -6856,8 +6942,8 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
Log.d(TAG, "starting the camera preview");
{
if( MyDebug.LOG )
- Log.d(TAG, "setRecordingHint: " + is_video);
- camera_controller.setRecordingHint(this.is_video);
+ Log.d(TAG, "setRecordingHint: " + is_video());
+ camera_controller.setRecordingHint(this.is_video());
}
setPreviewFps();
try {
@@ -7157,7 +7243,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
public boolean isVideoHighSpeed() {
if( MyDebug.LOG )
Log.d(TAG, "isVideoHighSpeed");
- return is_video && video_high_speed;
+ return is_video() && video_high_speed;
}
public boolean canDisableShutterSound() {
@@ -7415,8 +7501,8 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
/** Returns the horizontal angle of view in degrees (when unzoomed).
*/
public float getViewAngleX(boolean for_preview) {
- if( MyDebug.LOG )
- Log.d(TAG, "getViewAngleX: " + for_preview);
+ if( MyDebug.LOG )
+ Log.d(TAG, "getViewAngleX: " + for_preview);
CameraController.Size size = for_preview ? this.getCurrentPreviewSize() : this.getCurrentPictureSize();
if( size == null ) {
Log.e(TAG, "can't find view angle x size");
@@ -7449,8 +7535,8 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
/** Returns the vertical angle of view in degrees (when unzoomed).
*/
public float getViewAngleY(boolean for_preview) {
- if( MyDebug.LOG )
- Log.d(TAG, "getViewAngleY: " + for_preview);
+ if( MyDebug.LOG )
+ Log.d(TAG, "getViewAngleY: " + for_preview);
CameraController.Size size = for_preview ? this.getCurrentPreviewSize() : this.getCurrentPictureSize();
if( size == null ) {
Log.e(TAG, "can't find view angle y size");
@@ -8526,7 +8612,7 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
}
else
{
- result.new_histogram = computeHistogramRS(allocation_in, preview.rs, histogramScript, preview.histogram_type);
+ result.new_histogram = computeHistogramRS(allocation_in, preview.rs, histogramScript, preview.histogram_type);
}
if( MyDebug.LOG ) {
@@ -8552,27 +8638,27 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
}
else
{
- Allocation output_allocation = Allocation.createFromBitmap(preview.rs, zebra_stripes_bitmap_buffer);
-
- histogramScript.set_zebra_stripes_threshold(preview.zebra_stripes_threshold);
- histogramScript.set_zebra_stripes_foreground_r(Color.red(preview.zebra_stripes_color_foreground));
- histogramScript.set_zebra_stripes_foreground_g(Color.green(preview.zebra_stripes_color_foreground));
- histogramScript.set_zebra_stripes_foreground_b(Color.blue(preview.zebra_stripes_color_foreground));
- histogramScript.set_zebra_stripes_foreground_a(Color.alpha(preview.zebra_stripes_color_foreground));
- histogramScript.set_zebra_stripes_background_r(Color.red(preview.zebra_stripes_color_background));
- histogramScript.set_zebra_stripes_background_g(Color.green(preview.zebra_stripes_color_background));
- histogramScript.set_zebra_stripes_background_b(Color.blue(preview.zebra_stripes_color_background));
- histogramScript.set_zebra_stripes_background_a(Color.alpha(preview.zebra_stripes_color_background));
- histogramScript.set_zebra_stripes_width(zebra_stripes_width);
+ Allocation output_allocation = Allocation.createFromBitmap(preview.rs, zebra_stripes_bitmap_buffer);
+
+ histogramScript.set_zebra_stripes_threshold(preview.zebra_stripes_threshold);
+ histogramScript.set_zebra_stripes_foreground_r(Color.red(preview.zebra_stripes_color_foreground));
+ histogramScript.set_zebra_stripes_foreground_g(Color.green(preview.zebra_stripes_color_foreground));
+ histogramScript.set_zebra_stripes_foreground_b(Color.blue(preview.zebra_stripes_color_foreground));
+ histogramScript.set_zebra_stripes_foreground_a(Color.alpha(preview.zebra_stripes_color_foreground));
+ histogramScript.set_zebra_stripes_background_r(Color.red(preview.zebra_stripes_color_background));
+ histogramScript.set_zebra_stripes_background_g(Color.green(preview.zebra_stripes_color_background));
+ histogramScript.set_zebra_stripes_background_b(Color.blue(preview.zebra_stripes_color_background));
+ histogramScript.set_zebra_stripes_background_a(Color.alpha(preview.zebra_stripes_color_background));
+ histogramScript.set_zebra_stripes_width(zebra_stripes_width);
- if( MyDebug.LOG )
- Log.d(TAG, "time before histogramScript generate_zebra_stripes: " + (System.currentTimeMillis() - debug_time));
- histogramScript.forEach_generate_zebra_stripes(allocation_in, output_allocation);
- if( MyDebug.LOG )
- Log.d(TAG, "time after histogramScript generate_zebra_stripes: " + (System.currentTimeMillis() - debug_time));
+ if( MyDebug.LOG )
+ Log.d(TAG, "time before histogramScript generate_zebra_stripes: " + (System.currentTimeMillis() - debug_time));
+ histogramScript.forEach_generate_zebra_stripes(allocation_in, output_allocation);
+ if( MyDebug.LOG )
+ Log.d(TAG, "time after histogramScript generate_zebra_stripes: " + (System.currentTimeMillis() - debug_time));
- output_allocation.copyTo(zebra_stripes_bitmap_buffer);
- output_allocation.destroy();
+ output_allocation.copyTo(zebra_stripes_bitmap_buffer);
+ output_allocation.destroy();
}
// The original orientation of the bitmap we get from textureView.getBitmap() needs to be rotated to
@@ -8631,29 +8717,29 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
}
else
{
- Allocation output_allocation = Allocation.createFromBitmap(preview.rs, focus_peaking_bitmap_buffer);
+ Allocation output_allocation = Allocation.createFromBitmap(preview.rs, focus_peaking_bitmap_buffer);
- histogramScript.set_bitmap(allocation_in);
+ histogramScript.set_bitmap(allocation_in);
- if( MyDebug.LOG )
- Log.d(TAG, "time before histogramScript generate_focus_peaking: " + (System.currentTimeMillis() - debug_time));
- histogramScript.forEach_generate_focus_peaking(allocation_in, output_allocation);
- if( MyDebug.LOG )
- Log.d(TAG, "time after histogramScript generate_focus_peaking: " + (System.currentTimeMillis() - debug_time));
+ if( MyDebug.LOG )
+ Log.d(TAG, "time before histogramScript generate_focus_peaking: " + (System.currentTimeMillis() - debug_time));
+ histogramScript.forEach_generate_focus_peaking(allocation_in, output_allocation);
+ if( MyDebug.LOG )
+ Log.d(TAG, "time after histogramScript generate_focus_peaking: " + (System.currentTimeMillis() - debug_time));
- // median filter
- Allocation filtered_allocation = Allocation.createTyped(preview.rs, Type.createXY(preview.rs, Element.RGBA_8888(preview.rs), focus_peaking_bitmap_buffer.getWidth(), focus_peaking_bitmap_buffer.getHeight()));
- histogramScript.set_bitmap(output_allocation);
- if( MyDebug.LOG )
- Log.d(TAG, "time before histogramScript generate_focus_peaking_filtered: " + (System.currentTimeMillis() - debug_time));
- histogramScript.forEach_generate_focus_peaking_filtered(output_allocation, filtered_allocation);
- if( MyDebug.LOG )
- Log.d(TAG, "time after histogramScript generate_focus_peaking_filtered: " + (System.currentTimeMillis() - debug_time));
- output_allocation.destroy();
- output_allocation = filtered_allocation;
+ // median filter
+ Allocation filtered_allocation = Allocation.createTyped(preview.rs, Type.createXY(preview.rs, Element.RGBA_8888(preview.rs), focus_peaking_bitmap_buffer.getWidth(), focus_peaking_bitmap_buffer.getHeight()));
+ histogramScript.set_bitmap(output_allocation);
+ if( MyDebug.LOG )
+ Log.d(TAG, "time before histogramScript generate_focus_peaking_filtered: " + (System.currentTimeMillis() - debug_time));
+ histogramScript.forEach_generate_focus_peaking_filtered(output_allocation, filtered_allocation);
+ if( MyDebug.LOG )
+ Log.d(TAG, "time after histogramScript generate_focus_peaking_filtered: " + (System.currentTimeMillis() - debug_time));
+ output_allocation.destroy();
+ output_allocation = filtered_allocation;
- output_allocation.copyTo(focus_peaking_bitmap_buffer);
- output_allocation.destroy();
+ output_allocation.copyTo(focus_peaking_bitmap_buffer);
+ output_allocation.destroy();
}
@@ -8787,10 +8873,33 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
}
}
+ public void setQRCode(boolean enabled) {
+ final Activity activity = (Activity) Preview.this.getContext();
+ final FrameLayout rootLayout = activity.findViewById(android.R.id.content);
+ if (enabled) {
+ this.functionalMode = FunctionalMode.QRCODE;
+ rootLayout.addView(overlayQRCodeView);
+ int qrcodeCamId = ((MainActivity)getContext()).getBetterQRCodeCameraID();
+ if (qrcodeCamId >= 0) {
+ applicationInterface.setCameraIdPref(qrcodeCamId);
+ }
+ } else if (overlayQRCodeView.getParent() != null) {
+ rootLayout.removeView(overlayQRCodeView);
+ }
+ }
+
+ public boolean isQRCode() {
+ return functionalMode == FunctionalMode.QRCODE;
+ }
+
/** Whether we are in video mode, or photo mode.
*/
public boolean isVideo() {
- return is_video;
+ return functionalMode == FunctionalMode.VIDEO;
+ }
+
+ public boolean isPhoto() {
+ return functionalMode == FunctionalMode.PHOTO;
}
public boolean isVideoRecording() {
diff --git a/app/src/main/java/net/sourceforge/opencamera/qr/QrImageAnalyzer.kt b/app/src/main/java/net/sourceforge/opencamera/qr/QrImageAnalyzer.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e4676434eab2dfc4e873239a36d33ecebaf558e0
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/qr/QrImageAnalyzer.kt
@@ -0,0 +1,215 @@
+/*
+ * SPDX-FileCopyrightText: 2022-2023 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.qr
+
+import android.app.Activity
+import android.app.KeyguardManager
+import android.app.PendingIntent
+import android.content.ClipData
+import android.content.ClipDescription
+import android.content.ClipboardManager
+import android.content.Intent
+import android.content.pm.ActivityInfo
+import android.os.Build
+import android.text.method.LinkMovementMethod
+import android.view.textclassifier.TextClassificationManager
+import android.widget.ImageButton
+import android.widget.ImageView
+import android.widget.LinearLayout
+import android.widget.TextView
+import android.widget.Toast
+import androidx.appcompat.content.res.AppCompatResources
+import androidx.appcompat.widget.LinearLayoutCompat.LayoutParams
+import androidx.cardview.widget.CardView
+import androidx.core.graphics.drawable.DrawableCompat
+import com.google.android.material.bottomsheet.BottomSheetDialog
+import com.google.android.material.button.MaterialButton
+import com.google.zxing.MultiFormatReader
+import com.google.zxing.Result
+import net.sourceforge.opencamera.R
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
+import net.sourceforge.opencamera.ext.getThemeColor
+import net.sourceforge.opencamera.ext.px
+import kotlin.reflect.cast
+
+class QrImageAnalyzer(private val activity: Activity, private val scope: CoroutineScope) {
+
+ // Views
+ private val bottomSheetDialog by lazy {
+ BottomSheetDialog(activity).apply {
+ setContentView(R.layout.qr_bottom_sheet_dialog)
+ }
+ }
+
+ private val bottomSheetDialogCardView by lazy {
+ bottomSheetDialog.findViewById(R.id.cardView)!!
+ }
+ private val bottomSheetDialogTitle by lazy {
+ bottomSheetDialog.findViewById(R.id.title)!!
+ }
+ private val bottomSheetDialogData by lazy {
+ bottomSheetDialog.findViewById(R.id.data)!!
+ }
+ private val bottomSheetDialogIcon by lazy {
+ bottomSheetDialog.findViewById(R.id.icon)!!
+ }
+ private val bottomSheetDialogCopy by lazy {
+ bottomSheetDialog.findViewById(R.id.copy)!!
+ }
+ private val bottomSheetDialogShare by lazy {
+ bottomSheetDialog.findViewById(R.id.share)!!
+ }
+ private val bottomSheetDialogActionsLayout by lazy {
+ bottomSheetDialog.findViewById(R.id.actionsLayout)!!
+ }
+
+ // System services
+ private val clipboardManager by lazy { activity.getSystemService(ClipboardManager::class.java) }
+ private val keyguardManager by lazy { activity.getSystemService(KeyguardManager::class.java) }
+ private val textClassificationManager by lazy {
+ activity.getSystemService(TextClassificationManager::class.java)
+ }
+
+ // QR
+ private val reader by lazy { MultiFormatReader() }
+
+ private val qrTextClassifier by lazy {
+ QrTextClassifier(activity, textClassificationManager.textClassifier)
+ }
+
+ public fun showQrDialog(result: Result) {
+ scope.launch(Dispatchers.Main) {
+ if (bottomSheetDialog.isShowing) {
+ return@launch
+ }
+
+ val text = result.text ?: return@launch
+ bottomSheetDialogData.text = text
+
+ // Classify message
+ val textClassification = withContext(Dispatchers.IO) {
+ qrTextClassifier.classifyText(result)
+ }
+
+ bottomSheetDialogData.text = textClassification.text
+ bottomSheetDialogActionsLayout.removeAllViews()
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P &&
+ textClassification.actions.isNotEmpty()
+ ) {
+ with(textClassification.actions[0]) {
+ bottomSheetDialogCardView.setOnClickListener {
+ try {
+ actionIntent.send()
+ } catch (e: PendingIntent.CanceledException) {
+ Toast.makeText(
+ activity,
+ R.string.qr_no_app_available_for_action,
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ }
+ bottomSheetDialogCardView.contentDescription = contentDescription
+ bottomSheetDialogData.movementMethod = null
+ bottomSheetDialogTitle.text = title
+ bottomSheetDialogIcon.setImageIcon(icon)
+ }
+ for (action in textClassification.actions.drop(1)) {
+ bottomSheetDialogActionsLayout.addView(inflateButton().apply {
+ setOnClickListener {
+ try {
+ action.actionIntent.send()
+ } catch (e: PendingIntent.CanceledException) {
+ Toast.makeText(
+ activity,
+ R.string.qr_no_app_available_for_action,
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ }
+ contentDescription = action.contentDescription
+ this.text = action.title
+ withContext(Dispatchers.IO) {
+ val drawable = action.icon.loadDrawable(activity)!!
+ drawable.setBounds(0, 0, 15.px, 15.px)
+ withContext(Dispatchers.Main) {
+ setCompoundDrawables(
+ drawable, null, null, null
+ )
+ }
+ }
+ })
+ }
+ } else {
+ bottomSheetDialogCardView.setOnClickListener {}
+ bottomSheetDialogTitle.text = activity.resources.getText(R.string.qr_text)
+ bottomSheetDialogIcon.setImageDrawable(AppCompatResources.getDrawable(
+ activity, R.drawable.ic_text_snippet
+ )?.let {
+ DrawableCompat.wrap(it.mutate()).apply {
+ DrawableCompat.setTint(
+ this, activity.getColor(
+ R.color.e_icon_color
+ )
+ )
+ }
+ })
+ }
+
+ // Make links clickable if not on locked keyguard
+ bottomSheetDialogData.movementMethod =
+ if (!keyguardManager.isKeyguardLocked) LinkMovementMethod.getInstance()
+ else null
+
+ // Set buttons
+ bottomSheetDialogCopy.setOnClickListener {
+ clipboardManager.setPrimaryClip(
+ ClipData.newPlainText(
+ "", text
+ )
+ )
+ }
+
+ bottomSheetDialogShare.setOnClickListener {
+ activity.startActivity(
+ Intent.createChooser(
+ Intent().apply {
+ action = Intent.ACTION_SEND
+ type = ClipDescription.MIMETYPE_TEXT_PLAIN
+ putExtra(
+ Intent.EXTRA_TEXT, result.text
+ )
+ },
+ activity.getString(R.string.abc_shareactionprovider_share_with)
+ )
+ )
+ }
+
+ // Show dialog
+ activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
+
+ bottomSheetDialog.show()
+
+ bottomSheetDialog.setOnDismissListener {
+ activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
+ }
+
+ }
+ }
+
+ private fun inflateButton() = MaterialButton::class.cast(
+ activity.layoutInflater.inflate(
+ R.layout.qr_bottom_sheet_action_button,
+ bottomSheetDialogActionsLayout,
+ false
+ )
+ ).apply {
+ layoutParams = LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)
+ }
+
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/qr/QrScannerActivity.kt b/app/src/main/java/net/sourceforge/opencamera/qr/QrScannerActivity.kt
new file mode 100644
index 0000000000000000000000000000000000000000..94a501b74debf8f08e94294b7d6694e72f429b5e
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/qr/QrScannerActivity.kt
@@ -0,0 +1,11 @@
+package net.sourceforge.opencamera.qr
+
+import android.os.Bundle
+import net.sourceforge.opencamera.MainActivity
+
+class QrScannerActivity : MainActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ preview.setQRCode(true)
+ }
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/qr/QrTextClassifier.kt b/app/src/main/java/net/sourceforge/opencamera/qr/QrTextClassifier.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7a4ffb63d8afafb6528e834091c0644380c9e140
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/qr/QrTextClassifier.kt
@@ -0,0 +1,101 @@
+/*
+ * SPDX-FileCopyrightText: 2023 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package net.sourceforge.opencamera.qr
+
+import android.app.RemoteAction
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.net.wifi.WifiManager
+import android.os.Build
+import android.os.LocaleList
+import android.provider.Settings
+import android.text.SpannableString
+import android.view.textclassifier.TextClassification
+import android.view.textclassifier.TextClassifier
+import com.google.zxing.Result
+import com.google.zxing.client.result.ResultParser
+import com.google.zxing.client.result.URIParsedResult
+import net.sourceforge.opencamera.R
+import net.sourceforge.opencamera.ext.build
+import net.sourceforge.opencamera.ext.createTextClassification
+import kotlin.reflect.safeCast
+
+class QrTextClassifier(
+ private val context: Context, private val textClassifier: TextClassifier
+) {
+ private val wifiManager by lazy {
+ runCatching { context.getSystemService(WifiManager::class.java) }.getOrNull()
+ }
+
+ fun classifyText(result: Result): TextClassification {
+ // Try with ZXing parser
+ val parsedResult = ResultParser.parseResult(result)
+ parsedResult?.createTextClassification(context)?.let {
+ return it
+ }
+
+ // We handle URIParsedResult here
+ val text = URIParsedResult::class.safeCast(parsedResult)?.uri ?: result.text
+
+ // Try parsing it as a Uri
+ Uri.parse(text.toString()).let { uri ->
+ when (uri.scheme?.lowercase()) {
+ // Wi-Fi DPP
+ SCHEME_DPP -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q &&
+ wifiManager?.isEasyConnectSupported == true
+ ) {
+ return TextClassification.Builder()
+ .setText(context.getString(R.string.qr_dpp_description))
+ .setEntityType(TextClassifier.TYPE_OTHER, 1.0f)
+ .addAction(
+ RemoteAction::class.build(
+ context,
+ R.drawable.ic_network_wifi,
+ R.string.qr_dpp_title,
+ R.string.qr_dpp_description,
+ Intent(Settings.ACTION_PROCESS_WIFI_EASY_CONNECT_URI).apply {
+ data = uri
+ }
+ )
+ )
+ .build()
+ }
+
+ SCHEME_FIDO -> return TextClassification.Builder()
+ .setText(context.getString(R.string.qr_fido_content_description))
+ .setEntityType(TextClassifier.TYPE_OTHER, 1.0f)
+ .apply {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ addAction(
+ RemoteAction::class.build(
+ context,
+ R.drawable.ic_passkey,
+ R.string.qr_fido_title,
+ R.string.qr_fido_content_description,
+ Intent(Intent.ACTION_VIEW).apply {
+ data = uri
+ }
+ )
+ )
+ }
+ }
+ .build()
+ }
+ }
+
+ // Let Android classify it
+ val spannableString = SpannableString(text)
+ return textClassifier.classifyText(
+ spannableString, 0, spannableString.length, LocaleList.getDefault()
+ )
+ }
+
+ companion object {
+ private const val SCHEME_DPP = "dpp"
+ private const val SCHEME_FIDO = "fido"
+ }
+}
diff --git a/app/src/main/java/net/sourceforge/opencamera/ui/CircleImageView.java b/app/src/main/java/net/sourceforge/opencamera/ui/CircleImageView.java
new file mode 100644
index 0000000000000000000000000000000000000000..5a545c62b92d6b01b492ba968b4864f2f842322c
--- /dev/null
+++ b/app/src/main/java/net/sourceforge/opencamera/ui/CircleImageView.java
@@ -0,0 +1,499 @@
+package net.sourceforge.opencamera.ui;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.BitmapShader;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.ColorFilter;
+import android.graphics.Matrix;
+import android.graphics.Outline;
+import android.graphics.Paint;
+import android.graphics.Rect;
+import android.graphics.RectF;
+import android.graphics.Shader;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.os.Build;
+import androidx.annotation.ColorInt;
+import androidx.annotation.ColorRes;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewOutlineProvider;
+import android.widget.ImageView;
+
+import net.sourceforge.opencamera.R;
+
+@SuppressWarnings("UnusedDeclaration")
+public class CircleImageView extends ImageView {
+
+ private static final ScaleType SCALE_TYPE = ScaleType.CENTER_CROP;
+
+ private static final Bitmap.Config BITMAP_CONFIG = Bitmap.Config.ARGB_8888;
+ private static final int COLORDRAWABLE_DIMENSION = 2;
+
+ private static final int DEFAULT_BORDER_WIDTH = 0;
+ private static final int DEFAULT_BORDER_COLOR = Color.BLACK;
+ private static final int DEFAULT_CIRCLE_BACKGROUND_COLOR = Color.TRANSPARENT;
+ private static final int DEFAULT_IMAGE_ALPHA = 255;
+ private static final boolean DEFAULT_BORDER_OVERLAY = false;
+
+ private final RectF mDrawableRect = new RectF();
+ private final RectF mBorderRect = new RectF();
+
+ private final Matrix mShaderMatrix = new Matrix();
+ private final Paint mBitmapPaint = new Paint();
+ private final Paint mBorderPaint = new Paint();
+ private final Paint mCircleBackgroundPaint = new Paint();
+
+ private int mBorderColor = DEFAULT_BORDER_COLOR;
+ private int mBorderWidth = DEFAULT_BORDER_WIDTH;
+ private int mCircleBackgroundColor = DEFAULT_CIRCLE_BACKGROUND_COLOR;
+ private int mImageAlpha = DEFAULT_IMAGE_ALPHA;
+
+ private Bitmap mBitmap;
+ private Canvas mBitmapCanvas;
+
+ private float mDrawableRadius;
+ private float mBorderRadius;
+
+ private ColorFilter mColorFilter;
+
+ private boolean mInitialized;
+ private boolean mRebuildShader;
+ private boolean mDrawableDirty;
+
+ private boolean mBorderOverlay;
+ private boolean mDisableCircularTransformation;
+
+ public CircleImageView(Context context) {
+ super(context);
+
+ init();
+ }
+
+ public CircleImageView(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public CircleImageView(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CircleImageView, defStyle, 0);
+
+ mBorderWidth = a.getDimensionPixelSize(R.styleable.CircleImageView_civ_border_width, DEFAULT_BORDER_WIDTH);
+ mBorderColor = a.getColor(R.styleable.CircleImageView_civ_border_color, DEFAULT_BORDER_COLOR);
+ mBorderOverlay = a.getBoolean(R.styleable.CircleImageView_civ_border_overlay, DEFAULT_BORDER_OVERLAY);
+ mCircleBackgroundColor = a.getColor(R.styleable.CircleImageView_civ_circle_background_color, DEFAULT_CIRCLE_BACKGROUND_COLOR);
+
+ a.recycle();
+
+ init();
+ }
+
+ private void init() {
+ mInitialized = true;
+
+ super.setScaleType(SCALE_TYPE);
+
+ mBitmapPaint.setAntiAlias(true);
+ mBitmapPaint.setDither(true);
+ mBitmapPaint.setFilterBitmap(true);
+ mBitmapPaint.setAlpha(mImageAlpha);
+ mBitmapPaint.setColorFilter(mColorFilter);
+
+ mBorderPaint.setStyle(Paint.Style.STROKE);
+ mBorderPaint.setAntiAlias(true);
+ mBorderPaint.setColor(mBorderColor);
+ mBorderPaint.setStrokeWidth(mBorderWidth);
+
+ mCircleBackgroundPaint.setStyle(Paint.Style.FILL);
+ mCircleBackgroundPaint.setAntiAlias(true);
+ mCircleBackgroundPaint.setColor(mCircleBackgroundColor);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ setOutlineProvider(new OutlineProvider());
+ }
+ }
+
+ @Override
+ public void setScaleType(ScaleType scaleType) {
+ if (scaleType != SCALE_TYPE) {
+ throw new IllegalArgumentException(String.format("ScaleType %s not supported.", scaleType));
+ }
+ }
+
+ @Override
+ public void setAdjustViewBounds(boolean adjustViewBounds) {
+ if (adjustViewBounds) {
+ throw new IllegalArgumentException("adjustViewBounds not supported.");
+ }
+ }
+
+ @SuppressLint("CanvasSize")
+ @Override
+ protected void onDraw(Canvas canvas) {
+ if (mDisableCircularTransformation) {
+ super.onDraw(canvas);
+ return;
+ }
+
+ if (mCircleBackgroundColor != Color.TRANSPARENT) {
+ canvas.drawCircle(mDrawableRect.centerX(), mDrawableRect.centerY(), mDrawableRadius, mCircleBackgroundPaint);
+ }
+
+ if (mBitmap != null) {
+ if (mDrawableDirty && mBitmapCanvas != null) {
+ mDrawableDirty = false;
+ Drawable drawable = getDrawable();
+ drawable.setBounds(0, 0, mBitmapCanvas.getWidth(), mBitmapCanvas.getHeight());
+ drawable.draw(mBitmapCanvas);
+ }
+
+ if (mRebuildShader) {
+ mRebuildShader = false;
+
+ BitmapShader bitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
+ bitmapShader.setLocalMatrix(mShaderMatrix);
+
+ mBitmapPaint.setShader(bitmapShader);
+ }
+
+ canvas.drawCircle(mDrawableRect.centerX(), mDrawableRect.centerY(), mDrawableRadius, mBitmapPaint);
+ }
+
+ if (mBorderWidth > 0) {
+ canvas.drawCircle(mBorderRect.centerX(), mBorderRect.centerY(), mBorderRadius, mBorderPaint);
+ }
+ }
+
+ @Override
+ public void invalidateDrawable(@NonNull Drawable dr) {
+ mDrawableDirty = true;
+ invalidate();
+ }
+
+ @Override
+ protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+ super.onSizeChanged(w, h, oldw, oldh);
+ updateDimensions();
+ invalidate();
+ }
+
+ @Override
+ public void setPadding(int left, int top, int right, int bottom) {
+ super.setPadding(left, top, right, bottom);
+ updateDimensions();
+ invalidate();
+ }
+
+ @Override
+ public void setPaddingRelative(int start, int top, int end, int bottom) {
+ super.setPaddingRelative(start, top, end, bottom);
+ updateDimensions();
+ invalidate();
+ }
+
+ public int getBorderColor() {
+ return mBorderColor;
+ }
+
+ public void setBorderColor(@ColorInt int borderColor) {
+ if (borderColor == mBorderColor) {
+ return;
+ }
+
+ mBorderColor = borderColor;
+ mBorderPaint.setColor(borderColor);
+ invalidate();
+ }
+
+ public int getCircleBackgroundColor() {
+ return mCircleBackgroundColor;
+ }
+
+ public void setCircleBackgroundColor(@ColorInt int circleBackgroundColor) {
+ if (circleBackgroundColor == mCircleBackgroundColor) {
+ return;
+ }
+
+ mCircleBackgroundColor = circleBackgroundColor;
+ mCircleBackgroundPaint.setColor(circleBackgroundColor);
+ invalidate();
+ }
+
+ /**
+ * @deprecated Use {@link #setCircleBackgroundColor(int)} instead
+ */
+ @Deprecated
+ public void setCircleBackgroundColorResource(@ColorRes int circleBackgroundRes) {
+ setCircleBackgroundColor(getContext().getResources().getColor(circleBackgroundRes));
+ }
+
+ public int getBorderWidth() {
+ return mBorderWidth;
+ }
+
+ public void setBorderWidth(int borderWidth) {
+ if (borderWidth == mBorderWidth) {
+ return;
+ }
+
+ mBorderWidth = borderWidth;
+ mBorderPaint.setStrokeWidth(borderWidth);
+ updateDimensions();
+ invalidate();
+ }
+
+ public boolean isBorderOverlay() {
+ return mBorderOverlay;
+ }
+
+ public void setBorderOverlay(boolean borderOverlay) {
+ if (borderOverlay == mBorderOverlay) {
+ return;
+ }
+
+ mBorderOverlay = borderOverlay;
+ updateDimensions();
+ invalidate();
+ }
+
+ public boolean isDisableCircularTransformation() {
+ return mDisableCircularTransformation;
+ }
+
+ public void setDisableCircularTransformation(boolean disableCircularTransformation) {
+ if (disableCircularTransformation == mDisableCircularTransformation) {
+ return;
+ }
+
+ mDisableCircularTransformation = disableCircularTransformation;
+
+ if (disableCircularTransformation) {
+ mBitmap = null;
+ mBitmapCanvas = null;
+ mBitmapPaint.setShader(null);
+ } else {
+ initializeBitmap();
+ }
+
+ invalidate();
+ }
+
+ @Override
+ public void setImageBitmap(Bitmap bm) {
+ super.setImageBitmap(bm);
+ initializeBitmap();
+ invalidate();
+ }
+
+ @Override
+ public void setImageDrawable(Drawable drawable) {
+ super.setImageDrawable(drawable);
+ initializeBitmap();
+ invalidate();
+ }
+
+ @Override
+ public void setImageResource(@DrawableRes int resId) {
+ super.setImageResource(resId);
+ initializeBitmap();
+ invalidate();
+ }
+
+ @Override
+ public void setImageURI(Uri uri) {
+ super.setImageURI(uri);
+ initializeBitmap();
+ invalidate();
+ }
+
+ @Override
+ public void setImageAlpha(int alpha) {
+ alpha &= 0xFF;
+
+ if (alpha == mImageAlpha) {
+ return;
+ }
+
+ mImageAlpha = alpha;
+
+ // This might be called during ImageView construction before
+ // member initialization has finished on API level >= 16.
+ if (mInitialized) {
+ mBitmapPaint.setAlpha(alpha);
+ invalidate();
+ }
+ }
+
+ @Override
+ public int getImageAlpha() {
+ return mImageAlpha;
+ }
+
+ @Override
+ public void setColorFilter(ColorFilter cf) {
+ if (cf == mColorFilter) {
+ return;
+ }
+
+ mColorFilter = cf;
+
+ // This might be called during ImageView construction before
+ // member initialization has finished on API level <= 19.
+ if (mInitialized) {
+ mBitmapPaint.setColorFilter(cf);
+ invalidate();
+ }
+ }
+
+ @Override
+ public ColorFilter getColorFilter() {
+ return mColorFilter;
+ }
+
+ private Bitmap getBitmapFromDrawable(Drawable drawable) {
+ if (drawable == null) {
+ return null;
+ }
+
+ if (drawable instanceof BitmapDrawable) {
+ return ((BitmapDrawable) drawable).getBitmap();
+ }
+
+ try {
+ Bitmap bitmap;
+
+ if (drawable instanceof ColorDrawable) {
+ bitmap = Bitmap.createBitmap(COLORDRAWABLE_DIMENSION, COLORDRAWABLE_DIMENSION, BITMAP_CONFIG);
+ } else {
+ bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), BITMAP_CONFIG);
+ }
+
+ Canvas canvas = new Canvas(bitmap);
+ drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
+ drawable.draw(canvas);
+ return bitmap;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ private void initializeBitmap() {
+ mBitmap = getBitmapFromDrawable(getDrawable());
+
+ if (mBitmap != null && mBitmap.isMutable()) {
+ mBitmapCanvas = new Canvas(mBitmap);
+ } else {
+ mBitmapCanvas = null;
+ }
+
+ if (!mInitialized) {
+ return;
+ }
+
+ if (mBitmap != null) {
+ updateShaderMatrix();
+ } else {
+ mBitmapPaint.setShader(null);
+ }
+ }
+
+ private void updateDimensions() {
+ mBorderRect.set(calculateBounds());
+ mBorderRadius = Math.min((mBorderRect.height() - mBorderWidth) / 2.0f, (mBorderRect.width() - mBorderWidth) / 2.0f);
+
+ mDrawableRect.set(mBorderRect);
+ if (!mBorderOverlay && mBorderWidth > 0) {
+ mDrawableRect.inset(mBorderWidth - 1.0f, mBorderWidth - 1.0f);
+ }
+ mDrawableRadius = Math.min(mDrawableRect.height() / 2.0f, mDrawableRect.width() / 2.0f);
+
+ updateShaderMatrix();
+ }
+
+ private RectF calculateBounds() {
+ int availableWidth = getWidth() - getPaddingLeft() - getPaddingRight();
+ int availableHeight = getHeight() - getPaddingTop() - getPaddingBottom();
+
+ int sideLength = Math.min(availableWidth, availableHeight);
+
+ float left = getPaddingLeft() + (availableWidth - sideLength) / 2f;
+ float top = getPaddingTop() + (availableHeight - sideLength) / 2f;
+
+ return new RectF(left, top, left + sideLength, top + sideLength);
+ }
+
+ private void updateShaderMatrix() {
+ if (mBitmap == null) {
+ return;
+ }
+
+ float scale;
+ float dx = 0;
+ float dy = 0;
+
+ mShaderMatrix.set(null);
+
+ int bitmapHeight = mBitmap.getHeight();
+ int bitmapWidth = mBitmap.getWidth();
+
+ if (bitmapWidth * mDrawableRect.height() > mDrawableRect.width() * bitmapHeight) {
+ scale = mDrawableRect.height() / (float) bitmapHeight;
+ dx = (mDrawableRect.width() - bitmapWidth * scale) * 0.5f;
+ } else {
+ scale = mDrawableRect.width() / (float) bitmapWidth;
+ dy = (mDrawableRect.height() - bitmapHeight * scale) * 0.5f;
+ }
+
+ mShaderMatrix.setScale(scale, scale);
+ mShaderMatrix.postTranslate((int) (dx + 0.5f) + mDrawableRect.left, (int) (dy + 0.5f) + mDrawableRect.top);
+
+ mRebuildShader = true;
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ if (mDisableCircularTransformation) {
+ return super.onTouchEvent(event);
+ }
+
+ return inTouchableArea(event.getX(), event.getY()) && super.onTouchEvent(event);
+ }
+
+ private boolean inTouchableArea(float x, float y) {
+ if (mBorderRect.isEmpty()) {
+ return true;
+ }
+
+ return Math.pow(x - mBorderRect.centerX(), 2) + Math.pow(y - mBorderRect.centerY(), 2) <= Math.pow(mBorderRadius, 2);
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
+ private class OutlineProvider extends ViewOutlineProvider {
+
+ @Override
+ public void getOutline(View view, Outline outline) {
+ if (mDisableCircularTransformation) {
+ ViewOutlineProvider.BACKGROUND.getOutline(view, outline);
+ } else {
+ Rect bounds = new Rect();
+ mBorderRect.roundOut(bounds);
+ outline.setRoundRect(bounds, bounds.width() / 2.0f);
+ }
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/sourceforge/opencamera/ui/DrawPreview.java b/app/src/main/java/net/sourceforge/opencamera/ui/DrawPreview.java
index 682ccf0957390a7e5f472fece96f175d08cf6d3e..3e49690a9f4efca4a0db9329f1caf0bbbd02fc9f 100644
--- a/app/src/main/java/net/sourceforge/opencamera/ui/DrawPreview.java
+++ b/app/src/main/java/net/sourceforge/opencamera/ui/DrawPreview.java
@@ -8,10 +8,12 @@ import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;
+import java.util.Objects;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
+import net.sourceforge.opencamera.DeviceSettings;
import net.sourceforge.opencamera.GyroSensor;
import net.sourceforge.opencamera.ImageSaver;
import net.sourceforge.opencamera.LocationSupplier;
@@ -19,6 +21,7 @@ import net.sourceforge.opencamera.MainActivity;
import net.sourceforge.opencamera.MyApplicationInterface;
import net.sourceforge.opencamera.MyDebug;
import net.sourceforge.opencamera.PreferenceKeys;
+import net.sourceforge.opencamera.Utils;
import net.sourceforge.opencamera.preview.ApplicationInterface;
import net.sourceforge.opencamera.R;
import net.sourceforge.opencamera.cameracontroller.CameraController;
@@ -42,6 +45,7 @@ import android.graphics.PorterDuffColorFilter;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Typeface;
+import android.graphics.drawable.Drawable;
import android.location.Location;
import android.net.Uri;
import android.os.BatteryManager;
@@ -55,6 +59,8 @@ import android.view.Surface;
import android.view.View;
import android.widget.RelativeLayout;
+import androidx.annotation.NonNull;
+
public class DrawPreview {
private static final String TAG = "DrawPreview";
@@ -243,7 +249,7 @@ public class DrawPreview {
private Bitmap location_off_bitmap;
private Bitmap raw_jpeg_bitmap;
private Bitmap raw_only_bitmap;
- private Bitmap auto_stabilise_bitmap;
+ private Drawable auto_stabilise_drawable;
private Bitmap dro_bitmap;
private Bitmap hdr_bitmap;
private Bitmap panorama_bitmap;
@@ -256,8 +262,8 @@ public class DrawPreview {
private Bitmap x_bokeh_bitmap;
private Bitmap x_beauty_bitmap;
private Bitmap photostamp_bitmap;
- private Bitmap flash_bitmap;
- private Bitmap face_detection_bitmap;
+ private Drawable flash_drawable;
+ private Drawable face_detection_drawable;
private Bitmap audio_disabled_bitmap;
private Bitmap high_speed_fps_bitmap;
private Bitmap slow_motion_bitmap;
@@ -344,7 +350,7 @@ public class DrawPreview {
location_off_bitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.ic_gps_off_white_48dp);
raw_jpeg_bitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.raw_icon);
raw_only_bitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.raw_only_icon);
- auto_stabilise_bitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.auto_stabilise_icon);
+ auto_stabilise_drawable = getContext().getResources().getDrawable(R.drawable.ic_preference_auto_stabilise);
dro_bitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.dro_icon);
hdr_bitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.ic_hdr_on_white_48dp);
panorama_bitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.baseline_panorama_horizontal_white_48);
@@ -356,8 +362,8 @@ public class DrawPreview {
x_bokeh_bitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.baseline_portrait_white_48);
x_beauty_bitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.baseline_face_retouching_natural_white_48);
photostamp_bitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.ic_text_format_white_48dp);
- flash_bitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.flash_on);
- face_detection_bitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.ic_face_white_48dp);
+ flash_drawable = getContext().getResources().getDrawable(R.drawable.ic_camera_flash_on);
+ face_detection_drawable = getContext().getResources().getDrawable(R.drawable.ic_face);
audio_disabled_bitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.ic_mic_off_white_48dp);
high_speed_fps_bitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.ic_fast_forward_white_48dp);
slow_motion_bitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.ic_slow_motion_video_white_48dp);
@@ -393,9 +399,8 @@ public class DrawPreview {
raw_only_bitmap.recycle();
raw_only_bitmap = null;
}
- if( auto_stabilise_bitmap != null ) {
- auto_stabilise_bitmap.recycle();
- auto_stabilise_bitmap = null;
+ if( auto_stabilise_drawable != null ) {
+ auto_stabilise_drawable = null;
}
if( dro_bitmap != null ) {
dro_bitmap.recycle();
@@ -441,13 +446,9 @@ public class DrawPreview {
photostamp_bitmap.recycle();
photostamp_bitmap = null;
}
- if( flash_bitmap != null ) {
- flash_bitmap.recycle();
- flash_bitmap = null;
- }
- if( face_detection_bitmap != null ) {
- face_detection_bitmap.recycle();
- face_detection_bitmap = null;
+
+ if( face_detection_drawable != null ) {
+ face_detection_drawable = null;
}
if( audio_disabled_bitmap != null ) {
audio_disabled_bitmap.recycle();
@@ -684,7 +685,7 @@ public class DrawPreview {
show_pitch_lines_pref = sharedPreferences.getBoolean(PreferenceKeys.ShowPitchLinesPreferenceKey, false);
show_geo_direction_lines_pref = sharedPreferences.getBoolean(PreferenceKeys.ShowGeoDirectionLinesPreferenceKey, false);
- String immersive_mode = sharedPreferences.getString(PreferenceKeys.ImmersiveModePreferenceKey, "immersive_mode_low_profile");
+ String immersive_mode = sharedPreferences.getString(PreferenceKeys.ImmersiveModePreferenceKey, "immersive_mode_off");
immersive_mode_everything_pref = immersive_mode.equals("immersive_mode_everything");
has_stamp_pref = applicationInterface.getStampPref().equals("preference_stamp_yes");
@@ -1180,7 +1181,7 @@ public class DrawPreview {
int ui_rotation = preview.getUIRotation();
// set up text etc for the multiple lines of "info" (time, free mem, etc)
- p.setTextSize(16 * scale_font + 0.5f); // convert dps to pixels
+ p.setTextSize(12.6f * scale_font + 0.5f); // convert dps to pixels
p.setTextAlign(Paint.Align.LEFT);
int location_x = top_x;
int location_y = top_y;
@@ -1311,7 +1312,7 @@ public class DrawPreview {
Color.WHITE, Color.BLACK, location_x, bottom_y,
MyApplicationInterface.Alignment.ALIGNMENT_BOTTOM, null, MyApplicationInterface.Shadow.SHADOW_OUTLINE);
}
- p.setTextSize(16 * scale_font + 0.5f); // Restore text size
+ p.setTextSize(12.6f * scale_font + 0.5f); // Restore text size
if( camera_controller != null && show_iso_pref ) {
if( iso_exposure_string == null || time_ms > last_iso_exposure_time + 500 ) {
@@ -1454,7 +1455,7 @@ public class DrawPreview {
p.setAlpha(64);
canvas.drawRect(icon_dest, p);
p.setAlpha(255);
- canvas.drawBitmap(face_detection_bitmap, null, icon_dest, p);
+ face_detection_drawable.draw(canvas);
if( device_ui_rotation == 180 ) {
location_x2 -= icon_size + flash_padding;
@@ -1471,7 +1472,7 @@ public class DrawPreview {
p.setAlpha(64);
canvas.drawRect(icon_dest, p);
p.setAlpha(255);
- canvas.drawBitmap(auto_stabilise_bitmap, null, icon_dest, p);
+ auto_stabilise_drawable.draw(canvas);
if( device_ui_rotation == 180 ) {
location_x2 -= icon_size + flash_padding;
@@ -1627,7 +1628,7 @@ public class DrawPreview {
p.setAlpha((int)(64*alpha));
canvas.drawRect(icon_dest, p);
p.setAlpha((int)(255*alpha));
- canvas.drawBitmap(flash_bitmap, null, icon_dest, p);
+ flash_drawable.draw(canvas);
p.setAlpha(255);
}
else {
@@ -2104,7 +2105,7 @@ public class DrawPreview {
// Convert the dps to pixels, based on density scale
p.setTextSize(14 * scale_font + 0.5f); // convert dps to pixels
p.setTextAlign(Paint.Align.CENTER);
- applicationInterface.drawTextWithBackground(canvas, p, getContext().getResources().getString(R.string.zoom) + ": " + zoom_ratio +"x", Color.WHITE, Color.BLACK, canvas.getWidth() / 2, text_base_y - text_y, MyApplicationInterface.Alignment.ALIGNMENT_BOTTOM, ybounds_text, MyApplicationInterface.Shadow.SHADOW_OUTLINE);
+ applicationInterface.drawTextWithBackground(canvas, p, getZoomText(zoom_ratio), Color.WHITE, Color.BLACK, canvas.getWidth() / 2, text_base_y - text_y - 100, MyApplicationInterface.Alignment.ALIGNMENT_BOTTOM, ybounds_text, MyApplicationInterface.Shadow.SHADOW_OUTLINE);
}
}
@@ -2119,7 +2120,16 @@ public class DrawPreview {
p.setTextAlign(Paint.Align.CENTER);
int pixels_offset = (int) (20 * scale_font + 0.5f); // convert dps to pixels
if( preview.hasPermissions() ) {
- if( preview.openCameraFailed() ) {
+ String cameraState = Utils.getProperty("persist.sys.hwswitch.state", null);
+ if (cameraState != null && DeviceSettings.isMurenaTwo() && preview.openCameraFailed()) {
+ boolean enabled = Objects.equals(cameraState, "1");
+ int text1 = enabled ? R.string.failed_to_open_camera_two_1_disabled : R.string.failed_to_open_camera_two_1_enabled;
+ int text2 = enabled ? R.string.failed_to_open_camera_two_2_disabled : R.string.failed_to_open_camera_two_2_enabled;
+ canvas.drawText(getContext().getResources().getString(text1), canvas.getWidth() / 2.0f, canvas.getHeight() / 2.0f, p);
+ canvas.drawText(getContext().getResources().getString(text2), canvas.getWidth() / 2.0f, canvas.getHeight() / 2.0f + pixels_offset, p);
+ }
+
+ if ( !DeviceSettings.isMurenaTwo() && preview.openCameraFailed() ) {
canvas.drawText(getContext().getResources().getString(R.string.failed_to_open_camera_1), canvas.getWidth() / 2.0f, canvas.getHeight() / 2.0f, p);
canvas.drawText(getContext().getResources().getString(R.string.failed_to_open_camera_2), canvas.getWidth() / 2.0f, canvas.getHeight() / 2.0f + pixels_offset, p);
canvas.drawText(getContext().getResources().getString(R.string.failed_to_open_camera_3), canvas.getWidth() / 2.0f, canvas.getHeight() / 2.0f + 2 * pixels_offset, p);
@@ -2136,7 +2146,7 @@ public class DrawPreview {
}
int top_x = (int) (5 * scale_dp + 0.5f); // convert dps to pixels
- int top_y = (int) (5 * scale_dp + 0.5f); // convert dps to pixels
+ int top_y = (int) (15 * scale_dp + 0.5f); // convert dps to pixels
View top_icon = main_activity.getMainUI().getTopIcon();
if( top_icon != null ) {
if( last_top_icon_shift_time == 0 || time_ms > last_top_icon_shift_time + 1000 ) {
@@ -2178,73 +2188,6 @@ public class DrawPreview {
}
}
- {
- /*int focus_seekbars_margin_left_dp = 85;
- if( want_histogram )
- focus_seekbars_margin_left_dp += DrawPreview.histogram_height_dp;*/
- // 135 needed to make room for on-screen info lines in DrawPreview.onDrawInfoLines(), including the histogram
- // but we also need to take the top_icon_shift into account, for widescreen aspect ratios and "icons along top" UI placement
- int focus_seekbars_margin_left_dp = 135;
- int new_focus_seekbars_margin_left = (int) (focus_seekbars_margin_left_dp * scale_dp + 0.5f); // convert dps to pixels
- if( top_icon_shift > 0 ) {
- //noinspection SuspiciousNameCombination
- new_focus_seekbars_margin_left += top_icon_shift;
- }
-
- if( focus_seekbars_margin_left == -1 || new_focus_seekbars_margin_left != focus_seekbars_margin_left ) {
- // we check whether focus_seekbars_margin_left has changed, in case there is a performance cost for setting layoutparams
- this.focus_seekbars_margin_left = new_focus_seekbars_margin_left;
- if( MyDebug.LOG )
- Log.d(TAG, "set focus_seekbars_margin_left to " + focus_seekbars_margin_left);
-
- // "left" and "right" here are written assuming we're in landscape system orientation
-
- View view = main_activity.findViewById(R.id.focus_seekbar);
- RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams)view.getLayoutParams();
- preview.getView().getLocationOnScreen(gui_location);
- int preview_left = gui_location[system_orientation_portrait ? 1 : 0];
- if( system_orientation == MainActivity.SystemOrientation.REVERSE_LANDSCAPE )
- preview_left += preview.getView().getWidth(); // actually want preview-right for reverse landscape
-
- view.getLocationOnScreen(gui_location);
- int seekbar_right = gui_location[system_orientation_portrait ? 1 : 0];
- if( system_orientation == MainActivity.SystemOrientation.LANDSCAPE || system_orientation == MainActivity.SystemOrientation.PORTRAIT ) {
- // n.b., we read view.getWidth() even if system_orientation is portrait, because the seekbar is rotated in portrait orientation
- seekbar_right += view.getWidth();
- }
- else {
- // and for reversed landscape, the seekbar is rotated 180 degrees, and getLocationOnScreen() returns the location after the rotation
- seekbar_right -= view.getWidth();
- }
-
- int min_seekbar_width = (int) (150 * scale_dp + 0.5f); // convert dps to pixels
- int new_seekbar_width;
- if( system_orientation == MainActivity.SystemOrientation.LANDSCAPE || system_orientation == MainActivity.SystemOrientation.PORTRAIT ) {
- new_seekbar_width = seekbar_right - (preview_left+focus_seekbars_margin_left);
- }
- else {
- // reversed landscape
- new_seekbar_width = preview_left - focus_seekbars_margin_left - seekbar_right;
- }
- new_seekbar_width = Math.max(new_seekbar_width, min_seekbar_width);
- /*if( MyDebug.LOG ) {
- Log.d(TAG, "preview_left: " + preview_left);
- Log.d(TAG, "seekbar_right: " + seekbar_right);
- Log.d(TAG, "new_seekbar_width: " + new_seekbar_width);
- }*/
- layoutParams.width = new_seekbar_width;
- view.setLayoutParams(layoutParams);
-
- view = main_activity.findViewById(R.id.focus_bracketing_target_seekbar);
- layoutParams = (RelativeLayout.LayoutParams)view.getLayoutParams();
- layoutParams.width = new_seekbar_width;
- view.setLayoutParams(layoutParams);
-
- // need to update due to changing width of focus seekbars
- main_activity.getMainUI().setFocusSeekbarsRotation();
- }
- }
-
int battery_x = top_x;
int battery_y = top_y + (int) (5 * scale_dp + 0.5f);
int battery_width = (int) (5 * scale_dp + 0.5f); // convert dps to pixels
@@ -2312,6 +2255,11 @@ public class DrawPreview {
return angle_step;
}
+ @NonNull
+ private String getZoomText(float zoom_ratio) {
+ return "· " + zoom_ratio + "X" + " ·";
+ }
+
private void drawAngleLines(Canvas canvas, int device_ui_rotation, long time_ms) {
Preview preview = main_activity.getPreview();
CameraController camera_controller = preview.getCameraController();
@@ -2613,7 +2561,7 @@ public class DrawPreview {
if( camera_controller != null && this.thumbnail_anim && last_thumbnail != null ) {
int ui_rotation = preview.getUIRotation();
long time = time_ms - this.thumbnail_anim_start_ms;
- final long duration = 500;
+ final long duration = 400;
if( time > duration ) {
if( MyDebug.LOG )
Log.d(TAG, "thumbnail_anim finished");
diff --git a/app/src/main/java/net/sourceforge/opencamera/ui/MainUI.java b/app/src/main/java/net/sourceforge/opencamera/ui/MainUI.java
index ea1ae939ac423c0b5b7b7de1fee4ae1186aee642..21cb642ee674b55bafc2bab0fa40bcc3e06c9efa 100644
--- a/app/src/main/java/net/sourceforge/opencamera/ui/MainUI.java
+++ b/app/src/main/java/net/sourceforge/opencamera/ui/MainUI.java
@@ -1,6 +1,7 @@
package net.sourceforge.opencamera.ui;
import net.sourceforge.opencamera.MyApplicationInterface;
+import net.sourceforge.opencamera.ScaleUtils;
import net.sourceforge.opencamera.cameracontroller.CameraController;
import net.sourceforge.opencamera.MainActivity;
import net.sourceforge.opencamera.MyDebug;
@@ -41,6 +42,11 @@ import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.ZoomControls;
+import androidx.annotation.IdRes;
+import androidx.annotation.NonNull;
+import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.constraintlayout.widget.ConstraintSet;
+
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
@@ -188,6 +194,8 @@ public class MainUI {
}
private UIPlacement computeUIPlacement() {
+ // Default top
+ if (true) return UIPlacement.UIPLACEMENT_TOP;
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(main_activity);
String ui_placement_string = sharedPreferences.getString(PreferenceKeys.UIPlacementPreferenceKey, "ui_top");
switch( ui_placement_string ) {
@@ -426,17 +434,6 @@ public class MainUI {
if( ui_placement == UIPlacement.UIPLACEMENT_TOP ) {
// not part of the icon panel in TOP mode
view = main_activity.findViewById(R.id.gallery);
- layoutParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
- layoutParams.addRule(align_parent_left, 0);
- layoutParams.addRule(align_parent_right, RelativeLayout.TRUE);
- layoutParams.addRule(align_parent_top, RelativeLayout.TRUE);
- layoutParams.addRule(align_parent_bottom, 0);
- layoutParams.addRule(above, 0);
- layoutParams.addRule(below, 0);
- layoutParams.addRule(left_of, 0);
- layoutParams.addRule(right_of, 0);
- setMarginsForSystemUI(layoutParams, 0, gallery_top_gap, gallery_navigation_gap, 0);
- view.setLayoutParams(layoutParams);
setViewRotation(view, ui_rotation);
}
else {
@@ -514,6 +511,7 @@ public class MainUI {
}*/
int total_button_size = count*button_size;
int margin = 0;
+ int topMargin = (int) ScaleUtils.convertDpToPx(main_activity, 8.0f);
if( total_button_size > display_height ) {
if( MyDebug.LOG )
Log.d(TAG, "need to reduce button size");
@@ -523,7 +521,7 @@ public class MainUI {
if( MyDebug.LOG )
Log.d(TAG, "need to increase margin");
if( count > 1 )
- margin = (display_height - total_button_size) / (count-1);
+ margin = (display_height - total_button_size - (2 * topMargin)) / (count - 1);
}
if( MyDebug.LOG ) {
Log.d(TAG, "button_size: " + button_size);
@@ -544,15 +542,16 @@ public class MainUI {
// is displayed (when taking a photo) if it is still shown left-most, rather than centred; also
// needed for "pause preview" trash/icons to be shown properly (test by rotating the phone to update
// the layout)
- int margin_first = this_view==first_visible_view ? 0 : margin/2;
- int margin_last = this_view==last_visible_view ? 0 : margin/2;
+ int margin_first = this_view==first_visible_view ? topMargin : margin/2;
+ int margin_last = this_view==last_visible_view ? topMargin : margin/2;
setMarginsForSystemUI(layoutParams, 0, margin_first, 0, margin_last);
layoutParams.width = button_size;
layoutParams.height = button_size;
this_view.setLayoutParams(layoutParams);
}
}
- top_icon = first_visible_view;
+
+ top_icon = setUpTopBarHolderUI(system_orientation_portrait, system_orientation_reversed_landscape, button_size);
}
}
else {
@@ -576,166 +575,40 @@ public class MainUI {
// end icon panel
+ int navigationBarSideMargin = (int) ScaleUtils.convertDpToPx(main_activity, 23.0f);
+ navigationBarSideMargin += navigation_gap;
+
+ setUpBottomBarHolderUI(system_orientation_portrait, system_orientation_reversed_landscape, navigationBarSideMargin);
+
view = main_activity.findViewById(R.id.take_photo);
- layoutParams = (RelativeLayout.LayoutParams)view.getLayoutParams();
- layoutParams.addRule(align_parent_left, 0);
- layoutParams.addRule(align_parent_right, RelativeLayout.TRUE);
- layoutParams.addRule(align_parent_top, 0);
- layoutParams.addRule(align_parent_bottom, 0);
- layoutParams.addRule(center_vertical, RelativeLayout.TRUE);
- layoutParams.addRule(center_horizontal, 0);
- setMarginsForSystemUI(layoutParams, 0, 0, navigation_gap, 0);
- view.setLayoutParams(layoutParams);
setViewRotation(view, ui_rotation);
view = main_activity.findViewById(R.id.switch_camera);
- layoutParams = (RelativeLayout.LayoutParams)view.getLayoutParams();
- layoutParams.addRule(align_parent_left, 0);
- layoutParams.addRule(align_parent_right, RelativeLayout.TRUE);
- layoutParams.addRule(align_parent_top, 0);
- layoutParams.addRule(align_parent_bottom, 0);
- layoutParams.addRule(ui_independent_above, R.id.take_photo);
- layoutParams.addRule(ui_independent_below, 0);
- layoutParams.addRule(ui_independent_left_of, 0);
- layoutParams.addRule(ui_independent_right_of, 0);
- setMarginsForSystemUI(layoutParams, 0, 0, navigation_gap, 0);
- view.setLayoutParams(layoutParams);
setViewRotation(view, ui_rotation);
- view = main_activity.findViewById(R.id.switch_multi_camera);
- layoutParams = (RelativeLayout.LayoutParams)view.getLayoutParams();
- layoutParams.addRule(ui_independent_above, 0);
- layoutParams.addRule(ui_independent_below, 0);
- layoutParams.addRule(ui_independent_left_of, R.id.switch_camera);
- layoutParams.addRule(ui_independent_right_of, 0);
- layoutParams.addRule(align_top, R.id.switch_camera);
- layoutParams.addRule(align_bottom, R.id.switch_camera);
- layoutParams.addRule(align_left, 0);
- layoutParams.addRule(align_right, 0);
- {
- int margin = (int) (5 * scale + 0.5f); // convert dps to pixels
- setMarginsForSystemUI(layoutParams, 0, 0, margin, 0);
- }
- view.setLayoutParams(layoutParams);
- setViewRotation(view, ui_rotation);
+ setupMultiCameraUI(ui_rotation, system_orientation_portrait, system_orientation_reversed_landscape);
view = main_activity.findViewById(R.id.pause_video);
- layoutParams = (RelativeLayout.LayoutParams)view.getLayoutParams();
- layoutParams.addRule(align_parent_left, 0);
- layoutParams.addRule(align_parent_right, RelativeLayout.TRUE);
- layoutParams.addRule(align_parent_top, 0);
- layoutParams.addRule(align_parent_bottom, 0);
- layoutParams.addRule(ui_independent_above, R.id.take_photo);
- layoutParams.addRule(ui_independent_below, 0);
- layoutParams.addRule(ui_independent_left_of, 0);
- layoutParams.addRule(ui_independent_right_of, 0);
- setMarginsForSystemUI(layoutParams, 0, 0, navigation_gap, 0);
- view.setLayoutParams(layoutParams);
setViewRotation(view, ui_rotation);
view = main_activity.findViewById(R.id.cancel_panorama);
- layoutParams = (RelativeLayout.LayoutParams)view.getLayoutParams();
- layoutParams.addRule(align_parent_left, 0);
- layoutParams.addRule(align_parent_right, RelativeLayout.TRUE);
- layoutParams.addRule(align_parent_top, 0);
- layoutParams.addRule(align_parent_bottom, 0);
- layoutParams.addRule(above, R.id.take_photo);
- layoutParams.addRule(below, 0);
- layoutParams.addRule(left_of, 0);
- layoutParams.addRule(right_of, 0);
- setMarginsForSystemUI(layoutParams, 0, 0, navigation_gap, 0);
- view.setLayoutParams(layoutParams);
+ setViewRotation(view, ui_rotation);
+
+ view = main_activity.findViewById(R.id.finish_panorama);
setViewRotation(view, ui_rotation);
view = main_activity.findViewById(R.id.switch_video);
- layoutParams = (RelativeLayout.LayoutParams)view.getLayoutParams();
- layoutParams.addRule(align_parent_left, 0);
- layoutParams.addRule(align_parent_right, RelativeLayout.TRUE);
- layoutParams.addRule(align_parent_top, 0);
- layoutParams.addRule(align_parent_bottom, 0);
- layoutParams.addRule(ui_independent_above, 0);
- layoutParams.addRule(ui_independent_below, R.id.take_photo);
- layoutParams.addRule(ui_independent_left_of, 0);
- layoutParams.addRule(ui_independent_right_of, 0);
- setMarginsForSystemUI(layoutParams, 0, 0, navigation_gap, 0);
- view.setLayoutParams(layoutParams);
setViewRotation(view, ui_rotation);
view = main_activity.findViewById(R.id.take_photo_when_video_recording);
- layoutParams = (RelativeLayout.LayoutParams)view.getLayoutParams();
- layoutParams.addRule(align_parent_left, 0);
- layoutParams.addRule(align_parent_right, RelativeLayout.TRUE);
- layoutParams.addRule(align_parent_top, 0);
- layoutParams.addRule(align_parent_bottom, 0);
- layoutParams.addRule(ui_independent_above, 0);
- layoutParams.addRule(ui_independent_below, R.id.take_photo);
- layoutParams.addRule(ui_independent_left_of, 0);
- layoutParams.addRule(ui_independent_right_of, 0);
- setMarginsForSystemUI(layoutParams, 0, 0, navigation_gap, 0);
- view.setLayoutParams(layoutParams);
setViewRotation(view, ui_rotation);
- view = main_activity.findViewById(R.id.zoom);
- layoutParams = (RelativeLayout.LayoutParams)view.getLayoutParams();
- layoutParams.addRule(align_parent_left, 0);
- layoutParams.addRule(align_parent_right, RelativeLayout.TRUE);
- layoutParams.addRule(align_parent_top, 0);
- layoutParams.addRule(align_parent_bottom, RelativeLayout.TRUE);
- view.setLayoutParams(layoutParams);
- setFixedRotation(main_activity.findViewById(R.id.zoom), 0, 0, navigation_gap, 0);
- view.setRotation(view.getRotation()+180.0f); // should always match the zoom_seekbar, so that zoom in and out are in the same directions
+ setUpZoomControlUI(ui_rotation, system_orientation_portrait, system_orientation_reversed_landscape);
- view = main_activity.findViewById(R.id.zoom_seekbar);
- layoutParams = (RelativeLayout.LayoutParams)view.getLayoutParams();
- // if we are showing the zoom control, the align next to that; otherwise have it aligned close to the edge of screen
- if( sharedPreferences.getBoolean(PreferenceKeys.ShowZoomControlsPreferenceKey, false) ) {
- layoutParams.addRule(align_parent_left, 0);
- layoutParams.addRule(align_parent_right, RelativeLayout.TRUE);
- layoutParams.addRule(align_parent_top, 0);
- layoutParams.addRule(align_parent_bottom, 0);
- layoutParams.addRule(above, R.id.zoom);
- layoutParams.addRule(below, 0);
- layoutParams.addRule(left_of, 0);
- layoutParams.addRule(right_of, 0);
- // margins set below in setFixedRotation()
- }
- else {
- layoutParams.addRule(align_parent_left, 0);
- layoutParams.addRule(align_parent_right, RelativeLayout.TRUE);
- layoutParams.addRule(align_parent_top, 0);
- layoutParams.addRule(align_parent_bottom, RelativeLayout.TRUE);
- // margins set below in setFixedRotation()
- // need to clear the others, in case we turn zoom controls on/off
- layoutParams.addRule(above, 0);
- layoutParams.addRule(below, 0);
- layoutParams.addRule(left_of, 0);
- layoutParams.addRule(right_of, 0);
- }
- view.setLayoutParams(layoutParams);
- int margin = (int) (20 * scale + 0.5f); // convert dps to pixels
- setFixedRotation(main_activity.findViewById(R.id.zoom_seekbar), 0, 0, margin+navigation_gap, 0);
-
- view = main_activity.findViewById(R.id.focus_seekbar);
- layoutParams = (RelativeLayout.LayoutParams)view.getLayoutParams();
- layoutParams.addRule(left_of, R.id.zoom_seekbar);
- layoutParams.addRule(right_of, 0);
- layoutParams.addRule(above, 0);
- layoutParams.addRule(below, 0);
- layoutParams.addRule(align_parent_top, 0);
- layoutParams.addRule(align_parent_bottom, RelativeLayout.TRUE);
- layoutParams.addRule(align_parent_left, 0);
- layoutParams.addRule(align_parent_right, 0);
- view.setLayoutParams(layoutParams);
-
- view = main_activity.findViewById(R.id.focus_bracketing_target_seekbar);
- layoutParams = (RelativeLayout.LayoutParams)view.getLayoutParams();
- layoutParams.addRule(left_of, R.id.zoom_seekbar);
- layoutParams.addRule(right_of, 0);
- layoutParams.addRule(above, R.id.focus_seekbar);
- layoutParams.addRule(below, 0);
- view.setLayoutParams(layoutParams);
+ view = main_activity.findViewById(R.id.zoom_seekbar_holder);
+ setViewRotation(view, ui_rotation);
- setFocusSeekbarsRotation();
+ setupFocusSeekBarUI(ui_rotation, system_orientation_portrait, system_orientation_reversed_landscape);
}
if( !popup_container_only )
@@ -842,9 +715,6 @@ public class MainUI {
lp.height = height_pixels;
view.setLayoutParams(lp);
- view = main_activity.findViewById(R.id.exposure_seekbar_zoom);
- view.setAlpha(0.5f);
-
view = main_activity.findViewById(R.id.iso_seekbar);
lp = (RelativeLayout.LayoutParams)view.getLayoutParams();
lp.width = width_pixels;
@@ -876,19 +746,19 @@ public class MainUI {
layoutParams.addRule(above, 0);
layoutParams.addRule(below, 0);
layoutParams.addRule(left_of, 0);
- layoutParams.addRule(right_of, R.id.popup);
+ layoutParams.addRule(right_of, R.id.top_bg);
layoutParams.addRule(align_parent_top, system_orientation_portrait ? 0 : RelativeLayout.TRUE);
layoutParams.addRule(align_parent_bottom, system_orientation_portrait ? 0 : RelativeLayout.TRUE);
layoutParams.addRule(align_parent_left, 0);
layoutParams.addRule(align_parent_right, 0);
}
else {
- layoutParams.addRule(align_right, R.id.popup);
+ layoutParams.addRule(align_right, R.id.top_bg);
layoutParams.addRule(align_bottom, 0);
layoutParams.addRule(align_left, 0);
layoutParams.addRule(align_top, 0);
layoutParams.addRule(above, 0);
- layoutParams.addRule(below, R.id.popup);
+ layoutParams.addRule(below, R.id.top_bg);
layoutParams.addRule(left_of, 0);
layoutParams.addRule(right_of, 0);
layoutParams.addRule(align_parent_top, 0);
@@ -939,6 +809,298 @@ public class MainUI {
}
}
+ private void setupMultiCameraUI(int ui_rotation, boolean orientationPortrait, boolean orientationReverseLandscape) {
+ View multiCamera = main_activity.findViewById(R.id.switch_multi_camera);
+ RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(multiCamera.getLayoutParams().width, multiCamera.getLayoutParams().height);
+
+ int size21dp = (int) ScaleUtils.convertDpToPx(main_activity, 21.0f);
+ int size20dp = (int) ScaleUtils.convertDpToPx(main_activity, 20.0f);
+
+ if (orientationPortrait) {
+ layoutParams.addRule(RelativeLayout.ALIGN_PARENT_END, RelativeLayout.TRUE);
+ layoutParams.addRule(RelativeLayout.ABOVE, R.id.bottom_buttons_holder);
+ layoutParams.setMargins(0, 0, size21dp, size20dp);
+ } else if (orientationReverseLandscape) {
+ layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
+ layoutParams.addRule(RelativeLayout.END_OF, R.id.bottom_buttons_holder);
+ layoutParams.setMargins(size20dp, 0, 0, size21dp);
+ } else {
+ layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
+ layoutParams.addRule(RelativeLayout.START_OF, R.id.bottom_buttons_holder);
+ layoutParams.setMargins(0, size21dp, size20dp, 0);
+ }
+
+ multiCamera.setLayoutParams(layoutParams);
+ setViewRotation(multiCamera, ui_rotation);
+ }
+
+ private void setupFocusSeekBarUI(int rotation, boolean orientationPortrait, boolean orientationReverseLandscape) {
+ View focusSeekBarHolder = main_activity.findViewById(R.id.focus_seekbar_holder);
+ RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+
+ if (orientationPortrait) {
+ layoutParams.addRule(RelativeLayout.ALIGN_PARENT_START, RelativeLayout.TRUE);
+ layoutParams.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
+ } else if (orientationReverseLandscape) {
+ layoutParams.addRule(RelativeLayout.END_OF, R.id.bottom_buttons_holder);
+ layoutParams.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
+ } else {
+ layoutParams.addRule(RelativeLayout.START_OF, R.id.bottom_buttons_holder);
+ layoutParams.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
+ }
+
+ focusSeekBarHolder.setLayoutParams(layoutParams);
+ setViewRotation(focusSeekBarHolder, rotation + 90);
+ }
+
+ private void setUpZoomControlUI(int rotation, boolean orientationPortrait, boolean orientationReverseLandscape) {
+ int margin = (int) ScaleUtils.convertDpToPx(main_activity, 60.0f);
+
+ View zoom = main_activity.findViewById(R.id.zoom);
+ RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(zoom.getLayoutParams().width, zoom.getLayoutParams().height);
+
+ if (orientationPortrait) {
+ layoutParams.addRule(RelativeLayout.BELOW, R.id.top_bg);
+ layoutParams.setMargins(0, margin, 0, 0);
+ layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
+ } else if (orientationReverseLandscape) {
+ layoutParams.addRule(RelativeLayout.START_OF, R.id.top_bg);
+ layoutParams.setMargins(0, 0, margin, 0);
+ layoutParams.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
+ } else {
+ layoutParams.addRule(RelativeLayout.END_OF, R.id.top_bg);
+ layoutParams.setMargins(margin, 0, 0, 0);
+ layoutParams.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
+ }
+
+ zoom.setLayoutParams(layoutParams);
+ setViewRotation(zoom, rotation);
+ }
+
+ private View setUpTopBarHolderUI(boolean orientationPortrait, boolean orientationReverseLandscape, int topButtonSize) {
+ int width = orientationPortrait ? ViewGroup.LayoutParams.MATCH_PARENT : topButtonSize;
+ int height = orientationPortrait ? topButtonSize : ViewGroup.LayoutParams.MATCH_PARENT;
+ int topBarAlignment = orientationPortrait ? RelativeLayout.ALIGN_PARENT_TOP : (orientationReverseLandscape ? RelativeLayout.ALIGN_PARENT_END : RelativeLayout.ALIGN_PARENT_START);
+
+ View topBar = main_activity.findViewById(R.id.top_bg);
+ RelativeLayout.LayoutParams topBarLayoutParams = new RelativeLayout.LayoutParams(width, height);
+ topBarLayoutParams.addRule(topBarAlignment, RelativeLayout.TRUE);
+ topBar.setLayoutParams(topBarLayoutParams);
+ return topBar;
+ }
+
+ private void setUpBottomBarHolderUI(boolean orientationPortrait, boolean orientationReverseLandscape, int navigationBarSideMargin) {
+ ConstraintLayout bottomBar = main_activity.findViewById(R.id.bottom_buttons_holder);
+ // set up layoutParam
+ int bottomBarWidth = orientationPortrait ? ViewGroup.LayoutParams.MATCH_PARENT : ViewGroup.LayoutParams.WRAP_CONTENT;
+ int bottomBarHeight = orientationPortrait ? ViewGroup.LayoutParams.WRAP_CONTENT : ViewGroup.LayoutParams.MATCH_PARENT;
+ int bottomBarAlignment = orientationPortrait ? RelativeLayout.ALIGN_PARENT_BOTTOM : (orientationReverseLandscape ? RelativeLayout.ALIGN_PARENT_START : RelativeLayout.ALIGN_PARENT_END);
+ RelativeLayout.LayoutParams bottomBarLayoutParams = new RelativeLayout.LayoutParams(bottomBarWidth, bottomBarHeight);
+ bottomBarLayoutParams.addRule(bottomBarAlignment, RelativeLayout.TRUE);
+ bottomBar.setLayoutParams(bottomBarLayoutParams);
+
+ // set up padding
+ int size20dp = (int) ScaleUtils.convertDpToPx(main_activity, 20.0f);
+ int size23dp = (int) ScaleUtils.convertDpToPx(main_activity, 23.0f);
+
+ int bottomBarLeftPadding = orientationPortrait ? size20dp : (orientationReverseLandscape ? navigationBarSideMargin : size23dp);
+ int bottomBarRightPadding = orientationPortrait ? size20dp : (orientationReverseLandscape ? size23dp : navigationBarSideMargin);
+ int bottomBarTopPadding = orientationPortrait ? size23dp : size20dp;
+ int bottomBarBottomPadding = orientationPortrait ? navigationBarSideMargin : size20dp;
+ bottomBar.setPadding(bottomBarLeftPadding, bottomBarTopPadding, bottomBarRightPadding, bottomBarBottomPadding);
+
+ setUpBottomItemsUI(bottomBar, orientationPortrait, orientationReverseLandscape);
+ }
+
+ private void setUpBottomItemsUI(ConstraintLayout bottomHolder, boolean orientationPortrait, boolean orientationReverseLandscape) {
+ ConstraintSet constraintSet = new ConstraintSet();
+ constraintSet.clone(bottomHolder);
+
+ clearAllDynamicBottomBarItemConstraint(constraintSet);
+
+ if (orientationPortrait) {
+ connectPortraitConstraintForBottomItems(constraintSet);
+ } else if (orientationReverseLandscape) {
+ connectReverseLandscapeConstraintForBottomItems(constraintSet);
+ } else {
+ connectLandscapeConstraintForBottomItems(constraintSet);
+ }
+
+ constraintSet.applyTo(bottomHolder);
+ }
+
+ private void clearAllDynamicBottomBarItemConstraint(@NonNull ConstraintSet constraintSet) {
+ clearAllConstraint(constraintSet, R.id.place_holder_view);
+ clearAllConstraint(constraintSet, R.id.gallery);
+ clearAllConstraint(constraintSet, R.id.switch_camera);
+ clearAllConstraint(constraintSet, R.id.pause_video);
+ clearAllConstraint(constraintSet, R.id.switch_video);
+ clearAllConstraint(constraintSet, R.id.take_photo_when_video_recording);
+ clearAllConstraint(constraintSet, R.id.cancel_panorama);
+ clearAllConstraint(constraintSet, R.id.finish_panorama);
+ }
+
+ private void clearAllConstraint(@NonNull ConstraintSet constraintSet, @IdRes int id) {
+ constraintSet.clear(id, ConstraintSet.TOP);
+ constraintSet.clear(id, ConstraintSet.BOTTOM);
+ constraintSet.clear(id, ConstraintSet.START);
+ constraintSet.clear(id, ConstraintSet.END);
+ }
+
+ private void connectConstraintParentTopBottom(@NonNull ConstraintSet constraintSet, @IdRes int id) {
+ constraintSet.connect(id, ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP);
+ constraintSet.connect(id, ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM);
+ }
+
+ private void connectConstraintParentStartEnd(@NonNull ConstraintSet constraintSet, @IdRes int id) {
+ constraintSet.connect(id, ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START);
+ constraintSet.connect(id, ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END);
+ }
+
+ private void connectPortraitConstraintForBottomItems(@NonNull ConstraintSet constraintSet) {
+ int id;
+
+ //placeHolderView
+ id = R.id.place_holder_view;
+ connectConstraintParentTopBottom(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START);
+
+ //gallery
+ id = R.id.gallery;
+ connectConstraintParentTopBottom(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END);
+
+ //switchCamera
+ id = R.id.switch_camera;
+ connectConstraintParentTopBottom(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.END, R.id.gallery, ConstraintSet.START);
+ constraintSet.connect(id, ConstraintSet.START, R.id.take_photo, ConstraintSet.END);
+
+ //pauseVideo
+ id = R.id.pause_video;
+ connectConstraintParentTopBottom(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.END, R.id.gallery, ConstraintSet.START);
+ constraintSet.connect(id, ConstraintSet.START, R.id.take_photo, ConstraintSet.END);
+
+ //switchVideo
+ id = R.id.switch_video;
+ connectConstraintParentTopBottom(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.END, R.id.take_photo, ConstraintSet.START);
+ constraintSet.connect(id, ConstraintSet.START, R.id.place_holder_view, ConstraintSet.END);
+
+ //takePhotoOnVideo
+ id = R.id.take_photo_when_video_recording;
+ connectConstraintParentTopBottom(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.END, R.id.take_photo, ConstraintSet.START);
+ constraintSet.connect(id, ConstraintSet.START, R.id.place_holder_view, ConstraintSet.END);
+
+ //cancelPanorama
+ id = R.id.cancel_panorama;
+ connectConstraintParentTopBottom(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.START, R.id.place_holder_center_view, ConstraintSet.END);
+
+ //finishPanorama
+ id = R.id.finish_panorama;
+ connectConstraintParentTopBottom(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.END, R.id.place_holder_center_view, ConstraintSet.START);
+ }
+
+ private void connectReverseLandscapeConstraintForBottomItems(@NonNull ConstraintSet constraintSet) {
+ int id;
+
+ //placeHolderView
+ id = R.id.place_holder_view;
+ connectConstraintParentStartEnd(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP);
+
+ //gallery
+ id = R.id.gallery;
+ connectConstraintParentStartEnd(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM);
+
+ //switchCamera
+ id = R.id.switch_camera;
+ connectConstraintParentStartEnd(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.BOTTOM, R.id.gallery, ConstraintSet.TOP);
+ constraintSet.connect(id, ConstraintSet.TOP, R.id.take_photo, ConstraintSet.BOTTOM);
+
+ //pauseVideo
+ id = R.id.pause_video;
+ connectConstraintParentStartEnd(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.BOTTOM, R.id.gallery, ConstraintSet.TOP);
+ constraintSet.connect(id, ConstraintSet.TOP, R.id.take_photo, ConstraintSet.BOTTOM);
+
+ //switchVideo
+ id = R.id.switch_video;
+ connectConstraintParentStartEnd(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.BOTTOM, R.id.take_photo, ConstraintSet.TOP);
+ constraintSet.connect(id, ConstraintSet.TOP, R.id.place_holder_view, ConstraintSet.BOTTOM);
+
+ //takePhotoOnVideo
+ id = R.id.take_photo_when_video_recording;
+ connectConstraintParentStartEnd(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.BOTTOM, R.id.take_photo, ConstraintSet.TOP);
+ constraintSet.connect(id, ConstraintSet.TOP, R.id.place_holder_view, ConstraintSet.BOTTOM);
+
+ //cancelPanorama
+ id = R.id.cancel_panorama;
+ connectConstraintParentStartEnd(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.TOP, R.id.place_holder_center_view, ConstraintSet.BOTTOM);
+
+ //finishPanorama
+ id = R.id.finish_panorama;
+ connectConstraintParentStartEnd(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.BOTTOM, R.id.place_holder_center_view, ConstraintSet.TOP);
+ }
+
+ private void connectLandscapeConstraintForBottomItems(@NonNull ConstraintSet constraintSet) {
+ int id;
+
+ //placeHolderView
+ id = R.id.place_holder_view;
+ connectConstraintParentStartEnd(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM);
+
+ //gallery
+ id = R.id.gallery;
+ connectConstraintParentStartEnd(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP);
+
+ //switchCamera
+ id = R.id.switch_camera;
+ connectConstraintParentStartEnd(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.TOP, R.id.gallery, ConstraintSet.BOTTOM);
+ constraintSet.connect(id, ConstraintSet.BOTTOM, R.id.take_photo, ConstraintSet.TOP);
+
+ //pauseVideo
+ id = R.id.pause_video;
+ connectConstraintParentStartEnd(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.TOP, R.id.gallery, ConstraintSet.BOTTOM);
+ constraintSet.connect(id, ConstraintSet.BOTTOM, R.id.take_photo, ConstraintSet.TOP);
+
+ //switchVideo
+ id = R.id.switch_video;
+ connectConstraintParentStartEnd(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.TOP, R.id.take_photo, ConstraintSet.BOTTOM);
+ constraintSet.connect(id, ConstraintSet.BOTTOM, R.id.place_holder_view, ConstraintSet.TOP);
+
+ //takePhotoOnVideo
+ id = R.id.take_photo_when_video_recording;
+ connectConstraintParentStartEnd(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.TOP, R.id.take_photo, ConstraintSet.BOTTOM);
+ constraintSet.connect(id, ConstraintSet.BOTTOM, R.id.place_holder_view, ConstraintSet.TOP);
+
+ //cancelPanorama
+ id = R.id.cancel_panorama;
+ connectConstraintParentStartEnd(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.BOTTOM, R.id.place_holder_center_view, ConstraintSet.TOP);
+
+ //finishPanorama
+ id = R.id.finish_panorama;
+ connectConstraintParentStartEnd(constraintSet, id);
+ constraintSet.connect(id, ConstraintSet.TOP, R.id.place_holder_center_view, ConstraintSet.BOTTOM);
+ }
+
/** Wrapper for layoutParams.setMargins, but where the margins are supplied for landscape orientation,
* and if in portrait these are automatically rotated.
*/
@@ -1076,22 +1238,24 @@ public class MainUI {
int resource;
int content_description;
int switch_video_content_description;
+ boolean panorama_recording = main_activity.getApplicationInterface().getPhotoMode()
+ == MyApplicationInterface.PhotoMode.Panorama &&
+ main_activity.getApplicationInterface().getGyroSensor().isRecording();
+ boolean isQrMode = main_activity.getPreview().isQRCode();
+ // The switch order is camera -> video -> qrcode -> camera...
if( main_activity.getPreview().isVideo() ) {
if( MyDebug.LOG )
Log.d(TAG, "set icon to video");
- resource = main_activity.getPreview().isVideoRecording() ? R.drawable.take_video_recording : R.drawable.take_video_selector;
+ resource = main_activity.getPreview().isVideoRecording() ? R.drawable.ic_camera_video_recording : R.drawable.ic_camera_video;
content_description = main_activity.getPreview().isVideoRecording() ? R.string.stop_video : R.string.start_video;
+ switch_video_content_description = R.string.switch_to_qrcode;
+ } else if (isQrMode) {
+ if (MyDebug.LOG)
+ Log.d(TAG, "set icon to qrcode");
+ resource = R.drawable.empty;
+ content_description = 0;
switch_video_content_description = R.string.switch_to_photo;
- }
- else if( main_activity.getApplicationInterface().getPhotoMode() == MyApplicationInterface.PhotoMode.Panorama &&
- main_activity.getApplicationInterface().getGyroSensor().isRecording() ) {
- if( MyDebug.LOG )
- Log.d(TAG, "set icon to recording panorama");
- resource = R.drawable.baseline_check_white_48;
- content_description = R.string.finish_panorama;
- switch_video_content_description = R.string.switch_to_video;
- }
- else {
+ } else { // Camera case
if( MyDebug.LOG )
Log.d(TAG, "set icon to photo");
resource = R.drawable.take_photo_selector;
@@ -1099,14 +1263,57 @@ public class MainUI {
switch_video_content_description = R.string.switch_to_video;
}
view.setImageResource(resource);
- view.setContentDescription( main_activity.getResources().getString(content_description) );
+ if (content_description==0) {
+ view.setContentDescription("");
+ } else {
+ view.setContentDescription(main_activity.getResources().getString(content_description));
+ }
view.setTag(resource); // for testing
view = main_activity.findViewById(R.id.switch_video);
view.setContentDescription( main_activity.getResources().getString(switch_video_content_description) );
- resource = main_activity.getPreview().isVideo() ? R.drawable.take_photo : R.drawable.take_video;
+ if (main_activity.getPreview().isVideo()) {
+ resource = R.drawable.ic_switch_qrcode;
+ } else if (isQrMode) {
+ resource = R.drawable.ic_switch_camera;
+ } else { // camera
+ resource = R.drawable.ic_switch_video;
+ }
view.setImageResource(resource);
view.setTag(resource); // for testing
+
+ // Hide/Show gallery & switch camera icons.
+ boolean showGalleryAndSwitch = isQrMode || panorama_recording;
+ main_activity.findViewById(R.id.gallery).setVisibility(
+ showGalleryAndSwitch ? View.INVISIBLE : View.VISIBLE);
+ main_activity.findViewById(R.id.switch_camera).setVisibility(
+ showGalleryAndSwitch ? View.INVISIBLE : View.VISIBLE);
+ }
+ }
+ /**
+ * Show/hide photoShutter, panorama cancel & finish buttons on photoMode.
+ * If user save not to show photoShutter button, don't show photoShutter & panorama finish buttons.
+ * If user wants to view the shutter button, update the shutterButton's icon to the appropriate one.
+ */
+ public void handlePanoromaModeButtonsVisibility() {
+ boolean isPanoramaRunning = (main_activity.getApplicationInterface().getPhotoMode() == MyApplicationInterface.PhotoMode.Panorama &&
+ main_activity.getApplicationInterface().getGyroSensor().isRecording());
+
+ View view = main_activity.findViewById(R.id.cancel_panorama);
+ view.setVisibility(isPanoramaRunning ? View.VISIBLE : View.GONE);
+
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(main_activity);
+ if (!sharedPreferences.getBoolean(PreferenceKeys.ShowTakePhotoPreferenceKey, true)) {
+ return;
+ }
+
+ view = main_activity.findViewById(R.id.finish_panorama);
+ view.setVisibility(isPanoramaRunning ? View.VISIBLE : View.GONE);
+
+ view = main_activity.findViewById(R.id.take_photo);
+ view.setVisibility(isPanoramaRunning ? View.INVISIBLE : View.VISIBLE);
+ if (!isPanoramaRunning) {
+ setTakePhotoIcon();
}
}
@@ -1148,11 +1355,11 @@ public class MainUI {
int content_description;
if( main_activity.getPreview().isVideoRecordingPaused() ) {
content_description = R.string.resume_video;
- pauseVideoButton.setImageResource(R.drawable.ic_play_circle_outline_white_48dp);
+ pauseVideoButton.setImageResource(R.drawable.ic_play);
}
else {
content_description = R.string.pause_video;
- pauseVideoButton.setImageResource(R.drawable.ic_pause_circle_outline_white_48dp);
+ pauseVideoButton.setImageResource(R.drawable.ic_pause);
}
if( MyDebug.LOG )
Log.d(TAG, "content_description: " + main_activity.getResources().getString(content_description));
@@ -1346,6 +1553,7 @@ public class MainUI {
View settingsButton = main_activity.findViewById(R.id.settings);
View zoomControls = main_activity.findViewById(R.id.zoom);
View zoomSeekBar = main_activity.findViewById(R.id.zoom_seekbar);
+ View zoomSeekbarIcon = main_activity.findViewById(R.id.zoom_seekbar_icon);
View focusSeekBar = main_activity.findViewById(R.id.focus_seekbar);
View focusBracketingTargetSeekBar = main_activity.findViewById(R.id.focus_bracketing_target_seekbar);
if( main_activity.getPreview().getCameraControllerManager().getNumberOfCameras() > 1 )
@@ -1386,14 +1594,15 @@ public class MainUI {
if( main_activity.getPreview().supportsZoom() && sharedPreferences.getBoolean(PreferenceKeys.ShowZoomControlsPreferenceKey, false) ) {
zoomControls.setVisibility(visibility);
}
- if( main_activity.getPreview().supportsZoom() && sharedPreferences.getBoolean(PreferenceKeys.ShowZoomSliderControlsPreferenceKey, true) ) {
+ if( main_activity.getPreview().supportsZoom() && sharedPreferences.getBoolean(PreferenceKeys.ShowZoomSliderControlsPreferenceKey, false) ) {
zoomSeekBar.setVisibility(visibility);
+ zoomSeekbarIcon.setVisibility(visibility);
}
if( main_activity.showManualFocusSeekbar(false) )
focusSeekBar.setVisibility(visibility);
if( main_activity.showManualFocusSeekbar(true) )
focusBracketingTargetSeekBar.setVisibility(visibility);
- String pref_immersive_mode = sharedPreferences.getString(PreferenceKeys.ImmersiveModePreferenceKey, "immersive_mode_low_profile");
+ String pref_immersive_mode = sharedPreferences.getString(PreferenceKeys.ImmersiveModePreferenceKey, "immersive_mode_off");
if( pref_immersive_mode.equals("immersive_mode_everything") ) {
if( sharedPreferences.getBoolean(PreferenceKeys.ShowTakePhotoPreferenceKey, true) ) {
View takePhotoButton = main_activity.findViewById(R.id.take_photo);
@@ -1410,6 +1619,12 @@ public class MainUI {
if( main_activity.getApplicationInterface().getGyroSensor().isRecording() ) {
View cancelPanoramaButton = main_activity.findViewById(R.id.cancel_panorama);
cancelPanoramaButton.setVisibility(visibility);
+
+ if (sharedPreferences.getBoolean(PreferenceKeys.ShowTakePhotoPreferenceKey, true)) {
+ View finishPanoramaButton = main_activity.findViewById(R.id.finish_panorama);
+ finishPanoramaButton.setVisibility(visibility);
+ }
+
}
}
if( !immersive_mode ) {
@@ -1524,14 +1739,15 @@ public class MainUI {
public void updateExposureLockIcon() {
ImageButton view = main_activity.findViewById(R.id.exposure_lock);
boolean enabled = main_activity.getPreview().isExposureLocked();
- view.setImageResource(enabled ? R.drawable.exposure_locked : R.drawable.exposure_unlocked);
+ view.setImageResource(enabled ? R.drawable.ic_camera_exposure_locked : R.drawable.ic_camera_exposure_unlocked);
view.setContentDescription( main_activity.getResources().getString(enabled ? R.string.exposure_unlock : R.string.exposure_lock) );
}
public void updateWhiteBalanceLockIcon() {
ImageButton view = main_activity.findViewById(R.id.white_balance_lock);
boolean enabled = main_activity.getPreview().isWhiteBalanceLocked();
- view.setImageResource(enabled ? R.drawable.white_balance_locked : R.drawable.white_balance_unlocked);
+ view.setImageResource(R.drawable.ic_white_balance_unlocked);
+ view.setImageTintList(ColorStateList.valueOf(main_activity.getResources().getColor(enabled ? R.color.color_default_accent : R.color.white)));
view.setContentDescription( main_activity.getResources().getString(enabled ? R.string.white_balance_unlock : R.string.white_balance_lock) );
}
@@ -1544,7 +1760,7 @@ public class MainUI {
view.setImageResource(R.drawable.raw_only_icon);
}
else {
- view.setImageResource(R.drawable.raw_icon);
+ view.setImageResource(R.drawable.ic_raw);
}
}
else {
@@ -1555,34 +1771,39 @@ public class MainUI {
public void updateStoreLocationIcon() {
ImageButton view = main_activity.findViewById(R.id.store_location);
boolean enabled = main_activity.getApplicationInterface().getGeotaggingPref();
- view.setImageResource(enabled ? R.drawable.ic_gps_fixed_red_48dp : R.drawable.ic_gps_fixed_white_48dp);
+ view.setImageResource(R.drawable.ic_gps_fixed_white_48dp);
+ view.setImageTintList(ColorStateList.valueOf(main_activity.getResources().getColor(enabled ? R.color.color_default_accent : R.color.white)));
view.setContentDescription( main_activity.getResources().getString(enabled ? R.string.preference_location_disable : R.string.preference_location_enable) );
}
public void updateTextStampIcon() {
ImageButton view = main_activity.findViewById(R.id.text_stamp);
boolean enabled = !main_activity.getApplicationInterface().getTextStampPref().isEmpty();
- view.setImageResource(enabled ? R.drawable.baseline_text_fields_red_48 : R.drawable.baseline_text_fields_white_48);
+ view.setImageResource(R.drawable.ic_text_stamp);
+ view.setImageTintList(ColorStateList.valueOf(main_activity.getResources().getColor(enabled ? R.color.color_default_accent : R.color.white)));
}
public void updateStampIcon() {
ImageButton view = main_activity.findViewById(R.id.stamp);
boolean enabled = main_activity.getApplicationInterface().getStampPref().equals("preference_stamp_yes");
- view.setImageResource(enabled ? R.drawable.ic_text_format_red_48dp : R.drawable.ic_text_format_white_48dp);
+ view.setImageResource(R.drawable.ic_preference_text_format);
+ view.setImageTintList(ColorStateList.valueOf(main_activity.getResources().getColor(enabled ? R.color.color_default_accent : R.color.white)));
view.setContentDescription( main_activity.getResources().getString(enabled ? R.string.stamp_disable : R.string.stamp_enable) );
}
public void updateFocusPeakingIcon() {
ImageButton view = main_activity.findViewById(R.id.focus_peaking);
boolean enabled = main_activity.getApplicationInterface().getFocusPeakingPref();
- view.setImageResource(enabled ? R.drawable.key_visualizer_red : R.drawable.key_visualizer);
+ view.setImageResource(R.drawable.ic_preference_focus_peaking);
+ view.setImageTintList(ColorStateList.valueOf(main_activity.getResources().getColor(enabled ? R.color.color_default_accent : R.color.white)));
view.setContentDescription( main_activity.getResources().getString(enabled ? R.string.focus_peaking_disable : R.string.focus_peaking_enable) );
}
public void updateAutoLevelIcon() {
ImageButton view = main_activity.findViewById(R.id.auto_level);
boolean enabled = main_activity.getApplicationInterface().getAutoStabilisePref();
- view.setImageResource(enabled ? R.drawable.auto_stabilise_icon_red : R.drawable.auto_stabilise_icon);
+ view.setImageResource(R.drawable.ic_preference_auto_stabilise);
+ view.setImageTintList(ColorStateList.valueOf(main_activity.getResources().getColor(enabled ? R.color.color_default_accent : R.color.white)));
view.setContentDescription( main_activity.getResources().getString(enabled ? R.string.auto_level_disable : R.string.auto_level_enable) );
}
@@ -1594,40 +1815,41 @@ public class MainUI {
ImageButton view = main_activity.findViewById(R.id.cycle_flash);
switch( flash_value ) {
case "flash_off":
- view.setImageResource(R.drawable.flash_off);
+ view.setImageResource(R.drawable.ic_camera_flash_off);
break;
case "flash_auto":
case "flash_frontscreen_auto":
- view.setImageResource(R.drawable.flash_auto);
+ view.setImageResource(R.drawable.ic_camera_flash_auto);
break;
case "flash_on":
case "flash_frontscreen_on":
- view.setImageResource(R.drawable.flash_on);
+ view.setImageResource(R.drawable.ic_camera_flash_on);
break;
case "flash_torch":
case "flash_frontscreen_torch":
- view.setImageResource(R.drawable.baseline_highlight_white_48);
+ view.setImageResource(R.drawable.ic_camera_highlight);
break;
case "flash_red_eye":
- view.setImageResource(R.drawable.baseline_remove_red_eye_white_48);
+ view.setImageResource(R.drawable.ic_camera_remove_red_eye);
break;
default:
// just in case??
Log.e(TAG, "unknown flash value " + flash_value);
- view.setImageResource(R.drawable.flash_off);
+ view.setImageResource(R.drawable.ic_camera_flash_off);
break;
}
}
else {
ImageButton view = main_activity.findViewById(R.id.cycle_flash);
- view.setImageResource(R.drawable.flash_off);
+ view.setImageResource(R.drawable.ic_camera_flash_off);
}
}
public void updateFaceDetectionIcon() {
ImageButton view = main_activity.findViewById(R.id.face_detection);
boolean enabled = main_activity.getApplicationInterface().getFaceDetectionPref();
- view.setImageResource(enabled ? R.drawable.ic_face_red_48dp : R.drawable.ic_face_white_48dp);
+ view.setImageResource(R.drawable.ic_face);
+ view.setImageTintList(ColorStateList.valueOf(main_activity.getResources().getColor(enabled ? R.color.color_default_accent : R.color.white)));
view.setContentDescription( main_activity.getResources().getString(enabled ? R.string.face_detection_disable : R.string.face_detection_enable) );
}
@@ -1648,13 +1870,15 @@ public class MainUI {
public void audioControlStarted() {
ImageButton view = main_activity.findViewById(R.id.audio_control);
- view.setImageResource(R.drawable.ic_mic_red_48dp);
+ view.setImageResource(R.drawable.ic_mic);
+ view.setImageTintList(ColorStateList.valueOf(main_activity.getResources().getColor(R.color.color_default_accent)));
view.setContentDescription( main_activity.getResources().getString(R.string.audio_control_stop) );
}
public void audioControlStopped() {
ImageButton view = main_activity.findViewById(R.id.audio_control);
- view.setImageResource(R.drawable.ic_mic_white_48dp);
+ view.setImageResource(R.drawable.ic_mic);
+ view.setImageTintList(ColorStateList.valueOf(main_activity.getResources().getColor(R.color.white)));
view.setContentDescription( main_activity.getResources().getString(R.string.audio_control_start) );
}
@@ -2064,7 +2288,8 @@ public class MainUI {
final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(main_activity);
final Preview preview = main_activity.getPreview();
ImageButton view = main_activity.findViewById(R.id.exposure);
- view.setImageResource(R.drawable.ic_exposure_red_48dp);
+ view.setImageResource(R.drawable.ic_camera_exposure);
+ view.setImageTintList(ColorStateList.valueOf(main_activity.getResources().getColor(R.color.color_default_accent)));
View sliders_container = main_activity.findViewById(R.id.sliders_container);
sliders_container.setVisibility(View.VISIBLE);
ViewGroup iso_buttons_container = main_activity.findViewById(R.id.iso_buttons);
@@ -2233,8 +2458,6 @@ public class MainUI {
if( main_activity.getPreview().supportsExposures() ) {
exposure_seek_bar.setVisibility(View.VISIBLE);
- ZoomControls seek_bar_zoom = main_activity.findViewById(R.id.exposure_seekbar_zoom);
- seek_bar_zoom.setVisibility(View.VISIBLE);
}
else {
exposure_seek_bar.setVisibility(View.GONE);
@@ -2325,7 +2548,7 @@ public class MainUI {
SeekBar zoomSeekBar = main_activity.findViewById(R.id.zoom_seekbar);
if( MyDebug.LOG )
Log.d(TAG, "progress was: " + zoomSeekBar.getProgress());
- zoomSeekBar.setProgress(main_activity.getPreview().getMaxZoom()-new_zoom);
+ zoomSeekBar.setProgress(new_zoom);
if( MyDebug.LOG )
Log.d(TAG, "progress is now: " + zoomSeekBar.getProgress());
}
@@ -2354,8 +2577,8 @@ public class MainUI {
*/
public void closeExposureUI() {
ImageButton image_button = main_activity.findViewById(R.id.exposure);
- image_button.setImageResource(R.drawable.ic_exposure_white_48dp);
-
+ image_button.setImageResource(R.drawable.ic_camera_exposure);
+ image_button.setImageTintList(ColorStateList.valueOf(Color.WHITE));
clearRemoteControlForExposureUI(); // must be called before we actually close the exposure panel
View view = main_activity.findViewById(R.id.sliders_container);
view.setVisibility(View.GONE);
@@ -2377,25 +2600,25 @@ public class MainUI {
if( MyDebug.LOG )
Log.d(TAG, "flash_value: " + flash_value);
if( main_activity.getMainUI().showCycleFlashIcon() ) {
- popup.setImageResource(R.drawable.popup);
+ popup.setImageResource(R.drawable.ic_more);
}
else if( flash_value != null && flash_value.equals("flash_off") ) {
- popup.setImageResource(R.drawable.popup_flash_off);
+ popup.setImageResource(R.drawable.popup_camera_flash_off);
}
else if( flash_value != null && ( flash_value.equals("flash_torch") || flash_value.equals("flash_frontscreen_torch") ) ) {
- popup.setImageResource(R.drawable.popup_flash_torch);
+ popup.setImageResource(R.drawable.popup_camera_flash_torch);
}
else if( flash_value != null && ( flash_value.equals("flash_auto") || flash_value.equals("flash_frontscreen_auto") ) ) {
- popup.setImageResource(R.drawable.popup_flash_auto);
+ popup.setImageResource(R.drawable.popup_camera_flash_auto);
}
else if( flash_value != null && ( flash_value.equals("flash_on") || flash_value.equals("flash_frontscreen_on") ) ) {
- popup.setImageResource(R.drawable.popup_flash_on);
+ popup.setImageResource(R.drawable.popup_camera_flash_on);
}
else if( flash_value != null && flash_value.equals("flash_red_eye") ) {
- popup.setImageResource(R.drawable.popup_flash_red_eye);
+ popup.setImageResource(R.drawable.popup_camera_flash_red_eye);
}
else {
- popup.setImageResource(R.drawable.popup);
+ popup.setImageResource(R.drawable.ic_more);
}
}
diff --git a/app/src/main/java/net/sourceforge/opencamera/ui/PopupView.java b/app/src/main/java/net/sourceforge/opencamera/ui/PopupView.java
index 6aa0ca0c50951dd6aa616383db66dc66af4015b9..0a70381a8e9b5fdec08fb44431b49d423a4f9db7 100644
--- a/app/src/main/java/net/sourceforge/opencamera/ui/PopupView.java
+++ b/app/src/main/java/net/sourceforge/opencamera/ui/PopupView.java
@@ -44,6 +44,7 @@ import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.ImageView.ScaleType;
+import androidx.appcompat.widget.AppCompatImageButton;
import androidx.appcompat.widget.SwitchCompat;
/** This defines the UI for the "popup" button, that provides quick access to a
@@ -356,7 +357,7 @@ public class PopupView extends LinearLayout {
LayoutParams.MATCH_PARENT
);
final int left_padding = (int) (10 * scale + 0.5f); // convert dps to pixels
- params.setMargins(left_padding, 0, 0, 0);
+ params.setMargins(left_padding, 20, 0, 40);
checkBox.setLayoutParams(params);
}
@@ -1090,6 +1091,8 @@ public class PopupView extends LinearLayout {
if( MyDebug.LOG )
Log.d(TAG, "Overall PopupView time: " + (System.nanoTime() - debug_time));
+
+ setBackgroundColor(getResources().getColor(R.color.color_popup_bg));
}
int getTotalWidth() {
@@ -1322,7 +1325,7 @@ public class PopupView extends LinearLayout {
actual_max_per_row = Math.min(actual_max_per_row, max_buttons_per_row);
int button_width_dp = total_width_dp/actual_max_per_row;
boolean use_scrollview = false;
- final int min_button_width_dp = 48; // needs to be at least 48dp to avoid Google Play pre-launch accessibility report warnings
+ final int min_button_width_dp = 24; // needs to be at least 48dp to avoid Google Play pre-launch accessibility report warnings
if( button_width_dp < min_button_width_dp && max_buttons_per_row == 0 ) {
button_width_dp = min_button_width_dp;
use_scrollview = true;
@@ -1348,6 +1351,13 @@ public class PopupView extends LinearLayout {
if( MyDebug.LOG )
Log.d(TAG, "addButtonOptionsToPopup time 2.05: " + (System.nanoTime() - debug_time));
+ int padding_dp = 0;
+ if (button_width_dp > min_button_width_dp) {
+ padding_dp = button_width_dp - min_button_width_dp;
+ padding_dp /= 2;
+ }
+ final int imageButtonPadding = (int) (padding_dp * scale + 0.5f);
+
for(int button_indx=0;button_indx");
- next_button.setTextSize(TypedValue.COMPLEX_UNIT_SP, arrow_text_size_dip);
- next_button.setTypeface(null, Typeface.BOLD);
next_button.setPadding(padding, padding, padding, padding);
vg_params = next_button.getLayoutParams();
vg_params.width = arrow_button_w;
diff --git a/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png b/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000000000000000000000000000000000000..04b8847f09d818ed8c1e4165c9b4c7413c9146cb
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png b/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000000000000000000000000000000000000..45d0869b8e392a73c1703762043959f192d39604
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png b/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000000000000000000000000000000000000..278280e5cd462e7bc3d94a2926becb6f6baf2e2d
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000000000000000000000000000000000000..d5f70dc48b5b0280da0a16eba5869a50f4dd2796
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000000000000000000000000000000000000..078194289c564d2e804a790efea30975c61c986c
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/drawable/bg_rounded_corner.xml b/app/src/main/res/drawable/bg_rounded_corner.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a89f1dc376fff39a0ece7bfcf8e35f2426e04288
--- /dev/null
+++ b/app/src/main/res/drawable/bg_rounded_corner.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_zoom_control.xml b/app/src/main/res/drawable/bg_zoom_control.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b183ccab147ea3b55272e9db678b4bb3f7ab97b5
--- /dev/null
+++ b/app/src/main/res/drawable/bg_zoom_control.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/empty.xml b/app/src/main/res/drawable/empty.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c886b6ada8d7c4b15850d3df87fcfedd5aa2f271
--- /dev/null
+++ b/app/src/main/res/drawable/empty.xml
@@ -0,0 +1,8 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_album.xml b/app/src/main/res/drawable/ic_album.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0d405e1b1b84cd0f2e29a730306c9c2ffea5669e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_album.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_arrow_down.xml b/app/src/main/res/drawable/ic_arrow_down.xml
new file mode 100644
index 0000000000000000000000000000000000000000..96e51169ce283dcf4bf5c1b3345cc562458350e2
--- /dev/null
+++ b/app/src/main/res/drawable/ic_arrow_down.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_arrow_left.xml b/app/src/main/res/drawable/ic_arrow_left.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b6a971563d201f7bb4cba4d507fbd3e7ee47542c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_arrow_left.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_arrow_right.xml b/app/src/main/res/drawable/ic_arrow_right.xml
new file mode 100644
index 0000000000000000000000000000000000000000..206dd4fdedab2fce1bc90d13de43d63becd1ddb2
--- /dev/null
+++ b/app/src/main/res/drawable/ic_arrow_right.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_bluetooth.xml b/app/src/main/res/drawable/ic_bluetooth.xml
new file mode 100644
index 0000000000000000000000000000000000000000..85527b80d251929bf460fd604c5b6be1c9e7b73f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bluetooth.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_book.xml b/app/src/main/res/drawable/ic_book.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1c6d45296cdc1d2197e7ac888b4de1437c10b84d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_book.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_calendar_add_on.xml b/app/src/main/res/drawable/ic_calendar_add_on.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d4cfef3e2749a069dfd986c897fe7d2bc4a6d4e6
--- /dev/null
+++ b/app/src/main/res/drawable/ic_calendar_add_on.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_camera_exposure.xml b/app/src/main/res/drawable/ic_camera_exposure.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a8c73ded02ee55c33e4c51ab18cdaedb512656c0
--- /dev/null
+++ b/app/src/main/res/drawable/ic_camera_exposure.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_camera_exposure_locked.xml b/app/src/main/res/drawable/ic_camera_exposure_locked.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7df52645732c78ad04bed0652f108789a6e56d3b
--- /dev/null
+++ b/app/src/main/res/drawable/ic_camera_exposure_locked.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_camera_exposure_unlocked.xml b/app/src/main/res/drawable/ic_camera_exposure_unlocked.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1bb92e9b19b36d3114e15e6279f055f29a88099f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_camera_exposure_unlocked.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_camera_flash_auto.xml b/app/src/main/res/drawable/ic_camera_flash_auto.xml
new file mode 100644
index 0000000000000000000000000000000000000000..05695cc5f486214746619e7d131c56da0bfe696e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_camera_flash_auto.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_camera_flash_off.xml b/app/src/main/res/drawable/ic_camera_flash_off.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4f9de8fe8753d5941789b82d7758b5c44c5afef0
--- /dev/null
+++ b/app/src/main/res/drawable/ic_camera_flash_off.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_camera_flash_on.xml b/app/src/main/res/drawable/ic_camera_flash_on.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f730d34875b70e16579f2fe8fb3373b00c392798
--- /dev/null
+++ b/app/src/main/res/drawable/ic_camera_flash_on.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_camera_highlight.xml b/app/src/main/res/drawable/ic_camera_highlight.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9a40bbed8777575f29e0000c426a0121e9e7d115
--- /dev/null
+++ b/app/src/main/res/drawable/ic_camera_highlight.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_camera_remove_red_eye.xml b/app/src/main/res/drawable/ic_camera_remove_red_eye.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b2f4b848b78bda38828783f08c4cac9796717d94
--- /dev/null
+++ b/app/src/main/res/drawable/ic_camera_remove_red_eye.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_camera_shutter.xml b/app/src/main/res/drawable/ic_camera_shutter.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9abbe1d59207dd0ca00edce1879569c00a95035c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_camera_shutter.xml
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_camera_toggle.xml b/app/src/main/res/drawable/ic_camera_toggle.xml
new file mode 100644
index 0000000000000000000000000000000000000000..56a26f6f078204ab9619ce16727543d209d6ed19
--- /dev/null
+++ b/app/src/main/res/drawable/ic_camera_toggle.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_camera_video.xml b/app/src/main/res/drawable/ic_camera_video.xml
new file mode 100644
index 0000000000000000000000000000000000000000..25ba545e7c62510864f7d6c4215d29f3f2eeff30
--- /dev/null
+++ b/app/src/main/res/drawable/ic_camera_video.xml
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_camera_video_recording.xml b/app/src/main/res/drawable/ic_camera_video_recording.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6742eb6208eee0c28942dce071c03bbbe7a9f446
--- /dev/null
+++ b/app/src/main/res/drawable/ic_camera_video_recording.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_cancel.xml b/app/src/main/res/drawable/ic_cancel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9421788a2cb864fc0d8c3df11067bc4f0fd71041
--- /dev/null
+++ b/app/src/main/res/drawable/ic_cancel.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_colorize.xml b/app/src/main/res/drawable/ic_colorize.xml
new file mode 100644
index 0000000000000000000000000000000000000000..62843bbfa9331638928a47ac9a607a95854455e9
--- /dev/null
+++ b/app/src/main/res/drawable/ic_colorize.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_contact_phone.xml b/app/src/main/res/drawable/ic_contact_phone.xml
new file mode 100644
index 0000000000000000000000000000000000000000..19d5ef77f62666e5c58354ff2ca5a31216bc2afd
--- /dev/null
+++ b/app/src/main/res/drawable/ic_contact_phone.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_content_copy.xml b/app/src/main/res/drawable/ic_content_copy.xml
new file mode 100644
index 0000000000000000000000000000000000000000..66112fee750cdac9134d5ef3a642f50f1ec9c4f4
--- /dev/null
+++ b/app/src/main/res/drawable/ic_content_copy.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_delete.xml b/app/src/main/res/drawable/ic_delete.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e2425de88f2194f521e327bb7db2341bbbf79e16
--- /dev/null
+++ b/app/src/main/res/drawable/ic_delete.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_directions_car.xml b/app/src/main/res/drawable/ic_directions_car.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b39f5334369ba2f1f1e5f6b87fad8fdbeb2e33c8
--- /dev/null
+++ b/app/src/main/res/drawable/ic_directions_car.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_done.xml b/app/src/main/res/drawable/ic_done.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3b41c7d3bcebf92c9d3fcc6d2c8423a629ac39d9
--- /dev/null
+++ b/app/src/main/res/drawable/ic_done.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_drag_handle.xml b/app/src/main/res/drawable/ic_drag_handle.xml
new file mode 100644
index 0000000000000000000000000000000000000000..602c9d3bcaa6863984307da9cc89a308342c8999
--- /dev/null
+++ b/app/src/main/res/drawable/ic_drag_handle.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_email.xml b/app/src/main/res/drawable/ic_email.xml
new file mode 100644
index 0000000000000000000000000000000000000000..63a9bd89a2121f3451f91fd0f4f269764cb195fd
--- /dev/null
+++ b/app/src/main/res/drawable/ic_email.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_face.xml b/app/src/main/res/drawable/ic_face.xml
new file mode 100644
index 0000000000000000000000000000000000000000..237304b838b088d9d9af7f941250b4f1bc86cef5
--- /dev/null
+++ b/app/src/main/res/drawable/ic_face.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_focus_mode_auto.xml b/app/src/main/res/drawable/ic_focus_mode_auto.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d1e5e09b37dd35193bc208c3b557c827d77a7bd5
--- /dev/null
+++ b/app/src/main/res/drawable/ic_focus_mode_auto.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_focus_mode_infinity.xml b/app/src/main/res/drawable/ic_focus_mode_infinity.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2aa6de86366383f4386dc850bfc5168810edc38e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_focus_mode_infinity.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_focus_mode_locked.xml b/app/src/main/res/drawable/ic_focus_mode_locked.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2de1215b8740dfc9ecdb0f3513d7ed741798af93
--- /dev/null
+++ b/app/src/main/res/drawable/ic_focus_mode_locked.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_focus_mode_macro.xml b/app/src/main/res/drawable/ic_focus_mode_macro.xml
new file mode 100644
index 0000000000000000000000000000000000000000..83d8320cbef76bd251066ed1a70cc54dfc29526b
--- /dev/null
+++ b/app/src/main/res/drawable/ic_focus_mode_macro.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_iso.xml b/app/src/main/res/drawable/ic_iso.xml
new file mode 100644
index 0000000000000000000000000000000000000000..91a35703861132ee3ed399b184e42184ecf9ded9
--- /dev/null
+++ b/app/src/main/res/drawable/ic_iso.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_launcher_background.png b/app/src/main/res/drawable/ic_launcher_background.png
new file mode 100644
index 0000000000000000000000000000000000000000..1f231ab42df764ba6bdf054d9e9b3145d7fe6359
Binary files /dev/null and b/app/src/main/res/drawable/ic_launcher_background.png differ
diff --git a/app/src/main/res/drawable/ic_lens_background.xml b/app/src/main/res/drawable/ic_lens_background.xml
new file mode 100644
index 0000000000000000000000000000000000000000..27e3ec4a47c29cbdb32e9022e15efe6a26cead23
--- /dev/null
+++ b/app/src/main/res/drawable/ic_lens_background.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_location_on.xml b/app/src/main/res/drawable/ic_location_on.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f1db4bdbf86a4f80b8d9c76b59965aa0b36b1543
--- /dev/null
+++ b/app/src/main/res/drawable/ic_location_on.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_mic.xml b/app/src/main/res/drawable/ic_mic.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4f1fe082eeba7e0ebba2eddb09f43fd99bfda901
--- /dev/null
+++ b/app/src/main/res/drawable/ic_mic.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_more.xml b/app/src/main/res/drawable/ic_more.xml
new file mode 100644
index 0000000000000000000000000000000000000000..97dc40fe7c142d7b61d81b89096617604470700f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_more.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_network_wifi.xml b/app/src/main/res/drawable/ic_network_wifi.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6db18e1a059ed70e5b8294346463e36171b8d077
--- /dev/null
+++ b/app/src/main/res/drawable/ic_network_wifi.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_passkey.xml b/app/src/main/res/drawable/ic_passkey.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b3c3dbb54104f7b745562ce97c93564f3a5b81df
--- /dev/null
+++ b/app/src/main/res/drawable/ic_passkey.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_pause.xml b/app/src/main/res/drawable/ic_pause.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7e719d8e08c0b7c8b14f259bc3c4a2059961cce0
--- /dev/null
+++ b/app/src/main/res/drawable/ic_pause.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_phone.xml b/app/src/main/res/drawable/ic_phone.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ae7ecad9c7d03eb84259f7dc7a712df2d65809d6
--- /dev/null
+++ b/app/src/main/res/drawable/ic_phone.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_play.xml b/app/src/main/res/drawable/ic_play.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c1997c45034dfd9cfceae72c73c2266e1036e87f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_play.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_auto_stabilise.xml b/app/src/main/res/drawable/ic_preference_auto_stabilise.xml
new file mode 100644
index 0000000000000000000000000000000000000000..71b5fe40d57e46b3b84f2b123fb6c28cc32e2026
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_auto_stabilise.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_camera_flash_on.xml b/app/src/main/res/drawable/ic_preference_camera_flash_on.xml
new file mode 100644
index 0000000000000000000000000000000000000000..58b60758f71ba15d4e7fcf2111fc5509c2f03cbc
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_camera_flash_on.xml
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_camera_preview.xml b/app/src/main/res/drawable/ic_preference_camera_preview.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dff67e47f7fc2f4f20e80ba8366562c18ec1d30d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_camera_preview.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_cog.xml b/app/src/main/res/drawable/ic_preference_cog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..394f1a119ab36174dcd2a6c540b26e1bc20d844e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_cog.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_exposure_unlocked.xml b/app/src/main/res/drawable/ic_preference_exposure_unlocked.xml
new file mode 100644
index 0000000000000000000000000000000000000000..847fac1ee7bf70f2601b26d1a288cd60014e0f08
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_exposure_unlocked.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_face.xml b/app/src/main/res/drawable/ic_preference_face.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fa07ae306fb9867afb3a286f195546edbdbd03d1
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_face.xml
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_focus_peaking.xml b/app/src/main/res/drawable/ic_preference_focus_peaking.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ac106bbfc736612386e8a05a0b2710952e7b5db9
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_focus_peaking.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_folder_open.xml b/app/src/main/res/drawable/ic_preference_folder_open.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7b88044b2926a014c889f7a63d38f9991bc2124e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_folder_open.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_help.xml b/app/src/main/res/drawable/ic_preference_help.xml
new file mode 100644
index 0000000000000000000000000000000000000000..290197c0549131a66e6f81aa28caebf9dd0b3267
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_help.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_info.xml b/app/src/main/res/drawable/ic_preference_info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a9e537021a910ab66bb43fe7f7e9fa320f476702
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_info.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_location.xml b/app/src/main/res/drawable/ic_preference_location.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a3e877e760086ed524c80fa9c50b1ce4144d2f9e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_location.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_mic.xml b/app/src/main/res/drawable/ic_preference_mic.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c1046645ecf825f03bf37a674881439789ea582b
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_mic.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_more_horizontal.xml b/app/src/main/res/drawable/ic_preference_more_horizontal.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b3663c74d011d19bd1782e1f5cbad602f45fc3ae
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_more_horizontal.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_on_screen_gui.xml b/app/src/main/res/drawable/ic_preference_on_screen_gui.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4b6796e490503c72ff07eea09ae4e780bd362a16
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_on_screen_gui.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_photo_settings.xml b/app/src/main/res/drawable/ic_preference_photo_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fae1ec549b4dc787aba04de6ae552d944ad29e85
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_photo_settings.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_photo_size_select.xml b/app/src/main/res/drawable/ic_preference_photo_size_select.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5d40ece83c42e40d376841a88544d080be6739f6
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_photo_size_select.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_power.xml b/app/src/main/res/drawable/ic_preference_power.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2c4b973fba397c069fe5e96ddf0d3591b832040c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_power.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_processing.xml b/app/src/main/res/drawable/ic_preference_processing.xml
new file mode 100644
index 0000000000000000000000000000000000000000..af29186f025d7d6204c218722d280ad70b39a884
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_processing.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_save.xml b/app/src/main/res/drawable/ic_preference_save.xml
new file mode 100644
index 0000000000000000000000000000000000000000..560333a545195b72ffe948eeb6084f35299f02c3
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_save.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_text_format.xml b/app/src/main/res/drawable/ic_preference_text_format.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f8ad413e1fef94fb949bb6cea2e865dc9a6ac590
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_text_format.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_text_stamp.xml b/app/src/main/res/drawable/ic_preference_text_stamp.xml
new file mode 100644
index 0000000000000000000000000000000000000000..16280799362a01cbff4d1919d7640a3d25ca7a7a
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_text_stamp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_timer.xml b/app/src/main/res/drawable/ic_preference_timer.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d71a2d7da35d76784e2507d739a3d074f491916e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_timer.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_touch_app.xml b/app/src/main/res/drawable/ic_preference_touch_app.xml
new file mode 100644
index 0000000000000000000000000000000000000000..30a1ec5aefa00ac778e03fc0b254b75548a4e4ae
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_touch_app.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_preference_video_settings.xml b/app/src/main/res/drawable/ic_preference_video_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..761ecc0fb5b4234baca19f600dc5506ee9c0b6b2
--- /dev/null
+++ b/app/src/main/res/drawable/ic_preference_video_settings.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_raw.xml b/app/src/main/res/drawable/ic_raw.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7020a3f0735af63d3d908aee25a2fca11c81902a
--- /dev/null
+++ b/app/src/main/res/drawable/ic_raw.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5ff6fec08246c8a7049c2aed8034b53778971e3f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_settings.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_share.xml b/app/src/main/res/drawable/ic_share.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fcb75da983bf7841a05138c2bdeb88f451c6fb7b
--- /dev/null
+++ b/app/src/main/res/drawable/ic_share.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_shopping_cart.xml b/app/src/main/res/drawable/ic_shopping_cart.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3cd15b2b032a40f7c3d3fb57721c8ab8501bf619
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shopping_cart.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_shutter_speed.xml b/app/src/main/res/drawable/ic_shutter_speed.xml
new file mode 100644
index 0000000000000000000000000000000000000000..074469888d29a88837883834ec8e722eb2bb9693
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shutter_speed.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_sms.xml b/app/src/main/res/drawable/ic_sms.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b20d6f027ce45308417dc293e93737ade9f075b5
--- /dev/null
+++ b/app/src/main/res/drawable/ic_sms.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_switch_camera.xml b/app/src/main/res/drawable/ic_switch_camera.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3c2171f74b02d5b4a1d4aa267d0b6157252fd28c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_switch_camera.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_switch_multi_camera.xml b/app/src/main/res/drawable/ic_switch_multi_camera.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8d17d926693a8f1f45077dc4b5e82bb8105ee2ac
--- /dev/null
+++ b/app/src/main/res/drawable/ic_switch_multi_camera.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_switch_qrcode.xml b/app/src/main/res/drawable/ic_switch_qrcode.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6fa827cf0454ee51ec98e86708e482d60ddb7c12
--- /dev/null
+++ b/app/src/main/res/drawable/ic_switch_qrcode.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_switch_video.xml b/app/src/main/res/drawable/ic_switch_video.xml
new file mode 100644
index 0000000000000000000000000000000000000000..07b801e2ccdb3d9f1951d0353b693169d313c331
--- /dev/null
+++ b/app/src/main/res/drawable/ic_switch_video.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_text_snippet.xml b/app/src/main/res/drawable/ic_text_snippet.xml
new file mode 100644
index 0000000000000000000000000000000000000000..137e2893e4022ce6eb4abc461d370dae22faf993
--- /dev/null
+++ b/app/src/main/res/drawable/ic_text_snippet.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_text_stamp.xml b/app/src/main/res/drawable/ic_text_stamp.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c8116a0863561393d58246f11e9f0505ab88846f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_text_stamp.xml
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_white_balance_unlocked.xml b/app/src/main/res/drawable/ic_white_balance_unlocked.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6f2d66a44f0e4da1c72dd4de667eeeefeeeaa823
--- /dev/null
+++ b/app/src/main/res/drawable/ic_white_balance_unlocked.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_zoom_in.xml b/app/src/main/res/drawable/ic_zoom_in.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3871a062cca0bf28bc89598f7d0d96afd26fc526
--- /dev/null
+++ b/app/src/main/res/drawable/ic_zoom_in.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_zoom_out.xml b/app/src/main/res/drawable/ic_zoom_out.xml
new file mode 100644
index 0000000000000000000000000000000000000000..09772974334cad9a5454f2f403d9c3fe02e16a6b
--- /dev/null
+++ b/app/src/main/res/drawable/ic_zoom_out.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/popup_camera_flash_auto.xml b/app/src/main/res/drawable/popup_camera_flash_auto.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b724899fb51e0becbf95d7d13ad70b33866f8e55
--- /dev/null
+++ b/app/src/main/res/drawable/popup_camera_flash_auto.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/popup_camera_flash_off.xml b/app/src/main/res/drawable/popup_camera_flash_off.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a20462a3aa2758f30a2f187061557e813e2e3f9f
--- /dev/null
+++ b/app/src/main/res/drawable/popup_camera_flash_off.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/popup_camera_flash_on.xml b/app/src/main/res/drawable/popup_camera_flash_on.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c73583d0ba01e9bfeab7aa49e3e0daacc6b5da3c
--- /dev/null
+++ b/app/src/main/res/drawable/popup_camera_flash_on.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/popup_camera_flash_red_eye.xml b/app/src/main/res/drawable/popup_camera_flash_red_eye.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ccbbeb3fca732e3de3b2d27b8c37d99d3de13e5d
--- /dev/null
+++ b/app/src/main/res/drawable/popup_camera_flash_red_eye.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/popup_camera_flash_torch.xml b/app/src/main/res/drawable/popup_camera_flash_torch.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c7be3adbee4658ba814cebe8a06de25f636345d3
--- /dev/null
+++ b/app/src/main/res/drawable/popup_camera_flash_torch.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/qr_bottom_sheet_action_button_divider.xml b/app/src/main/res/drawable/qr_bottom_sheet_action_button_divider.xml
new file mode 100644
index 0000000000000000000000000000000000000000..06402726f4c3bdce17ba4b2f33a620392cbae76d
--- /dev/null
+++ b/app/src/main/res/drawable/qr_bottom_sheet_action_button_divider.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/scan_area.xml b/app/src/main/res/drawable/scan_area.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2486da0806f19991907d6f0422383cef29ae826c
--- /dev/null
+++ b/app/src/main/res/drawable/scan_area.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/shortcut_gallery.xml b/app/src/main/res/drawable/shortcut_gallery.xml
index bfe1492cf349aee70944390e35eb1e36776ce3b2..81c87d31a1e6025c86f94c1196dcc66f86864646 100644
--- a/app/src/main/res/drawable/shortcut_gallery.xml
+++ b/app/src/main/res/drawable/shortcut_gallery.xml
@@ -1,9 +1,9 @@
-
-
-
-
+
+
+
-
+
diff --git a/app/src/main/res/drawable/shortcut_ic_face_white_48dp.xml b/app/src/main/res/drawable/shortcut_ic_face_white_48dp.xml
index 61087dd69a55a4c18b83cf98a49ce1e95eeac5aa..b79d90eae0dc2cbd6876a96dd524bcbb360f8f77 100644
--- a/app/src/main/res/drawable/shortcut_ic_face_white_48dp.xml
+++ b/app/src/main/res/drawable/shortcut_ic_face_white_48dp.xml
@@ -1,9 +1,9 @@
-
-
-
-
+
+
+
-
+
diff --git a/app/src/main/res/drawable/shortcut_ic_photo_camera_white_48dp.xml b/app/src/main/res/drawable/shortcut_ic_photo_camera_white_48dp.xml
index aa0ca23e15094df874b8ca4cbbb096d82a851791..51f8a1a91ca3b64759e9d1e4df2010aeb072d557 100644
--- a/app/src/main/res/drawable/shortcut_ic_photo_camera_white_48dp.xml
+++ b/app/src/main/res/drawable/shortcut_ic_photo_camera_white_48dp.xml
@@ -1,9 +1,9 @@
-
-
-
-
+
+
+
-
+
diff --git a/app/src/main/res/drawable/shortcut_ic_videocam_white_48dp.xml b/app/src/main/res/drawable/shortcut_ic_videocam_white_48dp.xml
index abc44e2aabbd4401f93c4fc51e198e2dcf642118..683456743cf7fb405f11add654dbbc7456a08414 100644
--- a/app/src/main/res/drawable/shortcut_ic_videocam_white_48dp.xml
+++ b/app/src/main/res/drawable/shortcut_ic_videocam_white_48dp.xml
@@ -1,9 +1,9 @@
-
-
-
-
+
+
+
diff --git a/app/src/main/res/drawable/shortcut_settings.xml b/app/src/main/res/drawable/shortcut_settings.xml
index 244cf6533a1621d39992bd94e03a99e84c971437..9bcdd00f267837d8165f923642dbdb633d4ec92d 100644
--- a/app/src/main/res/drawable/shortcut_settings.xml
+++ b/app/src/main/res/drawable/shortcut_settings.xml
@@ -1,9 +1,9 @@
-
-
-
-
+
+
+
-
+
diff --git a/app/src/main/res/drawable/take_photo_selector.xml b/app/src/main/res/drawable/take_photo_selector.xml
index 09f412724f242cd0bc5bca5e79d3db135c857d40..4b01164401c667c9fb86fafbeb6b30c67a7b9a78 100644
--- a/app/src/main/res/drawable/take_photo_selector.xml
+++ b/app/src/main/res/drawable/take_photo_selector.xml
@@ -1,6 +1,6 @@
-
+ android:drawable="@drawable/ic_camera_shutter" />
+
diff --git a/app/src/main/res/drawable/take_photo_when_video_recording.xml b/app/src/main/res/drawable/take_photo_when_video_recording.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8e740588fcc02ba01c9770bd4a1d876fc09f2280
--- /dev/null
+++ b/app/src/main/res/drawable/take_photo_when_video_recording.xml
@@ -0,0 +1,15 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/take_video_recording.xml b/app/src/main/res/drawable/take_video_recording.xml
index de5143a638268dfc8531313c0550ad1f24ca7b6f..91c73c165e8bb0f2d43f5a886d913a21bb76da18 100644
--- a/app/src/main/res/drawable/take_video_recording.xml
+++ b/app/src/main/res/drawable/take_video_recording.xml
@@ -1,11 +1,4 @@
-
-
-
-
-
+
+
+
diff --git a/app/src/main/res/drawable/take_video_selector.xml b/app/src/main/res/drawable/take_video_selector.xml
index e49fd08e6b9441abf3290ab9bc6974728e942bff..4b01164401c667c9fb86fafbeb6b30c67a7b9a78 100644
--- a/app/src/main/res/drawable/take_video_selector.xml
+++ b/app/src/main/res/drawable/take_video_selector.xml
@@ -1,6 +1,6 @@
-
+ android:drawable="@drawable/ic_camera_shutter" />
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index c548ae5c8d0b21612038c8c57a6b091e43543779..835ba282a5283e5ed0e1f8328ef6cb933a2231c6 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -11,142 +11,246 @@
android:layout_height="wrap_content"
android:layout_centerInParent="true"
/>
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
-
-
-
-
-
-
-
-
-
+ android:visibility="gone" />
-
-
+ android:layout_width="112dp"
+ android:layout_height="38dp"
+ android:background="@drawable/bg_zoom_control"
+ android:layout_toEndOf="@id/top_bg"
+ android:layout_marginStart="25dp"
+ android:layout_centerVertical="true" >
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
@@ -155,13 +259,11 @@
android:contentDescription="@string/focus_bracketing_target_distance"
android:layout_width="150dp"
android:layout_height="50dp"
- android:layout_marginLeft="0dp"
- android:layout_marginRight="0dp"
- android:layout_marginTop="0dp"
- android:layout_marginBottom="0dp"
+
android:visibility="gone"
- android:background="@color/seekbar_background"
- />
+ android:background="@drawable/bg_rounded_corner" />
+
+
-
-
-
+ android:visibility="invisible" />
+ android:src="@drawable/ic_settings"
+ android:background="@null"
+ android:onClick="clickedSettings" />
+ android:src="@drawable/ic_more"
+ android:background="@null"
+ android:onClick="clickedPopupSettings" />
+ android:visibility="gone" />
+ android:visibility="gone" />
+ android:visibility="gone" />
+ android:visibility="gone" />
+ android:visibility="gone" />
+ android:visibility="gone" />
+ android:visibility="gone" />
+ android:paddingStart="10dp"
+ android:paddingEnd="10dp"
+ android:paddingBottom="10dp" >
+ android:visibility="gone" >
-
+ android:layout_gravity="center" />
@@ -514,7 +545,7 @@
android:contentDescription="@string/exposure_compensation"
android:layout_width="30dp"
android:layout_height="30dp"
- app:srcCompat="@drawable/ic_exposure_white_48dp"
+ app:srcCompat="@drawable/ic_camera_exposure"
/>
@@ -529,16 +560,6 @@
android:alpha="0.9"
/>
-
@@ -575,7 +596,7 @@
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_below="@+id/iso_seekbar"
- app:srcCompat="@drawable/baseline_shutter_speed_white_48"
+ app:srcCompat="@drawable/ic_shutter_speed"
/>
@@ -605,7 +626,7 @@
android:contentDescription="@string/white_balance"
android:layout_width="30dp"
android:layout_height="30dp"
- app:srcCompat="@drawable/ic_colorize_white_48dp"
+ app:srcCompat="@drawable/ic_colorize"
/>
@@ -634,6 +655,8 @@
android:id="@+id/popup_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_below="@+id/top_bg"
+ android:layout_alignRight="@+id/top_bg"
android:fadeScrollbars="false"
/>
diff --git a/app/src/main/res/layout/popupview_arrayoptions.xml b/app/src/main/res/layout/popupview_arrayoptions.xml
index 2429e25706bfd698ce331b9dfea64a98cf58ad5d..3d441eac056f07b9e48aa224f878d15065b84899 100644
--- a/app/src/main/res/layout/popupview_arrayoptions.xml
+++ b/app/src/main/res/layout/popupview_arrayoptions.xml
@@ -9,10 +9,12 @@
android:layout_height="match_parent"
android:orientation="horizontal">
-
-
diff --git a/app/src/main/res/layout/qr_bottom_sheet_action_button.xml b/app/src/main/res/layout/qr_bottom_sheet_action_button.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6154163e10d0237aeb4bc7343f77a0588aacf37b
--- /dev/null
+++ b/app/src/main/res/layout/qr_bottom_sheet_action_button.xml
@@ -0,0 +1,20 @@
+
+
+
diff --git a/app/src/main/res/layout/qr_bottom_sheet_dialog.xml b/app/src/main/res/layout/qr_bottom_sheet_dialog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8ee7345a60227fba4c315cc89a13ad4f14b8f2db
--- /dev/null
+++ b/app/src/main/res/layout/qr_bottom_sheet_dialog.xml
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/widget_layout_take_photo.xml b/app/src/main/res/layout/widget_layout_take_photo.xml
index 9897e5e4dc3355103759f62b128cf7155074818b..95a2a4d15d450bb675d2146c5f8e34ce19c9b84f 100644
--- a/app/src/main/res/layout/widget_layout_take_photo.xml
+++ b/app/src/main/res/layout/widget_layout_take_photo.xml
@@ -9,7 +9,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@android:style/Widget.DeviceDefault.Button.Borderless"
- android:drawableTop="@drawable/ic_launcher_take_photo"
+ android:drawableTop="@mipmap/ic_launcher"
android:padding="0dp"
android:textAllCaps="false"
android:textSize="12sp"
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
index 1a4bfc93865fed152c0135b5be6cf3087e02bf77..356784671aa0ed3b0358b4ec49a2afecbf7d90b7 100644
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -1,6 +1,20 @@
+
-
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
deleted file mode 100644
index 1a4bfc93865fed152c0135b5be6cf3087e02bf77..0000000000000000000000000000000000000000
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index 16f68f552435f05e61cd80e30787773c0b091df6..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_background.png b/app/src/main/res/mipmap-hdpi/ic_launcher_background.png
deleted file mode 100644
index 5e6c717efdddda1d07be2a42bdf037ea289e5e71..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_background.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
deleted file mode 100644
index 54f8eeac8f88a711a02052df01137524a0729bca..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 578ed3f7e5dea205096c9e4f72fdd76f4a35d7f4..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_background.png b/app/src/main/res/mipmap-mdpi/ic_launcher_background.png
deleted file mode 100644
index 6ff6efee79389d79068d0059baeddec55dc85d30..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_background.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
deleted file mode 100644
index 05995e2ddd928dbf0a99f606164ca2e9eced5bc2..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index f27d49f5ad782a91a8385166d53cb948713cd6d6..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png
deleted file mode 100644
index 58b8a1982c7e6be83cf48cdfe8e904e2c4c4b0d5..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
deleted file mode 100644
index b9ae9b40a0e6021f4e7ecff3d5553515a4a9c46f..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index eed849e4bd56019da473b865bcc43ca72eaf64e9..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
deleted file mode 100644
index 86c4e19062180b66c6db31ce8830e462bdc1cbc4..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
deleted file mode 100644
index 9c1f65e30b05b104df95aca6aadc19bbd2ca62f9..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 77816ce80de495972866e29c5eda6fbed6148bf3..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
deleted file mode 100644
index 13d15e45ee19ca38f177e771693ea95a6ec3e976..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
deleted file mode 100644
index 2fb44431a4a75ee4542f29b9163e6f073521af6e..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml
index 339ef20a22f861c7a5c79da30aa29d0d8b26dd78..8aa42b6e558e54a4bea16555aeeef2b799428d73 100644
--- a/app/src/main/res/values-az/strings.xml
+++ b/app/src/main/res/values-az/strings.xml
@@ -1,6 +1,6 @@
- Open Camera
+ Camera
Parametrlər
Popup parametrləri
OK (Bu mesaj bir daha göstərilməyəcək)
@@ -100,7 +100,7 @@
Saxlanılan video prefiksi
Videoların saxlanması zamanı fayl adlarının generasiyasında istifadə olunacaq ön yazı
Kilid ekranında kamera
- Əgər qoşulubsa, o zaman Open Camera kilid ekranı üzərindən görünəcək (siz digər parametrlərə, qalereyaya və s. giriş əldə edə bilərsiniz)
+ Əgər qoşulubsa, o zaman Camera kilid ekranı üzərindən görünəcək (siz digər parametrlərə, qalereyaya və s. giriş əldə edə bilərsiniz)
Video qeydi zamanı ekranı kilidlə
Video qeydi zamanı, qeydin təsadüfi dayanmasının qarşısını almaq üçün qrafik interfeys kilidlənəcək. Kilidi açmaq üçün ekranı sürüşdürün. Diqqətli olun ki, əgər proqram fon rejiminə keçsə və ya ekran sönsə video qeydi dayanacaq.
Ön izləmə fırlanması
@@ -186,7 +186,7 @@
Haqqında
Proqram məlumatları
Parametrləri sıfırla
- Bütün Open Camera parametrlərinin susmaya görə sıfırlanması
+ Bütün Camera parametrlərinin susmaya görə sıfırlanması
Bütün papametrlərin sıfırlanmasını istəyirsiniz?
Mövcuddur
Mövcud deyil
@@ -317,6 +317,14 @@
Sol əllə işləyənlər üçün
Sağ əllə işləyənlər üçün
+ About
+ Quraşdırma versiyası
+ Kamera Camera-dan çəngəldir
+ Müəlliflər
+ Mənbə kodu
+ Lisenziyası
+ Kamera məlumatları
+ Xidmət şərtləri
Bağla
Hərəkət düyməsini gizlə
diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml
index f8aff4848e60026720a0749b6634a7623bcc9e05..d2cccf7a5f8ad94ccb6372885cffcd818a0b28ea 100644
--- a/app/src/main/res/values-be/strings.xml
+++ b/app/src/main/res/values-be/strings.xml
@@ -1,7 +1,7 @@
- Open Camera
+ Camera
Налады
Налады ўсплываючых
Добра (Гэта паведамленне не будзе паказана зноў)
@@ -200,7 +200,7 @@
Крыніца гуку
Мікрафон падчас запісу аўдыё\n%s
Аўдыяканалы
- Мона або стэрэа падчас запісу аўдыё (стэрэа падтрымліваецца толькі на некаторых прыладах)\n%s
+ Мона або стэрэа падчас запісу аўдыё (стэрэа падтрымліваецца толькі на некаторых прыладах)
Выьліск падчас запісу відэа
Калі ўключана, то можна будзе ўкл / выкл выбліск падчас запісу відэа
@@ -362,6 +362,14 @@
Тэкст з ценем
Звычайны тэкст
+ About
+ Зборка версіі
+ Камера раздвоеная ад Camera
+ Аўтары
+ Зыходны код
+ Ліцэнзія
+ Інфармацыя пра камеру
+ Умовы прадастаўлення паслуг
Выключана
Хаваць віртуальныя кнопкі навігацыі на экране
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index 77803ff231643dbacffc2a8afe0eb33645d4c2ab..4442ce29ff7f7c28da9aadf49db6757103850b93 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -1,7 +1,7 @@
- Open Camera
+ Camera
Nastavení
Vyskakovací nastavení
OK (Tato zpráva se již znovu nezobrazí.)
@@ -114,7 +114,7 @@
Uložit předponu pro videa
Předpona používaná při ukládání videí
Zobrazit fotoaparát při zamčení
- Pokud zapnuto, Open Camera se bude zobrazovat nad jakoukoliv zamčenou obrazovkou (stále bude požadováno odemčení pro přístup do Nastavení, Galerie atd.)
+ Pokud zapnuto, Camera se bude zobrazovat nad jakoukoliv zamčenou obrazovkou (stále bude požadováno odemčení pro přístup do Nastavení, Galerie atd.)
Zamknout obrazovku při nahrávání videa
Při nahrávání videa bude GUI uzamčeno proti náhodnému zastavení nahrávání. Přejeďte prstem pro odemčení. Mějte na paměti, že nahrávání videa bude zastaveno vždy když bude aplikace na pozadí nebo je obrazovka prázdná.
@@ -204,7 +204,7 @@
Zdroj zvuku
Mikrofon používaný při natáčení videa\n%s
Kanály zvuku
- Nastavit mono nebo stereo pro nahrávání zvuku (stereo je podporováno jen na některých zařízeních)\n%s
+ Nastavit mono nebo stereo pro nahrávání zvuku (stereo je podporováno jen na některých zařízeních)
Blikat při nahrávání videa
Při zapnutí bude přisvětlovací dioda blikat při nahrávání videa (umožňuje z dálky určit, zda-li fotoaparát nahrává)
@@ -217,8 +217,8 @@
O programu
Informace aplikace a ladění
Obnovit nastavení
- Obnoví všechna nastavení Open Camera na původní
- Jste si jist/á, že chcete obnovit všechna nastavení Open Camera na původní?
+ Obnoví všechna nastavení Camera na původní
+ Jste si jist/á, že chcete obnovit všechna nastavení Camera na původní?
Dostupné
Nedostupné
@@ -366,6 +366,14 @@
Vystínovaný text
Prostý text
+ About
+ Sestavte verzi
+ Kamera je vidlice z Camera
+ Autor
+ Zdrojový kód
+ Licence
+ Informace o kameře
+ Podmínky služby
Vypnuto
Skrýt pouze virtuální navigační tlačítka
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 5b1e0ce0b4fac4cb9775a512f7bf290ec62ca601..61dfae62f7ab1d2c75c5d0a3f3b0e636f643abde 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -1,24 +1,26 @@
-
- Open Camera
+ Kamera
+
Einstellungen
Popup-Einstellungen
OK (Diese Nachricht wird nicht wieder angezeigt.)
-
- Ein
- Aus
-
+ An
+
+ Aus
+
Speicherort auswählen:
Ordnerhistorie löschen
Ordnerhistorie löschen?
Bitte wählen Sie einen anderen Ordner
Speicherort geändert nach:
Videoaufnahme angehalten
- Wiederholungen ausbleibend
+ Wiederholungen ausbleibend
+
Verbindung mit der Kamera fehlgeschlagen
Fehler, die Video-Datei könnte beschädigt sein
- wird von Ihrem Gerät nicht unterstützt
+ wird von Ihrem Gerät nicht unterstützt
+
Unbekannter Fehler, Videoaufnahme angehalten
Server abgestürzt, Video angehalten
Video hat die Maximaldauer erreicht
@@ -57,7 +59,6 @@
Farbeffekt
Szenenmodus
Weißabgleich
-
Winkel
Richtung
FEHLER BEIM ÖFFNEN DER KAMERA.
@@ -68,10 +69,9 @@
Frei
[GESPERRT:
Zum Entsperren wischen]
-
Fehler beim Stempeln des Fotos
- m
-
+ m
+
Kameraeffekte
Bildlagekorrektur
Die Aufnahme wird automatisch waagerecht ausgerichtet (nur bei Fotos, Aufnahme dauert länger und kann bei kleinem Gerätespeicher fehlschlagen)
@@ -89,7 +89,6 @@
Wenn aktiviert, wird die Lage des Gerätes ignoriert und die Orientierung der Aufnahme auf diesen Wert fest eingestellt\n%s
Gesichtserkennung
Stellt die Schärfe auf die Gesichter ein
-
Kamera-Einstellungen
Timer
Timer-Signalton
@@ -100,7 +99,7 @@
Serienbild-Intervall
Mehr Kamera-Einstellungen…
Aufnahme bei Berührung
- Fotoaufnahme durch Berührung oder Doppelklick der Vorschau starten
+ Aufnahme eines Fotos oder Videos durch Tippen oder Doppelklicken auf die Vorschau
Pause nach der Fotoaufnahme
Nach der Aufnahme pausieren mit der Möglichkeit, das Foto zu teilen oder zu löschen
Auslöseton
@@ -111,16 +110,16 @@
Mikroempfindlichkeit für lautes Geräusch
Speicherort
Ordner, wo die Fotos/Videos gespeichert werden
- Für das Speichern der Fotos/Videos Storage Access Framework verwenden
+ Für das Speichern der Fotos/Videos Storage Access Framework verwenden. Dies sollte aktiviert werden, um das Speichern auf externen SD-Karten zu ermöglichen. Bei Android 10 und höher muss dies Option aktiviert werden, wenn in einem Ordner außerhalb DCIM gespeichert werden soll.
Foto-Präfix
Den Präfix für die Dateinamen der Fotos einstellen
Video-Präfix
Den Präfix für die Dateinamen der Videos einstellen
Zeitformat für den Dateinamen
Kamera trotz Sperre anzeigen
- Wenn aktiviert, wird Open Camera über dem Sperrbildschirm stehen (das Entsperren ist jedoch für den Zugriff auf Einstellungen, Galerie usw. nötig)
+ Wenn aktiviert, wird Camera über dem Sperrbildschirm stehen (das Entsperren ist jedoch für den Zugriff auf Einstellungen, Galerie usw. nötig)
Verwende Auto-Fokus bei Start der App
- Beim Start von Open Camera automatisch fokussieren. Deaktiviere diese Option bei einem Problem mit dem Blitz.
+ Beim Starten der Kamera automatisch fokussieren. Deaktiviere diese Option, falls der Blitz beim Starten auch immer angeht.
Bildschirm bei Videoaufnahme sperren
Wenn aktiviert, wird bei Videoaufnahmen die Oberfläche gesperrt, um versehentliches Stoppen zu verhindern. Zum Entsperren einfach wischen.
Vorschau drehen
@@ -152,20 +151,20 @@
Batterieanzeige
Zeigt den aktuellen Ladezustand des Akkus auf dem Bildschirm an
Gitter-Hilfslinien
- Gitter
+ Gitter
+
Beschnitt-Hilfslinien
Anzeige einer rechteckigen Hilfslinie entsprechend dem gewählten Seitenverhältnis (nützlich, wenn ein Beschnitt geplant ist). Nur in der WYSIWYG-Vorschau oder bei Videoaufnahme möglich\n%s
- Toast-Benachrichtigungen
+ Bildschirmbenachrichtigungen anzeigen
Anzeige von Popup-Meldungen aktivieren/deaktivieren
Vorschau-Animation
Zeigt eine Vorschaubildanimation bei der Fotoaufnahme
Zeige Rahmen, wenn Fotos aufgenommen werden
- Zeige einen Rahmen auf der Anzeige um die Aufnahme eines Bildes anzuzeigen.
+ Zeige einen Rahmen auf dem Bildschirm, um die Aufnahme eines Bildes anzuzeigen
Bildschirm immer an
- Wenn aktiviert, wird der Bildschirm nie ausgeschaltet solange die Oberfläche aktiv ist.
+ Wenn aktiviert, wird der Bildschirm nie ausgeschaltet, solange die Kamera-Benutzeroberfläche aktiv ist
Maximale Helligkeit erzwingen
Wenn aktiviert, wird der Bildschirm auf die höchste Helligkeit eingestellt.
-
Foto- und Video-Einstellungen
Foto-Einstellungen…
Video-Einstellungen…
@@ -175,7 +174,7 @@
Die Qualität beim Speichern der Fotos einstellen (Empfehlung: 90%%)\n%s
RAW
Geotagging
- Wenn aktiviert, werden die GPS-Standortdaten in den Aufnahmen gespeichert.
+ GPS-Standortdaten in den Aufnahmen (Foto/Video) speichern (Bei Fotos ist das nur in den JPEG und DNG-Format möglich)
Himmelsrichtung
Speichere die GPS-Kompassrichtung in den Fotos (nur JPEG-Format)
Standortdaten erforderlich
@@ -197,14 +196,14 @@
Legt fest, ob ein Hintergrund-Thread zum Speichern eines Bildes zur schnelleren Ausführung benutzt wird
Video-Auflösung
Erzwinge UHD/4K (experimentell)
- Aktiviert die Auflösung von 3840x2160 für die Videoaufnahme der Hauptkam
- era. Funktioniert jedoch nur, wenn es vom Gerät unterstützt wird
- Video-Stabilisierung
- Die Video-Stabilisierung reduziert das Bildwackeln in der Vorschau und der Aufnahme
+ Aktiviert die Auflösung von 3840x2160 für die Videoaufnahme der Hauptkamera. Diese Funktion ist ein Hack, der ermöglichen soll, dass 4K-Aufnahmen bei 4K-Kameras gemacht werden, selbst wenn keine Drittanbieter-Apps unterstützt werden. Bitte ausprobieren, ob das auf deinem Gerät funktioniert.
+ Digitale Video-Stabilisierung aktivieren
+ Die Video-Stabilisierung reduziert Bildwackeln in der Vorschau und der Aufnahme. Dies ist eventuell nicht erforderlich, wenn das Gerät optische Bildstabilisierung (OIS) unterstützt.
Video-Bitrate (durchschnittlich)
Einstellung der durchschnittlichen Bitrate der Videoaufnahme (je höher umso besser die Qualität und höher die Dateigröße). Nicht alle Geräte unterstützen alle Bitraten\n%s
Bildwiederholfrequenz
- Einstellung der Bildwiederholrate (FPS) der Videoaufnahme. Dieser Wert kann nicht immer garantiert werden. Nicht alle Geräte unterstützen alle Raten\n%s
+ Einstellung der Bildwiederholrate (FPS) der Videoaufnahme. Dieser Wert kann nicht immer garantiert werden. Die Videoaufnahme kann fehlschlagen, wenn die Bildrate nicht unterstützt wird. Bitte prüfen Sie die erzeugten Videos, um die tatsächliche Bildrate zu ermitteln. Diese Einstellung wird nicht bei Slow-Motion-Videos berücksichtigt.
+\n%s
Maximaldauer
Die Videoaufnahme wird nach dieser Zeit abgebrochen.\n%s
Neustart der Aufnahme nach Maximaldauer
@@ -212,19 +211,19 @@
Maximale Dateigröße für Video
Die Videoaufnahme stoppt und/oder started (siehe nächste Optionen), wenn die maximale Dateigröße fast erreicht ist. Alle Android Geräte haben eine maximale Größe von 2GB oder 4GB für Videos. Mit diesem Wert läßt sich ein bestimmter Wert einstellen.\n%s
Neustart bei maximaler Dateigröße
- Legt fest, ob die Videoaufnahme neugestartet wird, sobald das geräte-definierte oder das benutzerdefinierte Maximum erreicht ist.
+ Bestimmt, ob die Videoaufnahme neu gestartet werden soll, sobald die maximale Dateigröße erreicht ist (die vom Gerät oder vom Benutzer festgelegt ist)
Ton aufzeichnen
- Wenn aktiviert, wird das Video mit Ton aufgenommen.
+ Ton auch aufnehmen, wenn Video aufgenommen wird
Audio-Quelle
- Einstellung der Mikrofonquelle für die Tonaufnahme\n%s
+ Einstellung der Mikrofonquelle für die Tonaufnahme. Die exakte Auswirkung der Einstellungen ist abhängig vom Gerät.
+\n%s
Audio-Kanäle
- Mono- oder Stereo-Aufnahme (Stereo wird nur von einigen Geräten unterstützt)\n%s
+ Mono- oder Stereo-Aufnahme (Stereo wird nur von einigen Geräten unterstützt)
Blitzlicht während der Videoaufnahme
- Wenn aktiviert, blinkt der Blitz während der Videoaufnahme.
-
+ Wenn aktiviert, blinkt der Blitz während der Videoaufnahme (damit man aus der Ferne erkennen kann, ob die Aufnahme läuft)
Verschiedenes
Online-Hilfe
- Öffne die Open Camera Website in deinem Browser
+ Öffne die Camera Website in deinem Browser
Spende
Wenn Ihnen diese App gefällt, würde ich mich über eine Spende freuen, indem Sie meine Spenden-App kaufen. Dazu brauchen Sie nur diese Option anzuklicken. Danke!
Camera2-API verwenden
@@ -232,13 +231,11 @@
Über
Anwendungs- und Debug-Informationen
Einstellungen zurücksetzen
- Standard-Einstellungen von Open Camera wiederherstellen
- Sind Sie sich sicher, alle Einstellungen von Open Camera auf die Standardwerte zurückzusetzen?
-
+ Standard-Einstellungen von Camera wiederherstellen
+ Sind Sie sich sicher, alle Einstellungen von Camera auf die Standardwerte zurückzusetzen?
verfügbar
nicht verfügbar
In die Zwischenablage kopieren
-
Foto aufnehmen
Galerie
Belichtung
@@ -251,7 +248,6 @@
Umschalten in Kamera Modus
Letztes Foto löschen
Foto teilen
-
Übergeordnetes Verzeichnis
Neuer Ordner
In diesem Ordner kann nicht gespeichert werden
@@ -259,109 +255,94 @@
Neuen Ordnername eingeben
Fehler beim Erstellen des Ordners
Ordner existiert bereits
-
Speicherort auswählen
Storage Access Framework abgebrochen
Kann nicht in diesem Verzeichnis speichern
-
Mikrofon-Berechtigung ist nicht gegeben
Location-Berechtigung ist nicht gegeben
-
Starte Videoaufnahme
Stoppe Videoaufnahme
-
- Max. Filegröße
- MB
- GB
-
+ Max. Dateigröße
+ MB
+
+ GB
+
Starte Sprach/Geräusch-Steuerung
Stoppe Sprach/Geräusch-Steuerung
Sag \"cheese\"
Mache ein lautes Geräusch
-
Autostabilisierung rotiert die Fotos so, dass sie waagerecht erscheinen.\n\nDies bedeutet aber auch eine geringere Auflösung aufgrund von Rotation und Beschneidung.
DNG-Dateien enthalten die volle, unkomprimierte Bildinformation der Kamera. Manche Galerie-Apps erkennen das DNG-Format nicht. DNG-Dateien können in spezialisierten Foto-Editor-Apps verwendet werden. Verschiedene Bildbearbeitungsoptionen wie \"Fotostempel\" oder \"Autostabilisierung\" werden nur bei JPEG-Dateien angewandt und nicht bei DNG-Dateien.
Der HDR-Modus ist nützlich für Motive mit starkem Kontrast. Dabei werden mehrere Bilder mit verschiedener Belichtung kombiniert.\n\nHDR ist nicht für bewegte Szenen geeignet, kann Farbänderungen bewirken und benötigt mehr Zeit.
-
Nicht wieder zeigen
-
Foto Modus
- Std
+ Std
+
Standard
HDR
- Expo {}
+ Expo {}
+
Belichtungsreihe
Schnelle Fotofolge
- NR
+ NR
+
Rauschunterdrückung
Fotostempel
Alle Bilder der HDR Aufnahme speichern
Wenn aktiviert, dann werden im HDR-Modus die drei Basis-Belichtungsbilder zusammen mit dem HDR-Foto gespeichert. Beachte, dass das die Aufnahmen verlangsamt, besonders wenn Optionen wie \"Fotostempel\" oder \"Autostabilisieung\" verwendet werden.
-
BERECHTIGUNGEN NICHT VERFÜGBAR
Berechtigung benötigt
Kamera Berechtigung wird benötigt um die Kamera zu aktivieren
- Location-Berechtigung für das Geotagging benötigt (Speicherung der Standortdaten in
- Fotos und Videos). Location-Berechtigung wird auch benötigt, um eine Verbindung zu Bluetooth LE Fernbedienungen herzustellen (Android 11 or earlier).
-
- Debug-Optionen
- Debug-Optionen
- Benutze alternative Blitz Methode
+ Standort-Berechtigung ist für Geotagging benötigt (das Speichern von Standortdaten in Fotos und Videos, auch von Wasserzeichen und Untertitel-Optionen). Standort-Berechtigung ist auch notwendig, um mit Bluetooth LE Fernsteuerungen zu verbinden (zumindest bei Android 11 und früher).
+ Fehlersuche-Optionen
+ Fehlersuche-Optionen
+ Benutze alternative Blitzmethode
Aktiviere dies, wenn dein Gerät Probleme mit der Camera2-API hat
-
Belichtungsreihe
Anzahl der Bilder für die Belichtungsreihe\n%s
Blendenschritte in der Belichtungsreihe
Anzahl der Blendenschritte pro Foto\n%s
-
Rauschminderung im Originalbild
Speichere alle Originalbilder mit Rauschminderung (langsam)
-
Keine Rauschminderung im Originalbild
Speichere einzelnes Originalbild
Sollen Originalbilder mit Rauschminderung gespeichert werden? (Benötigt mehr Zeit)\n%s
-
- s
-
+ s
+
Nicht genügend freier Speicher um Video aufzunehmen
- Videoaufzeichnung gestoppt\nBatterie fast leer.
+ Videoaufzeichnung gestoppt
+\nBatterie fast leer
Überprüfung der Batterieladung
- Stoppe die Videoauszeichnung wenn die Batterie fast leer ist. Dies vermeidet korrupte Videos, falls dein Gerät aufgrund von Energiemangel plötzlich abschaltet
-
- Dunkel
- Hell
+ Stoppe die Videoauszeichnung, wenn die Batterie fast leer ist. Dies vermeidet korrupte Videos, falls dein Gerät dann plötzlich abschaltet.
+ Dunkel
+
+ Hell
+
Verschlusszeit
-
Ernsthafter Kamera Fehler
-
Aktiviere schnellen HDR-/Expo-Burst
Erlaubt schnellere Aufnahmen im HDR-/Expo-Modus. Deaktiviere diesen Modus, falls dein Gerät damit Probleme hat.
-
Kamera
Zeichne Video auf
Selfie
-
Spiegele Front Kamera
Bestimmt, ob Bilder der Front Kamera gespiegelt werden\n%s
-
Kalibriere den Gyro
- Diese Option kalibriert den Lagesensor, sodaß die Bilderausrichtung korrekt bestimmt wird.
+ Diese Option kalibriert den Lagesensor, sodass die Bilderausrichtung korrekt bestimmt wird
Lege dein Gerät auf eine ebene Fläche, sodass es ebenfalls eben liegt (entweder Portrait- oder Landscape-Orientierung), and wähle \'Kalibriere\'.\n\nDrücke \'Reset\' um die Kalibrierung für dieses Gerät zu entfernen.\n\nDrücke \'Zurück\' zum Abbruch.
Kalibriere
Reset
- Waagerechte Ebene kalibriert.
+ Waagerechte Ebene kalibriert
Ebenen-Kalibrierung zurückgesetzt
-
DRO
-
Zeige Neigungslinien
Zeige horizontale Neigungsebene
Zeige Kompass-Richtungslinien
Zeige Kompass Richtungslinien
Video Untertitel
- Erzeuge eine Untertiteldatei (.SRT) mit Datum und Uhrzeit sowie mit GPS-Daten, sofern GPS aktiviert ist\n%s
-
+ Erzeuge eine Untertiteldatei (.SRT) mit Datum und Uhrzeit sowie mit GPS-Daten, sofern GPS aktiviert ist. (Für Android 11+ erfordert diese Option weitere aktivierbare Kamerasteuerungen/ Speicherzugriffssteuerungen)
+\n%s
Unbegrenzt
3 Sekunden
5 Sekunden
@@ -386,20 +367,15 @@
30 Minuten
45 Minuten
1 Stunde
-
Zeige \'Bildaufnahme\' Icon
Zeige das Icon um Bilder und Videos aufzunehmen. Nützlich, wenn das Gerät einen eigenen Auslöser hat und man diesen benutzen will.
-
Videoaufnahme pausiert
Videoaufnahme fortgesetzt
Pausiere Videoaufnahme
Videoaufnahme fortsetzen
-
Aufnahme läuft…
-
Initialisierung der Audioaufnahme fehlgeschlagen
HDR-Bild konnte nicht erzeugt werden
-
Auto
Bewölkt
Tageslicht
@@ -409,7 +385,6 @@
Zwielicht
Warme Leuchtstofflampe
Manuell
-
Action
Barcode
Strand
@@ -426,7 +401,6 @@
Langzeit
Sonnenuntergang
Theater
-
Wasser
Schwarze Tafel
Mono
@@ -436,10 +410,8 @@
Sepia
Solarisation
Weiße Tafel
-
Was ist neu?
Spenden
-
Gesicht
Gesichter
@@ -448,29 +420,22 @@
oben im Bild
unten im Bild
in der Mitte
-
- High Speed
-
+ Highspeed
Standard
-
Spezifische EXIF-Kennungen
Ersteller
Text für den "Ersteller"-Eintrag in den Foto-Metadaten (nur JPEG-Format, freilassen, falls nicht verwendet.)
Copyright
Text für den "Copyright"-Eintrag in den Foto-Metadaten (nur JPEG-Format, freilassen, falls nicht verwendet.)
-
Bearbeitung…
-
Nur JPEG
JPEG und DNG (RAW)
Nur DNG (RAW)
-
Standard
JJJJ-MM-TT
TT/MM/JJJJ
MM/TT/JJJJ
Kein Datum-Stempel
-
Anzahl Fotos
2
3
@@ -482,7 +447,6 @@
12
15
20
-
Anzahl Fotos
2
3
@@ -501,12 +465,10 @@
100
150
200
-
Geschwindigkeit
Normal
Zeitlupe aus
Zeitlupe ein
-
Ohne Blitz
Automatischer Blitz
Mit Blitz
@@ -515,26 +477,21 @@
Frontblitz Auto
Frontblitz ein
Bildschirmleuchte
-
Anti-Banding
Algorithmen gegen Flackern.\n%s
Auto
50 Hz
60 Hz
Aus
-
Geisterbilder
Überlagere ein Bild zwecks Ausrichtung.\n%s
Aus
Zuletzt aufgenommenes Foto
Ausgewähltes Bild
-
Kein Datei-Dialog möglich, die Geisterbilder-Option wird nicht unterstützt
Bild kann nicht geöffnet werden
-
Ermögliche Fotos während der Videoaufnahme
Ermögliche Fotos während der Videoaudnahme. Diese Option ausschalten, falls Probleme mit dem Camera-2-API auftreten.
-
Flaches (Log-) Video-Profil
Aktiviere ein flaches (Log-) Profil für den Video-Modus\n%s
Aus
@@ -544,14 +501,12 @@
Stark
Extra stark
Log-Profil
-
Camcorder
Externes Mikrofon
Standard-Audioquelle
Optimiert für Stimme
Optimiert für Stimmerkennung
Unbearbeitet
-
Standard
100 kbit/s
200 kbit/s
@@ -578,40 +533,32 @@
100 Mbit/s
150 Mbit/s
200 Mbit/s
-
- Kein Burst
-
+ Kein Burst
+
Anzeige der Lautstärke
Anzeige der Lautstärke bei der Video-Aufnahme
-
- Focus {}
+ Fokus {}
+
Focus Bracketing
-
Focus Bracketing Quell-Entfernung
Focus Bracketing Ziel-Entfernung
-
Füge unendlich hinzu
-
Dein Kompass muss kalibriert werden, um die Genauigkeit zu verbessern. Dazu bewege Dein Handy in der Bahn einer Acht.\n\nAktuelle Präzision:
Kompassausrichtung
-
Ungenau
Niedrig
Mittel
Hoch
Unbekannt
-
Entfernungseinheit
Verwendet für GPS-Höhe, Fotostempel und Video-Untertitel\n%s
Meter
Fuß
- ft
-
+ ft
+
Zeige den What\'s-New-Dialog
Zeigt Info zu neuen Features und Verbesserungen wenn die App upgedatet wurde
-
Verarbeitungseinstellungen…
-
Algorithmus zur Rauschunterdrückung
Algorithmus, den der Kameratreiber zur Unterdrückung des Rauschens verwenden soll. Der Algorithmus zur Rauschunterdrückung versucht, die Bildqualität zu verbessern, indem er übermäßiges Rauschen das bei der Bildaufnahme entstanden ist (besonders be wenig einfallendem Licht) entfernt. (Beachte, dass diese Option im NR Aufnahme-Modus nicht verwendet wird.)\n%s
Standard
@@ -619,18 +566,16 @@
Minimal
Schnell
Hohe Qualität
-
Fokus-Assistenz
Zoomt näher bei manueller Fokussierung\n%s
Aus
2x
4x
-
Erhöhe oder vermindere die Belichtungskorrektur
-
- Vorheriges
- Nächstes
-
+ Vorheriges
+
+ Weiter
+
Aus
2x
3x
@@ -645,7 +590,6 @@
200x
500x
Unbegrenzt
-
Keine Verzögerung
0,5 s
1 s
@@ -664,7 +608,6 @@
30 min
1 h
2 h
-
Standard
100 MB
200 MB
@@ -674,9 +617,7 @@
2 GB
5 GB
9 GB
-
Fokus-Bracketing beendet
-
Keine Hilfslinien
1,0 (1:1)
1,25 (5:4)
@@ -689,7 +630,6 @@
2,33 (21:9)
2,35 (47:20)
2,4 (12:5)
-
+3 (Hohe Empfindlichkeit)
+2
+1
@@ -697,114 +637,98 @@
-1
-2
-3 (Niedrige Empfindlichkeit)
-
HDR-Kontrastverstärkung
Verwendet einen Algorithmus zur Verstärkung des HDR-Kontrasts. Das kann die Aufnahme verbessern, wenn eine Szene einen sehr hohen Dynamikumfang hat aber einen "HDR-Look" bekommen soll.\n%s
Aus
- Smart
+ Intelligent
Immer
-
Video-Format
Video- und Audio-Dateiformat and -Codecs\n%s
-
Standard
MPEG4 H264
MPEG4 HEVC
3GPP
WebM (Audio nicht unterstützt)
-
Einstellungsmanager
-
Sichere Einstellungen
- Sichere alle Einstellungen von Open Camera in eine Datei
+ Sichere alle Einstellungen von Camera in eine Datei
Name der Einstellungsdatei
-
Einstellungen wiederherstellen
Stelle zuvor gesicherte Einstellungen wieder her. Alle aktuellen Einstellungen werden durch die gesicherten ersetzt!
Diese Option erlaubt die Auswahl einer zuvor gespeicherten Einstellungsdatei. Vorsicht! Alle aktuellen Einstellungen werden überschrieben, wenn eine Einstellungsdatei geladen wird!
-
Gesicherte Einstellungen
Fehler beim Speichern der Einstellungen
Fehler beim Laden der Einstellungen
- Kein Datei-Dialog verfügbar, das Gerät unterstützt diese Funktion nicht.
-
+ Kein Datei-Dialog verfügbar, das Gerät unterstützt diese Funktion nicht
Bild-Format
JPEG
WebP
PNG
-
NR-Modus
Normal
Dunkelheit
-
Oberfläche für Linkshänder
Oberfläche für Rechtshänder
Icons oben (Portrait)
-
Zeige Icon für Gesichtserkennung
Zeigt ein Icon an zum Ein- und Ausschalten der Gesichtserkennung
- Aktiviere die Gesichtserkennung
- Deaktiviere die Gesichtserkennung
+ Aktiviere die Gesichtserkennung
+
+ Deaktiviere die Gesichtserkennung
+
Gesichtserkennung aktiv
Gesichtserkennung inaktiv
-
Zeige Icon für Horizontalausrichtung
Zeigt ein Icon an zum Ein- und Ausschalten der Horizontalausrichtung. Wenn die Horizontalausrichtung aktiviert ist, werden Fotos so rotiert, dass der Horizont waagerecht ist.
- Aktiviere die Horizontalausrichtung
- Deaktiviere die Horizontalausrichtung
-
+ Aktiviere die Horizontalausrichtung
+
+ Deaktiviere die Horizontalausrichtung
+
Zeige Icon für Fotostempel
Zeigt ein Icon zum Ein- und Ausschalten des Fotostempels
- Aktiviere Fotostempel
- Deaktiviere Fotostempel
+ Aktiviere Fotostempel
+
+ Deaktiviere Fotostempel
+
Fotostempel ein
Fotostempel aus
-
Zeige Icon für eigenen Foto-Textstempel
Zeigt ein Icon für den Fotostempel mit selbst erstelltem Text
-
Zeige Icon für die Sperre des automatischen Weißabgleichs
Zeigt ein Icon für Sperrung oder Freigabe des automatischen Weißabgleichs
Sperre für autom. Weißabgleich
Freigabe für autom. Weißabgleich
Weißabgleich gesperrt
Weißabgleich aktiv
-
Zeige Icon zur Deaktivierung der automatischen Belichtung
Zeigt ein Icon für Sperrung oder Freigabe der automatischen Belichtung
Autom. Belichtung aktiv
-
Dunkel-Modus: Bitte Kamera still halten
-
- Pano
+ Pano
+
Panorama
-
Bluetooth-LE-Fernsteuerung…
Aktiviere die Bluetooth-LE-Fernsteuerung
Aktiviere die Gerätesteuerung per Bluetooth-LE (BLE)
Typ des zu steuernden Geräts
-
BLE wird nicht unterstützt
BLE-Geräte-Scan
Bluetooth wird nicht unterstützt.
Unbekanntes Gerät
Blende Bildschirms ab, wenn Fernsteuerverbindung abbricht
- Tipp: Setze die Standard-Helligkeit auf minimal bevor du Open Camera startest.
+ Tipp: Setze die Standard-Helligkeit auf minimal bevor du Camera startest.
Setze Salzwasser zur Tiefenberechnung
Für Unterwassergehäuse, verbessert die Genauigkeit bei korrekter Auswahl der Wasserart.
Fernsteurung verbunden
-
Verwende Adressen
Zeige zusätzlich zur GPS-Position die zugehörige Adresse an
Bevorzuge Adressdaten vor GPS-Koordinaten
Zeige keine Adressdaten an
-
Zeige Standortdaten-Icon
- Zeige ein Icon mit dem die Erfassung von Standortdaten (Geotagging) ermöglicht wird.
+ Anzeigen eines Symbols, mit dem die Erfassung von Standortdaten (Geotagging) an- und ausgeschaltet werden kann
Speichere Standortdaten
Beende das Speichern von Standortdaten
-
Zeige ein Histogramm
Zeigt ein Farb-Histogramm an\n%s
Aus
@@ -813,101 +737,83 @@
Wert (Maximum)
Intensität (Durchschnitt)
Helligkeit (Durchschnitt des Min.-Max.)
-
Zeige Zebrastreifen
Zeigt in der Vorschau Zebrastreifen in den überbelichteten Stellen der Aufnahme.\n%s
Aus
- 70%
- 80%
- 90%
- 93%
- 95%
- 97%
- 98%
- 99%
- 100%
-
+ 70%
+
+ 80%
+
+ 90%
+
+ 93%
+
+ 95%
+
+ 97%
+
+ 98%
+
+ 99%
+
+ 100%
+
Fokus-Peaking
Fokus-Peaking hebt scharf abgebildete Konturen hervor. Das ist vorrangig bei manuellem Fokus nützlich und hilft die scharf eingestellten Bereiche des Bilds zu erkennen.\n%s
Aus
An
Fokus-Peaking-Farbe
Bestimmt die Farbe zur Hervorhebung der fokussierten Konturen.\n%s
-
- Verbleibende
-
+ Verbleibende
+
Kamera-Vorschau…
-
Blitz-Optionen
Zeige Blitz-Icon
- Zeigt Icon für die Blitz-Optionen-Auswahl direkt auf dem Bildschirm, anstelle der Auswahl per Popup-Menü.
-
+ Anzeigen eines Symbols für die Blitz-Optionen-Auswahl direkt auf dem Bildschirm, anstelle der Auswahl per Popup-Menü. Beachte, dass die Taschenlampe nicht verfügbar ist, wenn dieses Symbol aktiviert ist.
RAW für Belichtungsreihe
Speichert die Fotos von Belichtungsreihen (Expo {}) auch im RAW-Format (oder für HDR-Modus, wenn \"Speichere alle Fotos für HDR-Modus\" gewählt ist). Ist die Option \"RAW für Belichtungsreihe\" nicht ausgewählt, werden in diesen Modi nur JPEGs gespeichert.
-
RAW für Fokus-Reihe
Speichert die Fotos von Fokus-Reihen (FOCUS {}) auch im RAW-Format. Ist die Option \"RAW für Fokus-Reihe\" nicht ausgewählt, werden in diesen Modi nur JPEGs gespeichert.
-
RAW-Mode-Optionen
Zeige RAW-Icon
- Zeigt Icon für die RAW-Mode-Auswahl direkt auf dem Bildschirm.
-
+ Anzeigen eines Symbols für die RAW-Mode-Auswahl direkt auf dem Bildschirm
Momentane Fernsteurung:
Scan
-
Schattierter Text
Normaler Text
Text mit schatiertem Hintergrund
-
Speichere Bilder…
-
Panorama fertigstellen
Panorama abbrechen
Panorama abgebrochen
Panorama-Bild konnte nicht erstellt werden
-
Panorama Auto-Crop
Im Panorama Modus wellige Bereiche entfernen\n%s
-
Um ein Panoramabild aufzunehmen, halte das Gerät im Hochformat und klicke auf den Auslöser zum Start des Panoramas. Drehe dann das Gerät entweder nach links oder rechts, um den zentrierten weißen Kreis über den blauen Punkt zu bewegen. Nachdem jedes neue Bild aufgenommen wurde, drehe das Gerät weiter, um jeden neuen blauen Punkt, der nacheinander erscheint, abzudecken.\n\nKlicke auf das Häkchen-Symbol, um das Panorama zu speichern oder auf das Kreuz-Symbol, um abzubrechen.\n\nBeachte, dass die Verarbeitung und Speicherung von Panoramafotos Zeit in Anspruch nehmen kann.
-
Panorama Originalbilder
Ob Originalbilder im Panorama-Modus gespeichert werden sollen. Die Speicherung der Panoramafotos wird dadurch langsamer. Ermöglicht auch die Option eine XML-Datei zu speichern, was bei der Meldung von Problemen mit Panoramafotos hilfreich sein kann.\n%s
-
Originalbilder nicht speichern
Originalbilder speichern
Originalbilder und Debug-XML speichern
-
- ID
-
+ ID
+
Suchfeld zur Änderung der Belichtungskorrektur
-
Wähle das Dateiformat zum Speichern der Fotos. Das wirkt sich nur auf \"Standard-\" (nicht RAW-) Fotos aus. Merke: Das PNG-Format ist nicht verlustlos, es wird aus einem JPEG mit 100%%iger Qualität konvertiert.\n%s
-
Camera-API
- Wähle das Camera2-API um extra Features wie manuelle Modi für Belichtung, Fokus, Weißabgleich sowie RAW-Format (falls vom Gerät unterstützt) zu nutzen. Die Änderung des API verursacht einen Neustart der App.\n%s
- Original Camera-API
+ Wähle die Kamera2-API, um extra Funktionen wie manuelle Modi für Belichtung, Fokus, Weißabgleich sowie RAW-Format (falls vom Gerät unterstützt) zu nutzen. Die Änderung der API wird einen Neustart der App auslösen.
+\n%s
+ Originale Kamera-API
Camera2-API
-
Foto/Video aufnehmen, wenn ein Geräusch erkannt wird.
Wenn aktiviert, nutze die Mikrofon-Taste auf dem Bildschirm, um die Erkennung zu starten/stoppen.
\n%s
-
- Wenn möglich, nutze eine Adresse bei der Speicherung des GPS Standorts.
- Diese Option erfordert, dass Ihr Gerät Standortdaten über das Internet an einen Dritten überträgt,
- um GPS in eine Adresse umzuwandeln. Siehe https://developer.android.com/reference/android/location/Geocoder .
- Gibt keine Garantien für Verfügbarkeit oder Genauigkeit. Es wird nicht garantiert, dass die Ergebnisse aussagekräftig oder korrekt sind.
- \n%s
-
- Zum Fokussieren berühren und blaue Kamerataste drücken, um Bilder aufzunehmen.
- \n\nUm die maximale Bildschirmhelligkeit zu deaktivieren, siehe Einstellungen/Benutzeroberfläche/\"Maximale Helligkeit erzwingen\".
- Zur Speicherung auf der SD-Karte auf Android 5+, siehe Einstellungen/Mehr Kamera-Einstellungen…/\"Storage Access Framework\".
- Für weitere Hilfe, klicke auf \"Online-Hilfe\" in den Einstellungen.
-
-
+ Wenn möglich, nutze eine Adresse bei der Speicherung des GPS Standorts. Diese Option erfordert, dass Ihr Gerät Standortdaten über das Internet an einen Dritten überträgt, um GPS-Koordinaten in eine Adresse umzuwandeln. Siehe https://developer.android.com/reference/android/location/Geocoder. Es gibt keine Garantien für Verfügbarkeit oder Genauigkeit. Es wird nicht garantiert, dass die Ergebnisse aussagekräftig oder korrekt sind.
+\n%s
+ Zum Fokussieren berühren, und die weiße Kamerataste drücken, um Bilder aufzunehmen.
+\n
+\nUm die maximale Bildschirmhelligkeit zu deaktivieren, siehe Einstellungen/Benutzeroberfläche/„Maximale Helligkeit erzwingen“. Zur Speicherung auf der SD-Karte auf Android 5+, siehe Einstellungen/Mehr Kamera-Einstellungen…/„Storage Access Framework“. Für weitere Hilfe tippe auf „Online-Hilfe“ in den Einstellungen.
Wähle eine Fernsteuerung
-
REC709
sRGB
Gamma
@@ -923,54 +829,116 @@
2,4
2,6
2,8
-
Nichts ausblenden
Nur Navigationstasten auf dem Bildschirm dimmen
Nur Navigationstasten ausblenden
Alle Einstellelemente ausblenden
Alles ausblenden
-
Geisterbild-Durchsichtigkeit
Alpha-Wert für Geisterbilder. Umso niedriger der Wert, desto transparenter das Geisterbild.\n%s
-
Zebrastreifen-Vordergrundfarbe
Zu verwendende Vorderundfarbe für Zebrastreifen.\n%s
Zebrastreifen-Hintergrundfarbe
Zu verwendende Hintergrundfarbe für Zebrastreifen.\n%s
-
Schwarz
Rot
Orange
Transparent
Weiß
-
Externe Kamera
Ultraweit
-
Zu externer Kamera wechseln
Kamera wechseln
Zwischen mehreren Kameras wechseln
Tasten für mehrere Kameras
Falls aktiviert, werden verschiedene Tasten verwendet, um zwischen (mehreren) Front- und Rück-Kameras zu wechseln. Falls deaktiviert, rotiert die Taste zum Wechsel der Kamera durch alle Kameras hindurch.
-
Kamera-ID anzeigen
Aktuelle Kamera-ID auf dem Bildschirm anzeigen
-
Aktionen über langen Tastendruck erlauben
Ob Aktionen durch langen Tastendruck aktiviert werden(z.B. Langer Druck auf Gallery-Symbol zur Änderung des Speicherortes).
-
Blende
-
4K UHD
Bitrate
Framerate
Slow-Motion
-
Eigentliche Eulerwinkel speichern
Speichern der drei Euler-Winkel (Drehlage des Geräts im EXIF Benutzerkommentar des Fotos (nur im JPEG-Format)
-
Keine
Lautes Geräusch
- Sprachkommando: \"cheese\"
-
-
+ Sprachkommando: \"cheese\"
+
+ Für das Speichern von Dateien wie Fotos oder Videos ist eine Lese-/Schreibberechtigung erforderlich
+ Die Berechtigung zur Nutzung des Mikrofons ist erforderlich, um Videos mit Ton aufzunehmen oder die Optionen der „Audiosteuerung“ zu nutzen
+ Der Algorithmus, den der Kameratreiber für Kantenglättung verwenden sollte. Kantenglättung verbessert die Schärfe und die Details des aufgenommenen Bildes. (Diese Einstellung wird im NR Fotomodus ignoriert.)
+\n%s
+ Überspringen
+ Weiter
+ Zurück
+ Nutzungsbedingungen
+ Information über Kamera
+ Erweiterung: Gesichtsverschönerung
+ X-Bty
+ Erweiterung: Bokeh
+ X-Bokeh
+ Erweiterung: Nacht
+ X-Nacht
+ Erweiterung: HDR
+ X-HDR
+ Erweiterung: Auto
+ X-Auto
+ Bluetooth Suche- und Verbindungsberechtigungen sind notwendig, damit Bluetooth LE-Fernbedienungen gefunden und verbunden werden können.
+ Kantenglättung-Algorithmus
+ Autoren
+ Kamera ist eine Abänderung von Camera
+ Build-Version
+ Material-Design-Symbole von Google
+ Kamera © 2013–2023 Mark Harman, veröffentlicht unter GPL v3 oder später. Tippe hier für den vollständigen Lizenztext.
+ Kamera
+ Open-Source-Lizenzen
+ Lizenz
+ Quellcode
+ Kamera verwendet Symbole von Googles Material Design-Icons (https://developer.android.com/design/downloads/index.html , https://design.google.com/icons/ , https://github.com/google/material-design-icons/ , https://google.github.io/material-design-icons/) unter der Apache Lizenz Version 2.0. Einige Symbole wurden verändert. Tippe hier für den vollständigen Lizenztext.
+ Unbekanntes Gerät (Bluetooth-Verbindungserlaubnis nicht verfügbar)
+ Suchleiste zum Ändern des aktuellen Präferenzwertes
+ Dummy-HDR-Aufnahme/Expositionsberichtigung aktivieren
+ LINSEN
+ Wenn dein Gerät Probleme bei der Aufnahme von HDR oder Expo-Foto-Modi hat (wenn Expo-Bilder mit derselben Belichtung herauskommen), versuche, diese Option zu aktivieren. Dies funktioniert nur, wenn die schnelle HDR/Expo-Option unterhalb auch aktiviert ist.
+ Standard
+ Entfernen, außer Datum und Zeit
+ Für bessere Fotos die Kamera bitte ruhig halten.
+ HDR Dynamikkompression
+ Hiermit können die EXIF-Metadaten von JPEG-Fotos entfernt werden. Dies entfernt nicht die EXIF-Kennzeichen aus anderen Einstellungen, wie z.B. Standort oder Geotagging. Diese anderen Einstellungen sind unabhängig und setzen sich über diese Einstellung hier hinweg. RAW/DNG und Video werden durch diese Einstellung nicht betroffen.
+\n%s
+ EXIF-Daten nicht entfernen
+ Einfache Klammer
+ EXIF-Daten des Gerätes entfernen
+ Der benutzte Algorithmus für Dynamikkompression im HDR Fotomodus:
+\n%s
+ Exponentiell
+ EXIF-Daten entfernen
+ QR Code
+ Einen Kontakt hinzufügen
+ Einen Kontakt hinzufügen
+ Ein Kalenderereignis hinzufügen
+ Dieses Ereignis dem Kalender hinzufügen
+ Diesen Ort öffnen
+ Diesen Ort öffnen
+ Ein neues E-Mail versenden
+ Öffnet ein neues E-mail an die enthaltenen Adressen
+ Diese ISBN anschauen
+ Diese ISBN auf isbnsearch.org suchen
+ Produkt suchen
+ Den ID Barcode dieses Produktes suchen
+ Ein neues SMS senden
+ Sendet ein neues SMS an die enthaltenen Empfänger
+ Diese Telefonnummer anrufen
+ VIN suchen
+ Diese VIN (Fahrzeug-Identifikationsnummer) suchen
+ Diese Telefonnummer anrufen
+
+ IHRE PRIVACY-SCHALTER MUSS AKTIVIERT SEIN
+ DA DIE KAMERA NICHT VERFÜGBAR IST ;-)
+
+ BITTE WARTEN SIE 5 SEKUNDEN AUF IHRE KAMERA
+ UM SIE ZU LADEN, DA SIE SOEBEN AKTIVIERT WURDE
+
\ No newline at end of file
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index f6591273611c4afe28f9875ce8ad6ddfca1ef670..ff17f82279f2c28ab61e6c83a58ac64635b4ec5b 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -1,7 +1,7 @@
- Open Camera
+ Camera
Ρυθμίσεις
Ρυθμίσεις Παραθύρου
OK (Καμμία εμφάνιση αυτού του μυνήματος ξανά)
@@ -117,7 +117,7 @@
Πρόθεμα για την αποθήκευση αρχείων βίντεο
Μορφή ώρας για το όνομα του αρχείου
εμφάνιση της κάμερας όταν κλειδώθηκε
- Αν είναι αυτή η ρύθμιση ενεργή, το Open Camera θα εμφανίζετε πάνω από κάθε οθόνη κλειδώματος (μπορείτε ακόμα να ξεκλειδώσετε για να αποκτήσετε πρόσβαση στις Ρυθμίσεις κ.λ.π.)
+ Αν είναι αυτή η ρύθμιση ενεργή, το Camera θα εμφανίζετε πάνω από κάθε οθόνη κλειδώματος (μπορείτε ακόμα να ξεκλειδώσετε για να αποκτήσετε πρόσβαση στις Ρυθμίσεις κ.λ.π.)
Αυτόματη εστίαση κατά την εκκίνηση
Με αυτή την ρύθμιση η αυτόματη εστίαση, θα ενεργοποιηθεί όταν ανοίξετε την Κάμερα. Αν έχετε πρόβλημα με το flash κατά την εκκίνηση, απενεργοποιήστε αυτή την επιλογή
Κλείδωμα της οθόνης κατά την εγγραφή βίντεο
@@ -216,13 +216,13 @@
Πηγή ήχου
Χρήση μικροφώνου για την καταγραφή ήχου\n%s
Κανάλια ήχου
- Καθορισμός μονοφωνικής ή στερεοφωνικής καταγραφής ήχου (ο ήχος στέρεο υποστηρίζεται μόνο σε ορισμένες συσκευές)\n%s
+ Καθορισμός μονοφωνικής ή στερεοφωνικής καταγραφής ήχου (ο ήχος στέρεο υποστηρίζεται μόνο σε ορισμένες συσκευές)
Φλας κατά την καταγραφή βίντεο
Ενεργοποίηση τού φλας κατά την καταγραφή των βίντεο (μπορεί να χρησιμοποιηθεί αν γίνεται καταγραφή από απόσταση)
Διάφορα
Διαδικτυακή Βοήθεια
- Ανοιγμα της Open Camera ιστοσελίδας στο πρόγραμμα περιηγησής σας
+ Ανοιγμα της Camera ιστοσελίδας στο πρόγραμμα περιηγησής σας
Δωρεά για υποστήριξη της ανάπτυξης
Αν σας αρέσει αυτή η εφαρμογή, παρακαλούμε κάντε μια δωρεά για υποστήριξη της ανάπτυξης. Μπορείτε να το κάνετε αυτό μέσω της επιλογής "Δωρεά" - κάντε αυτή την επιλογή για να ανοίξει η σελίδα δωρεών. Ευχαριστούμε!
Χρήση τού Camera2 API
@@ -230,8 +230,8 @@
Σχετικά με
Εφαρμογή και πληροφορίες εντοπισμού σφαλμάτων
Ρυθμίσεις επαναφοράς
- Επαναφορά όλων των Open Camera ρυθμίσεων στις προεπιλογές
- Είστε σίγουρος οτι θέλετε να γίνει, επαναφορά όλων των Open Camera ρυθμίσεων στις προεπιλογές;
+ Επαναφορά όλων των Camera ρυθμίσεων στις προεπιλογές
+ Είστε σίγουρος οτι θέλετε να γίνει, επαναφορά όλων των Camera ρυθμίσεων στις προεπιλογές;
Διαθέσιμο
Μη διαθέσιμο
@@ -445,5 +445,13 @@
Υψηλή Ταχύτητα
Προεπιλογή
+ About
+ Δημιουργία έκδοσης
+ Η κάμερα είναι διχαλωτή από το Camera
+ Συγγραφέας
+ Κωδικός πηγής
+ Άδεια
+ Πληροφορίες κάμερας
+ Όροι υπηρεσίας
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 9f0c56c487fb1eac11015c33fb62d614b1f7a81b..1a6bcc3638ff6e9e8e1051b9ff5ac01f6782d262 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -1,29 +1,30 @@
-
+
-
- Open Camera
+ Cámara
Ajustes
Ajustes de ventana emergente
OK (Este mensaje no se mostrará de nuevo)
-
- Encendido
- Apagado
-
+ Encendido
+
+ Apagado
+
Guardar en:
- Limpiar historial de carpetas
- Desea limpiar el historial de carpetas?
+ Borrar el historial de carpetas
+ Deseas borrar el historial de carpetas?
Seleccione otra carpeta
Cambiar ruta de guardado a:
- La grabación de video se ha detenido
- repite para ir
- Error al volver a conectar a la cámara
+ Se detuvo la grabación de vídeo
+ repeticiones por hacer
+
+ Falla en la reconexión con la cámara
Error, el archivo de vídeo puede estar dañado
- no soportado en tu dispositivo
+ no es soportado en tu dispositivo
+
Error desconocido, vídeo detenido
Servidor caído, video detenido
- El video alcanzo la máxima duración
- El video alcanzo el máximo tamaño
- Compensar exposición
+ El video alcanzó la máxima duración
+ El video alcanzó el tamaño máximo
+ Compensación de exposición
FPS
Distancia focal
Infinito
@@ -34,95 +35,96 @@
Exposición bloqueada
Exposición desbloqueada
Temporizador cancelado
- Modo ráfaga cancelado
+ Modo de repetición cancelado
Temporizador iniciado
Error al guardar el video
Error al grabar el video
Grabando
- Lo lamento
+ Perdón
Error al guardar foto
Error al guardar la foto RAW
- Error del nivel automático
- Error al iniciar la vista previa de la cámara
+ Fallo en el autonivelado
+ Fallo al iniciar la vista previa de la cámara
Tomando foto
Error al tomar foto
Ubicación GPS no está disponible
Foto eliminada
- No hay una aplicación de galería disponible
- La pantalla esta bloqueada\ndeslize el dedo por la\npantalla para desbloquear
+ No hay aplicación de galería disponible
+ La pantalla esta bloqueada
+\ndesliza para desbloquear
Desbloqueado
- Lo sentimos, auto-estabilizar no esta\nsoportado en este dispositivo
+ Perdón, el nivelador automático no es compatible
+\ncon este dispositivo
Audio deshabilitado
Duración máxima
Efecto de color
Modo de escena
Balance de blancos
-
Ángulo
Dirección
FALLO AL ABRIR CÁMARA.
- PUEDE ESTAR LA CÁMARA EN USO
+ LA CÁMARA PUEDE ESTAR EN USO
POR OTRA APLICACIÓN?
ISO
Zoom
Libre
[BLOQUEADO:
Desliza para desbloquear]
-
- Error en el estampado de la información
- m
-
+ No se pudo estampar la información en la foto
+ m
+
Efectos de cámara
- Nivel automático
- Las Imágenes serán rotadas automáticamente para que esten niveladas perfectamente (sólo fotos) (la toma de fotos es mas lenta y puede que falle en dispositivos con poca memoria)
+ Autonivelador
+ Las imágenes se rotarán para que estén niveladas automáticamente (sólo fotos) (es más lento tomar fotos y puede fallar en dispositivos con poca memoria)
Aplicar un efecto de color
Aplica el efecto de color seleccionado a la foto
- Aplicar modo de escena
+ Aplicar un modo de escena
Optimiza la foto para distintas escenas
- Establece el balance de blancos
- Elige un ajuste de balances de blancos
- Establecer ISO
- Mayor valor significa mayor sensibilidad a la luz (puede no funcionar en algunos dispositivos)
- Establece la compensación de la Exposición
- Establece a 0 para la compensación de la Exposición por defecto
+ Ajusta el balance de blancos
+ Elige una opción para ajustar el balances de blancos
+ Ajustar ISO
+ Un valor más alto significa más sensibilidad a la luz (puede que no funcione en algunos dispositivos)
+ Ajusta la compensación de la exposición
+ Ajuste a 0 para la compensación de la exposición por defecto
Bloquear la orientación de fotos y videos
- Si se establece, la orientación del dispositivo será ignorada y la orientación de la foto/video será con respecto a la orientación especificada\n%s
+ Si se ajusta, la orientación del dispositivo será ignorada y la orientación de la foto/video será con respecto a la orientación especificada
+\n%s
Detección de rostro
- Utilice la detección de rostros en lugar de las áreas de enfoque
-
+ Utilizar detección de rostro en lugar de áreas de enfoque
Controles de cámara
Temporizador
Sonido del temporizador
- Sonar cuando el temporizador está contando regresivamente o para el retardo en el modo de ráfaga
+ Sonar cuando el temporizador está en cuenta regresiva o para el retardo del modo de repetición
Cuenta regresiva del temporizador por voz
- Activa la cuenta regresiva por voz para el temporizador o el modo ráfaga (desde 60 segundos)
- Ráfaga
- Intervalo de modo de ráfaga
+ Activa con la voz la cuenta atrás para el temporizador o el retardo del modo de repetición (a partir de 60 segundos)
+ Repetir
+
+ Intervalo de modo de repeticion
Más controles de cámara…
Tocar para capturar
- Toma una foto simplemente tocando o tocando dos veces la pantalla
- Pausar después de tomar la foto
- Pause la pantalla después de tomar una foto, con la opción de compartir o eliminar la foto
+ Toma una foto simplemente tocando una o dos veces en la pantalla
+ Pausar después de tomar foto
+ Pause la pantalla después de tomar una foto, con opción de compartir o eliminar la foto
Sonido del obturador
- Reproducir un sonido al tomar una foto
+ Sonido al tomar una foto
Teclas de volumen
Opciones de control de audio
- Sensibilidad de control de audio
- Sensibilidad al nivel de ruido para la opción de audio (ruido fuerte)
+ Sensibilidad del control de audio
+ Sensibilidad del nivel de ruido para la opción de audio (ruido fuerte)
Carpeta de almacenamiento
Carpeta para guardar los archivos de foto/video
- Utilice el Framework de Acceso del Almacenamiento para guardar fotos y videos
- Prefijo de foto
+ Si se debe usar Storage Access Framework para guardar fotos y vídeos. Debe estar activado si deseas guardar en tarjetas SD externas. En Android 10+ esta opción debe estar activa si deseas guardar en otra carpeta aparte de DCIM.
+ Guardar prefijo de foto
Prefijo utilizado para el nombre de las fotos
- Prefijo de video
+ Guardar prefijo de video
Prefijo utilizado para el nombre de los videos
Formato de hora para el nombre de archivo
Mostrar cámara aunque el dispositivo esté bloqueado
- Si está activado, Open Camera se mostrará por encima de la pantalla de bloqueo (sin embargo tendrá que desbloquear para acceder a la Galería, Ajustes, etc)
+ Si está activado, la cámara se mostrará por encima de la pantalla de bloqueo (tendrás que desbloquear para acceder la Galería, Ajustes, etc)
Realizar autoenfoque al iniciar
- Realice un autoenfoque cuando Open Camera se inicie. Si presenta el problema donde el flash se enciende al iniciar, desactive esta opción
+ Si deseas auto-enfoque cuando se inicia la cámara. Si tienes el problema de que el flash se enciende al iniciar, desactiva esta opción
Bloquear pantalla al grabar video
- Al grabar vídeo, la interfaz de pantalla se bloqueará para evitar detener accidentalmente la grabación. Desliza la pantalla para desbloquearla. Tenga en cuenta que la grabación de video siempre se detendrá si la aplicación entra en segundo plano o la pantalla se borra.
+ Al grabar vídeo, la pantalla se bloqueará para evitar detener accidentalmente la grabación. Desliza sobre la pantalla para desbloquear. Ten en cuenta que la grabación de vídeo siempre se detendrá si la aplicación pasa a segundo plano o se apaga la pantalla.
Rotar vista previa
Opción para rotar la vista previa (no afectará a las fotos/videos resultantes)\n%s
Interfaz de pantalla…
@@ -130,10 +132,10 @@
Ubicación de la Interfaz de Usuario
Modo inmersivo
Mostrar zoom
- Muestra el nivel de zoom actual de la cámara en la pantalla (cuando se amplía)
+ Mostrar nivel de zoom actual de la cámara en pantalla (cuando se amplía)
Mostrar controles zoom -/+
- Muestra los botones para el control del zoom -/+
- Mostrar control deslizante del zoom
+ Muestra los botones -/+ para el control del zoom
+ Mostrar control deslizante de zoom
Muestra el control deslizante para controlar el zoom
Mostrar ISO
Muestra el nivel de ISO actual (requiere API de Camera2)
@@ -152,27 +154,29 @@
Mostrar batería
Muestra el nivel actual de la batería en la pantalla
Mostrar cuadrícula
- Cuadrícula
+ Cuadrícula
+
Mostrar guía de recorte
Una guía de recorte muestra un rectángulo que indica la relación de aspecto especificada, útil si planea recortar la foto/video posteriormente con una relación de aspecto diferente. Requiere modo de foto WYSIWYG, o estar en modo de video\n%s
- Mostrar mensajes \"toast\"
- Muestra mensajes emergentes \"toast\"
+ Mostrar mensajes en pantalla
+ Si se mostrarán mensajes de información temporales en pantalla
Mostrar animación en miniatura
Muestra la animación en miniatura en movimiento al tomar una foto
Mostrar borde cuando se toma una foto
Muestra un borde en la pantalla para indicar la captura de una foto
Mantener pantalla encendida
- Si se activa, la pantalla no se apagará mientras la interfaz de usuario principal de Open Camera esté activa
+ Si se activa, la pantalla no se apagará mientras la interfaz de usuario principal de Camera esté activa
Forzar brillo al máximo
Forzar la visualización de la pantalla a tener el brillo máximo, en lugar del valor predeterminado del dispositivo
-
Configuración de fotos y videos
Configuración de fotos…
Configuración de videos…
Configuración de ubicación…
- Resolución
+ Resolución
+
Calidad de la imagen
- Establece la calidad JPEG de las imágenes fotográficas guardadas (el valor predeterminado es 90 %%)\n%s
+ Establece la calidad JPEG de las imágenes fotográficas guardadas (el valor predeterminado es 90 %%)\n%s
+
RAW
Almacenar datos de ubicación (Geotagging)
Almacene los datos de ubicación del GPS en las fotos/videos
@@ -197,13 +201,14 @@
Guarde fotos con un subproceso en segundo plano (para una operación más rápida)
Resolución de video
Forzar 4K UHD vídeo (experimental)
- Activa la resolución 3840x2160 para la grabación de vídeos en la cámara trasera - esto solo funcionara si tu dispositivo lo soporta
- Activar Estabilización de Vídeo
- La estabilización de vídeo reduce las vibraciones
+ Activa la resolución 3840x2160 para la grabación de vídeo en la cámara trasera - esta opción es un hack que puede permitir que los dispositivos 4K en cámaras 4K que no exponen la opción de aplicaciones de la cámara de terceros. Esto no está garantizado que funcione, por favor prueba antes.
+ Activar estabilización de Vídeo digital
+ La estabilización de vídeo reduce las sacudidas debidas al movimiento de la cámara tanto en la vista previa como en los vídeos grabados. Esto puede ser innecesario si tu dispositivo es compatible con estabilización óptica de imagen (OIS).
Tasa de bits del video (aprox)
Establece la tasa de bits aproximada de los videos (mayor tasa significa una mejor calidad, pero ocupa más espacio en disco, puede causar que la grabación del video falle si la tasa de bits no es compatible)\n%s
Frecuencia de fotogramas del vídeo (aprox.)
- Establece la velocidad de fotogramas (FPS) de los videos (puede ser aproximada, no hay garantía que se logre, puede causar que la grabación del video falle si la velocidad de fotogramas no es compatible)\n%s
+ Ajusta la velocidad de cuadros por segundo (FPS) de los vídeos (puede ser aproximada, no se garantiza que se alcance y puede hacer que falle la grabación de vídeo si no se admite la velocidad de cuadros por segundo). Comprueba los vídeos resultantes para conocer la frecuencia de imagen real utilizada. Ten en cuenta que este ajuste se ignora en los vídeos a cámara lenta.
+\n%s
Máxima duración de un video
La grabación de video se detendrá después de la duración especificada\n%s
Reiniciar el vídeo después de la duración máxima
@@ -215,15 +220,15 @@
Grabar audio
Grabe audio durante la grabación del video
Fuente del audio
- Micrófono a utilizar para grabar audio\n%s
+ Micrófono que se utilizará para grabar audio. Ten en cuenta que el comportamiento exacto de las opciones depende de cómo esté implementada la opción en tu dispositivo.
+\n%s
Canales de audio
- Especifique mono o estéreo para grabar audio (estéreo sólo es admitido en algunos dispositivos)\n%s
+ Especifique mono o estéreo para grabar audio (estéreo sólo es admitido en algunos dispositivos)
Flash durante la grabación de video
Si está activado, el flash se activará/desactivará al grabar video (se puede utilizar para indicar que la cámara sigue grabando a distancia)
-
Varios
Ayuda en línea
- Inicie el sitio web de Open Camera en su navegador
+ Inicie el sitio web de Camera en su navegador
Done para apoyar el proyecto
Si te gusta esta aplicación, por favor considera hacer una donación para apoyar el proyecto. Puedes hacerlo comprando mi "aplicación de donación" - haz clic en esta opción para abrir la página de mi aplicación de donación. ¡Gracias!
Utiliza Camera2 API
@@ -231,13 +236,11 @@
Acerca de
Información de aplicación y depuración
Restablecer ajustes
- Restablece todos los ajustes de Open Camera a la configuración predeterminada
- Estás seguro de que quieres resetear todos los ajustes de Open Camera a los predefinidos?
-
+ Restablece todos los ajustes de Camera a la configuración predeterminada
+ Estás seguro de que quieres resetear todos los ajustes de Camera a los predefinidos?
Disponible
No disponible
Copiar al portapapeles
-
Tomar Foto
Galería
Exposición
@@ -250,7 +253,6 @@
Cambiar al modo de foto
Borrar última foto
Compartir Foto
-
Subir Carpeta
Nueva Carpeta
No se puede escribir en esta carpeta
@@ -258,35 +260,34 @@
Introduce un nombre a tu nueva carpeta
Fallo al crear la carpeta
La carpeta ya existe
-
Selecciona el lugar de guardado
Framework de Almacenamiento de Acceso cancelado
- No se puede guardar en esta carpeta
-
+ No se puede guardar en esta carpeta
El permiso de micrófono no está disponible
El permiso de ubicación no está disponible
-
Iniciar la grabación de vídeo
Detener la grabación de vídeo
-
Máximo tamaño de archivo
- MB
- GB
-
+ MB
+
+ GB
+
Comenzar a escuchar el audio
Detener la escucha de audio
Decir \"cheese\"
Introducir un ruido fuerte
-
El nivel automático rotará ligeramente las fotos para que aparezcan niveladas.\n\nTenga en cuenta que las imágenes saldrán con una resolución ligeramente menor (debido a la rotación y al recorte que se requiere).
- Los archivos DNG contienen la información completa sin comprimir y sin procesar de su cámara.\n\nLa mayoría de las aplicaciones de la galería no reconocerán DNG, sino que se deben usar con aplicaciones especializadas.\n\nTenga en cuenta que varias opciones de procesamiento, como el estampado de las fotos y el nivel automático, solo se aplicarán a las imágenes JPEG, y no a las imágenes DNG\n\nLos archivos DNG ocupan mucho espacio; una aplicación de explorador de archivos puede ser útil para transferirlos o eliminarlos.\n\nLos archivos DNG solo se guardan en los modos de fotografía estándar o DRO (D-Range Optimise).
+ Los archivos DNG contienen toda la información de tu cámara sin comprimir ni procesar.
+\n
+\nTen en cuenta que algunas aplicaciones de galería no reconocen los archivos DNG. Las imágenes DNG pueden utilizarse con editores de imágenes especializados.
+\n
+\nTenga en cuenta que varias opciones de procesamiento, como Estampar fotos y Nivel automático, sólo se aplicarán a las imágenes no DNG (JPEG/etc.), y no a las imágenes DNG.
El modo HDR es útil para tomas con una gran variación de brillo. Funciona tomando múltiples tomas con diferentes exposiciones y combinándolas para crear la imagen final.\n\nTenga en cuenta que el HDR no es adecuado para escenas con movimiento rápido y puede dar como resultado una reproducción de color menos precisa.\n\nTomar fotos en modo HDR será más lento.
-
No mostrar de nuevo
-
Modo de foto
- Std
+ Std
+
Standard
HDR
BKT {}
@@ -296,69 +297,57 @@
Reducción de ruido
Estampado en fotos
Guardar todas las imágenes en el modo HDR
- Si se activa, cuando se utilice el modo de foto HDR, se guardarán las tres imágenes de exposición base, así como la foto HDR final. Tenga en cuenta que esto hará que guardar sea más lento, especialmente si también se usan opciones como \"Estampar fotos\" o Nivel automático
-
+ Si se activa, cuando se utilice el modo de foto HDR, se guardarán las tres imágenes de exposición base, así como la foto HDR final. Ten en cuenta que guardar será más lento, especialmente si también se usan opciones como \"Estampar fotos\" o Nivel automático.
PERMISOS NO DISPONIBLES
Permiso requerido
Se requiere el permiso de la cámara para habilitarla
-
Opciones de depuración
Opciones de depuración
Utilizar un método de flash alternativo
Habilitar si su dispositivo tiene un comportamiento erróneo del flash con la API Camera2
-
Horquillado de exposición
Número de imágenes para el modo de horquillado de exposición\n%s
Pasos de horquillado de exposición BKT
Establece el rango de pasos (F/Stop) para el aumento y disminución de luminosidad a realizar en las diferentes imágenes del horquillado\n%s
-
Reducción de ruido original de imágenes
Guardar las imágenes originales en modo de reducción de ruido. Esto puede hacer que el ahorro de fotos sea mucho más lento.\n%s
-
No guardear las imágenes originales
Guardar una sola imagen original
Guardar todas las imágenes originales (lento)
-
- s
-
+ s
+
No hay suficiente espacio libre para grabar vídeo
Vídeo detenido.\nNivel de la batería demasiado bajo
Comprobar batería crítica
Detenga la grabación de vídeo si el nivel de la batería es críticamente bajo. Esto ayuda a reducir el riesgo de que se corrompan los videos si el dispositivo se apaga repentinamente debido a la falta de energía.
-
- Oscuro
- Brillante
+ Oscuro
+
+ Brillante
+
Velocidad de obturación
-
Error grave de la cámara
-
Habilitar ráfagas HDR / exposiciones rápidas
Permite una captura más rápida de las tomas HDR / modo de exposición. Inhabilítelo si su dispositivo tiene problemas al tomar fotografías con los Modos de fotografía HDR o Modos de Exposición.
-
Cámara
Grabar vídeo
Selfie
-
Reflejo en cámara frontal
Refleja imágenes cuando se utiliza la cámara frontal\n%s
-
Calibrar nivel angular
- Esta opción calibra el acelerómetro de su dispositivo, para que el nivel automático y las opciones de nivel/ángulo en pantalla funcionen correctamente.
+ Esta opción calibra el acelerómetro de tu dispositivo, para que el nivel automático y las opciones de nivel/ángulo en pantalla funcionen correctamente
Coloque su dispositivo sobre una superficie horizontal plana para que este sea nivelado (en orientación vertical u horizontal), a continuación seleccione Calibrar.\n\nPresione Reiniciar para eliminar la calibración del dispositivo.\n\nPresione el botón Atrás para cancelar.
Calibrar
Reiniciar
Nivel calibrado
Calibración de nivel reiniciada
-
DRO
-
Mostrar líneas de paso
Muestra líneas horizontales de paso
Mostrar líneas de dirección
Muestra líneas de dirección de la brújula
Subtítulos en video
- Cree un archivo de subtítulos (.SRT) almacenando la fecha y la hora; y también información del GPS si los datos de la ubicación/dirección están permitidos\n%s
-
+ Crea un archivo de subtítulos (.SRT) que almacena la fecha, hora y también información GPS si los datos de ubicación/dirección están activados. (En Android 11+, esta opción requiere más controles de cámara y acceso al almacenamiento habilitados).
+\n%s
Ilimitado
3 segundos
5 segundos
@@ -383,20 +372,15 @@
30 minutos
45 minutos
1 hora
-
Mostra icono para tomar foto
Muestra el icono para tomar fotos y grabar videos. Útil si su dispositivo tiene un botón de obturador de hardware y prefiere usarlo.
-
Vídeo en pausa
Vídeo reanudado
Pausar la grabación de vídeo
Reanudar la grabación de vídeo
-
Capturando…
-
Error al inicializar la escucha de audio
Error al crear la imagen HDR
-
Auto (AWB)
Nublado
Luz día
@@ -406,7 +390,6 @@
Sombra
Atardecer
Luz cálida
-
Acción
Auto
Código de barras (Barcode)
@@ -423,7 +406,6 @@
Estabilizador
Puesta de sol
Teatro
-
Agua
Pizarra negra
Monocromo
@@ -433,10 +415,8 @@
Sepia
Solarizar
Pizarra blanca
-
Qué hay de nuevo:
Donar
-
cara detectada
caras detectadas
@@ -445,26 +425,20 @@
arriba de la pantalla
abajo de la pantalla
en el centro de la pantalla
-
Alta velocidad
-
Autor
Texto para almacenar en los metadatos de la imagen para la etiqueta del Autor (formato JPEG solamente). (Déjelo en blanco para ninguno)
Copyright
Texto para almacenar en los metadatos de la imagen para la etiqueta de Copyright (formato JPEG solamente). (Déjelo en blanco para ninguno)
-
Procesando…
-
JPEG sólo
JPEG y DNG (RAW)
DNG (RAW) sólo
-
Defecto
yyyy-mm-dd (ISO 8601)
dd/mm/yyyy
mm/dd/yyyy
Ninguno
-
Número de fotos
10
12
@@ -476,13 +450,11 @@
5
6
8
-
Velocidad
Normal
Cámara lenta habilitada
Cámara lenta deshabilitada
-
- Flash Off
+ Sin flash
Flash Auto
Flash On
Linterna
@@ -490,19 +462,16 @@
Pantalla Flash Auto
Pantalla Flash ON
Pantalla de la Linterna
-
Reductor de parpadeo
Algoritmos para reducir el parpadeo de la luz.\n%s
50Hz
60Hz
Auto
Apagado
-
Videocámara
Micrófono Externo(si existe)
Entrada de Audio predefinida
Optimizada para voz
-
Default
100kbps
200kbps
@@ -527,7 +496,6 @@
80Mbps
90Mbps
100Mbps
-
Desactivado
2x
3x
@@ -542,7 +510,6 @@
200x
500x
Ilimitado
-
Sin retardo
1s
2s
@@ -560,14 +527,12 @@
30m
1h
2h
-
Predeterminado por el dispositivo
100MB
200MB
300MB
500MB
1GB
-
Ninguno
1 (1:1)
1.25 (5:4)
@@ -579,7 +544,6 @@
2.33 (21:9)
2.35 (47:20)
2.4 (12:5)
-
+3 (alta sensibilidad)
+2
+1
@@ -587,20 +551,380 @@
-1
-2
-3 (baja sensibilidad)
-
Interfaz de usuario para zurdos
Interfaz de usuario para diestros
-
Texto sombreado
Texto plano
-
+ About
+ Versión de compilación
+ Camera es una bifurcación de Camera
+ Autores
+ Código fuente
+ Licencia
+ Información de la cámara
+ Condiciones de servicio
Apagado
Sólo ocultar los botones de navegación en pantalla
Ocultar interfaz de usuario
Ocultar todo
-
Ninguno
Ruido fuerte
- Comando de voz: \"cheese\"
-
-
+ Comando de voz: \"cheese\"
+
+ Se utiliza para la altitud GPS para sello de fotos y subtítulos de vídeo
+\n%s
+ Distancia objetivo del horquillado de enfoque
+ Distancia de la fuente del horquillado de enfoque
+ El permiso de ubicación es necesario para el geoetiquetado (almacenamiento de datos de ubicación en fotos y vídeos, incluidas las opciones de sello y subtítulos). El permiso de ubicación también es necesario (al menos para Android 11 y anteriores) para conectarse a dispositivos de control remoto Bluetooth LE.
+ Perfiles de imagen de vídeo
+ Permitir fotos mientras se graba vídeo
+ No se puede abrir esta imagen
+ Imagen seleccionada
+ Superponer una imagen, para ayudar con la alineación
+\n%s
+ 200
+ 150
+ 100
+ 50
+ 40
+ 30
+ 25
+ 20
+ 15
+ 12
+ 10
+ 8
+ 6
+ 5
+ 4
+ 3
+ 2
+ Número de fotos
+ Etiquetas EXIF personalizadas
+ Por defecto
+ Permite hacer fotos mientras se graban vídeos. Desactiva esta opción si hay problemas con la grabación de vídeo con la API Camera2 activada en tu dispositivo.
+ No se encontró diálogo de archivo en este dispositivo, la opción de imagen Ghost no es compatible
+ Última foto
+ Desactivado
+ Imagen Ghost
+ Acceso al micrófono requerido para grabar vídeo con audio y para utilizar las opciones de \"Control de audio\"
+ Permiso de lectura/escritura requerido para guardar archivos resultantes, como fotos o vídeos
+ Definir perfil de imagen estándar o plana para el modo de vídeo
+\n %s
+ Estándar
+ Registro (Fino)
+ Registro (Bajo)
+ sin ráfaga
+ Registro (Fuerte)
+ Registro (Extra fuerte)
+ Perfil de registro
+ Optimizado para el reconocimiento de voz
+ 150Mbps
+ Mostrar o no el nivel de audio en pantalla al grabar vídeo
+ Mostrar medidor de nivel de audio
+ Registro (Medio)
+ Sin procesar
+ 200Mbps
+ Añadir distancia infinita
+ Enfoque horquillado
+ Dirección del compás
+ Enfoque {}
+ El compás de tu dispositivo necesita calibrarse para mejorar su precisión. Para ello, mueve el dispositivo en forma de 8.
+\n
+\nPrecisión actual:
+ Inestable
+ Baja
+ Media
+ Alta
+ Desconocido
+ Unidad de distancia
+ Metros
+ Pies
+ Si se muestra un histograma de los colores que aparecen en pantalla
+\n%s
+ Mantén la cámara estáble para obtener mejores fotos.
+ Luminosidad
+ Valor (Máximo)
+ Luminosidad (media de mín-máx)
+ Mostrar rayas de cebra
+ 95%
+ 97%
+ 99%
+ 100%
+ Si esta opción está activa, los realces se mostrarán en los bordes enfocados (contornos). Esto es principalmente útil para el enfoque manual, y puede ser utilizado para ayudar a determinar qué regiones de la imagen están enfocadas.
+\n%s
+ Color del pico de enfoque
+ Si se mostrará información sobre nuevas funciones y mejoras cuando la aplicación se ha actualizado
+ Horquilla de enfoque cancelada
+ WebM (audio no soportado)
+ Guardar ajustes
+ Guarda todos los ajustes de la cámara en un archivo
+ Nombre de la configuración guardada
+ Restaurar configuración
+ Restablece los ajustes guardados anteriormente. ¡Esta acción reemplazará todos los ajustes actuales con los ajustes guardados!
+ Esta opción te permite seleccionar uno de los archivos de configuración que guardaste previamente. Ten en cuenta que la selección de un archivo reemplazará todos los ajustes actuales!
+ Configuración guardada
+ Error al restaurar la configuración
+ No se encontró ningún diálogo de archivo en este dispositivo, esta opción no es compatible
+ Formato de imágen
+ WebP
+ Modo NR
+ Poca luz
+ Iconos en la parte superior (retrato)
+ Mostrar icono de detección facial
+ Modo de poca luz: mantén la cámara estáble
+ Escaneo de dispositivos BLE
+ Sugerencia: ajusta el brillo estándar al nivel mínimo antes de iniciar la cámara.
+ Utilizar Saltwater para el cálculo de la profundidad
+ Mostrar o no un icono en pantalla para activar o desactivar la detección de rostros
+ Activar detección de rostro
+ Detección de rostro desactivada
+ Mostrar icono de autonivelación
+ Mostrar o no un icono para activar o desactivar la autonivelación. Si se activa la función de autonivelación, las fotos se rotarán para que se nivelen automáticamente con el horizonte.
+ Activar autonivelación
+ Desactivar autonivelación
+ Si se muestra un icono para activar o desactivar el timbre fotográfico
+ Activar timbre fotográfico
+ Desactivar timbre fotográfico
+ Timbre fotográfico activado
+ Timbre fotográfico desactivado
+ Mostrar texto personalizado para el icono de timbre fotográfico
+ Si se muestra un icono para especificar el texto personalizado a estampar en la foto
+ Mostrar el icono de bloqueo de balance de blancos automático
+ Si se muestra un icono para bloquear o desbloquear el balance de blancos automático
+ Bloquear balance de blancos
+ Desbloquear balance de blancos
+ Balance de blancos bloqueado
+ Balance de blancos desbloqueado
+ Mostrar el icono de bloqueo de exposición automática
+ Si se muestra un icono para bloquear o desbloquear la exposición
+ Mando a distancia Bluetooth LE…
+ Panorama
+ Activar mando a distancia Bluetooth LE
+ Activar mando a distancia Bluetooth LE (BLE)
+ Mostrar icono de datos de localización de la tienda
+ Apagado
+ Si esta opción está activa, se dibujarán rayas de cebra en la pantalla que mostrarán dónde está sobreexpuesta la vista preliminar de la cámara.
+\n%s
+ 80%
+ Ciclo de flash
+ BLE no está soportado
+ Bluetooth no soportado.
+ Si se muestra un icono para activar o desactivar los datos de localización (geoetiquetado)
+ Almacenar datos de ubicación
+ Intensidad (Media)
+ Apagado
+ Pico de enfoque
+ Apagado
+ Qué color utilizar para resaltar los bordes enfocados
+\n%s
+ Resto
+ Previsualización de cámara…
+ Si se muestra un icono para ver las opciones de flash, en lugar de mostrar las opciones de flash en el menú emergente. Ten en cuenta que la linterna no está disponible si se utiliza este icono.
+ Permitir RAW para el horquillado de exposición
+ ft
+ Muestra el diálogo de Novedades
+ Algoritmo de modo borde
+ Algoritmo que el controlador de la cámara debe utilizar para aplicar la mejora de bordes. Esta función mejora la nitidez y los detalles de la imagen capturada. (Este ajuste se ignora en el modo de fotografía NR.)
+\n %s
+ Procesando ajustes…
+ Algoritmo de reducción de ruido
+ Algoritmo que el controlador de la cámara debe utilizar para aplicar la reducción de ruido. Esta función intenta mejorar la calidad de la imagen eliminando el ruido excesivo añadido por el proceso de captura, especialmente en condiciones de oscuridad. (Tenga en cuenta que esto no está relacionado con el modo de foto con reducción de ruido, y de hecho este ajuste se ignora en el modo de foto NR).
+\n%s
+ Estándar
+ Rápido
+ Asistente de enfoque
+ Si se debe hacer zoom al ajustar la distancia de enfoque manual
+\n%s
+ Apagado
+ Aumentar o disminuir la compensación de exposición
+ Previo
+ 0.5s
+ 2GB
+ 5GB
+ 9GB
+ Mejora de contraste HDR
+ Cuándo utilizar un algoritmo de mejora de contraste para HDR. Esto puede mejorar la apariencia en casos en que haya un rango dinámico muy alto en la escena, y también da un aspecto HDR a los resultados.
+\n%s
+ Apagado
+ Inteligente
+ Siempre
+ Formato de video
+ Formato de archivo de vídeo, audio y códecs
+\n%s
+ Estándar
+ Mostrar ícono de flash
+ Encendido
+ Colores RGB
+ Preferir dirección a coordenadas GPS
+ Conectado a distancia
+ Dispositivo desconocido
+ Tipo de dispositivo remoto
+ Mínimo
+ Siguiente
+ Desactivar detección de rostro
+ Detección de rostro activada
+ Panorama
+ Mostrar dirección si es posible, además de las coordenadas GPS
+ Apagado
+ Alta calidád
+ Dejar de almacenar datos de localización
+ Mostrar un histograma
+ 2x
+ Administrador de ajustes
+ Error al guardar la configuración
+ Desbloquear exposición
+ Atenuar la pantalla si el mando se desconecta
+ Para carcasas subacuáticas, mejora la precisión si se selecciona el tipo de agua correcto.
+ Usar direcciones
+ No mostrar dirección
+ 4x
+ 2 (2:1)
+ MPEG4 H264
+ MPEG4 HEVC
+ 3GPP
+ JPEG
+ PNG
+ Normal
+ Mostrar icono de timbre en foto
+ 70%
+ 90%
+ 93%
+ 98%
+ Permitir RAW para el horquillado de enfoque
+ Si la opción RAW debe aplicarse también para el modo fotográfico de horquillado de exposición (o para el modo HDR cuando \"Guardar todas las imágenes para el modo HDR\" está activado). Si esta opción está desactivada, sólo se guardarán JPEG en esos modos de foto.
+ Si la opción RAW debe aplicarse también al modo de foto de horquillado de enfoque. Si esta opción está desactivada, sólo se guardarán JPEG en modos de horquillado de enfoque.
+ Si se muestra un icono en la pantalla para ver los modos RAW
+ Guardando imágenes…
+ Mando actual:
+ Terminar panorama
+ Panorama cancelado
+ Panorama de auto-recorte
+ Guardar imágenes originales
+ Para modo panorámico, si se eliminan los límites ondulados
+\n%s
+ Para tomar una imagen panorámica, mantén tu dispositivo en posición vertical y pulsa tomar foto para iniciar la panorámica. A continuación, gira el dispositivo hacia la izquierda o la derecha para mover el círculo blanco centrado sobre el punto azul. Después de capturar cada nueva imagen, sigue girando el dispositivo para cubrir cada nuevo punto azul que aparezca.
+\n
+\nPulsa tomar foto al final para guardar la panorámica, o en el icono de la cruz para cancelar.
+\n
+\nTen en cuenta que las fotos panorámicas tardan en procesarse y guardarse.
+ Imágenes panorama originales
+ Si se guardan las imágenes originales en modo panorámico. Ten en cuenta que guardar las fotos panorámicas es más lento. También permite la opción de guardar un archivo XML que puede ser útil para reportar problemas con el modo panorama.
+\n%s
+ ID
+ Selecciona el formato utilizado para guardar las fotos. Esto afecta las fotos \"estándar\" (no RAW). Sólo JPEG permite guardar metadatos Exif. Ten en cuenta que el formato PNG no es realmente sin pérdidas, sino que se convierte a partir de un JPEG con una calidad del 100%.
+\n%s
+ No guardar imágenes originales
+ Error al crear imágen panorama
+ Cancelar panorama
+ Escanear
+ Mostrar ícono RAW
+ Ciclos de modos RAW
+ Texto con fondo sombreado
+ Guarda imágenes originales y el XML de depuración
+ Barra de búsqueda para cambiar la compensación de exposición
+ Cámara API
+ Activa esta opción si tu dispositivo tiene problemas al tomar fotos con los modos HDR o Expo (si las imágenes expo salen con las mismas exposiciones). Solo es relevante si la opción rápida HDR/expo de abajo también está activada.
+ Barra de búsqueda para cambiar el valor de preferencia actual
+ Activar captura ficticia HDR/expo fix
+ Los permisos de escaneo/conexión Bluetooth son necesarios para descubrir y conectarse a dispositivos de control remoto Bluetooth LE.
+ Cambiar cámara
+ Color de fondo de las rayas de cebra
+ Color a utilizar para la franja de fondo cuando se muestran las rayas de cebra.
+\n%s
+ Negro
+ Naranja
+ Transparente
+ Blanco
+ Ultra-ancho
+ ícono de cámaras múltiples
+ Si está activado, utiliza botones separados para cambiar entre la cámara frontal y traseras, y para cambiar entre varias cámaras delanteras y traseras. Si está desactivado, el icono de cambio de cámara pasará por todas las cámaras.
+ Mostrar ID de la cámara
+ Mostrar número de identificación de la cámara actual en pantalla
+ Permitir acciones de pulsación larga
+ Permitir acciones de pulsación larga (por ejemplo, pulsación larga en galería para cambiar donde guardar).
+ Velocidad de cuadro
+ Guardar guiñada, cabeceo y balanceo del dispositivo en el comentario Exif de usuario de la foto (sólo en formato JPEG)
+ Guardar guiñada, cabeceo y balanceo
+ Tasa de bits
+ Cámara lenta
+ Apertura
+ Rojo
+ Cámara externa
+ Cambiar a cámara externa
+ Cambiar entre cámaras múltiples
+ 4K UHD
+ Selecciona Cámara a API para activar funciones adicionales como los modos manuales para la exposición, el enfoque y el balance de blancos, junto con RAW (si el dispositivo lo permite). El cambio de la API provocará un reinicio.
+\n%s
+ Cámara API original
+ Cámara a API
+ Tomar fotos/vídeos cuando se detecta un ruido, o por orden de voz. Cuando está activado, utiliza el botón del micrófono en pantalla para iniciar/detener la escucha.
+\n%s
+ Color usado para la franja de primer plano cuando se muestran rayas de cebra.
+\n%s
+ Toca para enfocar y pulsa el botón blanco de la cámara para tomar fotos.
+\n
+\nPara desactivar el brillo máximo de la pantalla, consulta Ajustes/Guía en pantalla/\"Forzar brillo máximo\". Para guardar en tarjetas SD en Android 5+, consulta Ajustes/Más controles de la cámara/\"Marco de acceso al almacenamiento\". Para obtener más ayuda, haz clic en \"Ayuda en línea\" desde Ajustes.
+ 1.8
+ 2.0
+ 2.1
+ 2.2
+ 2.3
+ 2.4
+ 2.6
+ Si es posible, obtener la dirección a partir del GPS. Ten en cuenta que si está activada, esta opción requiere que tu dispositivo transmita los datos de ubicación a través de Internet a terceros para convertir las coordenadas GPS en una dirección. Consulta https://developer.android.com/reference/android/location/Geocoder . Esta función no ofrece garantías de disponibilidad o precisión. Los resultados son aproximados y no se garantiza que sean significativos o correctos
+\n%s
+ sRGB
+ Gamma
+ Valor gamma de vídeo
+ Valor gamma a utilizar para vídeo si el perfil de imagen de vídeo está configurado como Gamma
+\n%s
+ 1.9
+ Atenúar solamente los botones virtuales de navegación en pantalla
+ Opacidad de imagen Ghost
+ Valor alfa usado para imágenes Ghost. Un valor más bajo significa más transparente, más alto significa más opaco.
+\n%s
+ Color de las rayas de cebra en primer plano
+ Seleccionar mando remoto
+ 2.8
+ REC709
+ 1.6
+ Dispositivo desconocido (permiso de conexión a bluetooth no disponible)
+ Extensión: Auto
+ X-HDR
+ Extensión: HDR
+ Modo X-Night
+ Extensión: Noche
+ Modo X-Bokeh
+ Extensión: Bokeh
+ Modo X-Bty
+ Extensión: Belleza / Retoque facial
+ Licencias de código abierto
+ Cámara
+ Cámara es © 2013-2019 Mark Harman, publicada bajo la GPL v3 o posterior. Toca aquí para ver el texto completo de la licencia.
+ íconos Material Design de Google
+ Atrás
+ Cámara utiliza los iconos Material Design de Google (https://developer.android.com/design/downloads/index.html , https://design.google.com/icons/ , https://github.com/google/material-design-icons/ , https://google.github.io/material-design-icons/) bajo la licencia Apache versión 2.0. Algunos iconos incluyen modificaciones. Toca aquí para ver el texto completo de la licencia.
+ Siguiente
+ Omitir
+ LENS
+ Modo X-Auto
+ No remover datos EXIF del dispositivo
+ Remover datos EXIF del dispositivo
+ Remover excepto fecha/hora
+ Mapeado tonal HDR
+ Algoritmo para el mapeado tonal en el modo de foto HDR
+\n%s
+ Abrazadera simple
+ Exponencial
+ Estándar
+ Remover datos EXIF del dispositivo
+ Si deseas remover metadatos EXIF del dispositivo de las fotos JPEG. Esto no eliminará las etiquetas EXIF aplicadas por otros ajustes que aplican metadatos EXIF (por ejemplo, ubicación/etiquetado). Esas otras opciones son independientes y anularán este ajuste. RAW/DNG y los vídeos no son afectados.
+\n %s
+
+ DEBES ACTIVAR EL INTERRUPTOR DE PRIVACIDAD
+ YA QUE LA CÁMARA NO ESTÁ DISPONIBLE ;-)
+
+ POR FAVOR ESPERA 5 SEGUNDOS PARA TU CÁMARA
+ PARA QUE SE CARGUE YA QUE ACABA DE SER HABILITADA
+
\ No newline at end of file
diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..98db80f9d702d3442ac6a200b93e30d9d1ffa572
--- /dev/null
+++ b/app/src/main/res/values-eu/strings.xml
@@ -0,0 +1,601 @@
+
+
+ Auto-egonkortzea ez da
+\nonartzen gailu honetan
+ Desblokeatuta
+ Pantaila blokeatuta dago
+\npasatu hatza desblokeatzeko
+ Argazkia ezabatuta
+ GPS kokalekua ez dago erabilgarri
+ Argazkia ateratzeak huts egin du
+ Argazkia ateratzen
+ Kameraren aurrebista hasteak huts egin du
+ Auto-egonkortzeak huts egin du
+ RAW argazkia gordetzeak huts egin du
+ Argazkia gordetzeak huts egin du
+ Barkatu
+ Grabatzen
+ Bideoa grabatzeak huts egin du
+ Bideo-fitxategia gordetzeak huts egin du
+ Tenporizadorea hasi da
+ Tenporizadorea bertan behera utzi da
+ Esposizioa desblokeatuta
+ Esposizioa blokeatuta
+ Bideoa
+ Argazkia
+ Atzeko kamera
+ Aurreko kamera
+ Foku-distantzia
+ FPS
+ Bideoa gehienezko tamainara iritsi da
+ Bideoa gehienezko iraupenera iritsi da
+ Zerbitzaria hil da, bideoa geldituta
+ Errore ezezaguna, bideoa geldituta
+ ez da onartzen zure gailuan
+ Errorea, bideo-fitxategia hondatuta egon daiteke
+ Kamerara birkonektatzeak huts egin du
+ Bideoaren grabaketa eten da
+ Aukeratu beste karpeta bat
+ Garbitu karpetaren historia\?
+ Garbitu karpetaren historia
+ Gorde hemen:
+ Desaktibatuta
+ Aktibatuta
+ Ados (Mezu hau ez da gehiago erakutsiko)
+ Laster-menuaren ezarpenak
+ Ezarpenak
+ Kamera
+ Ez dago galeria aplikaziorik
+ Mugagabea
+ Auto-egonkortzea
+ Kamera-efektuak
+ m
+ Informazioa argazkian zigilatzeak huts egin du
+ Hatza pasa desblokeatzeko]
+ [BLOKEATUTA:
+ Libre
+ Zoom
+ ISO
+ BESTE APLIKAZIO BATEAN\?
+ KAMERA MARTXAN EGON DAITEKE
+ KAMERA IREKITZEAK HUTS EGIN DU.
+ Norabidea
+ Angelua
+ Zuri-balantzea
+ Eszena modua
+ Kolore-efektua
+ Gehienezko iraupena
+ Audioa desgaituta
+ Tenporizadorearen soinua
+ Tenporizadorea
+ Kamera-kontrolak
+ Aurpegi-hautematea
+ Hala ezartzen bada, gailuaren orientazioa ez da kontuan hartuko, eta argazkiaren/bideoaren orientazioa zehaztutako orientazioaren araberakoa izango da
+\n%s
+ Blokeatu argazki/bideoaren orientazioa
+ Balio altuagoak argiarekiko sentikorragoa adierazten du (baliteke gailu batzuetan ez funtzionatzea)
+ Ezarri ISOa
+ Hautatu zuri-balantzea doitzeko ezarpena
+ Ezarri zuri-balantzea
+ Optimizatu argazkia eszena ezberdinentzat
+ Aplikatu eszena modua
+ Hautatuko kolore-efektua argazkian aplikatzen du
+ Aplikatu kolore-efektua
+ Irudiak biratuko dira automatikoki egonkortzeko (argazkiak soilik) (argazkiak motelago aterako dira, eta memoria gutxi duten gailuetan huts egin dezake)
+ Argazkiak/bideoak gordeko diren karpeta
+ Gordetzeko kokalekua
+ Zarata-mailaren sentikortasuna audioaren aukerarako (zarata handia)
+ Audio-kontrolaren sentikortasuna
+ Audio-kontrolaren aukerak
+ Bolumen-teklak
+ Erreproduzitu soinua argazkia ateratzean
+ Obturadorearen soinua
+ Gelditu pantaila argazkia atera ondoren, argazkia partekatzeko edo ezabatzeko aukerarekin
+ Gelditu argazkia atera ondoren
+ Atera argazkia aurrebista ukituz edo birritan sakatuz
+ Ukitu kapturatzeko
+ Kamera-kontrol gehiago…
+ Ahots bidezko tenporizadorearen atzerako kontakteta
+ Hasi bideoa grabatzen
+ Kokalekuaren baimena ez dago eskuragarri
+ Mikrofonoaren baimena ez dago eskuragarri
+ Karpeta hau gordetzeko ezgai
+ Hautatu gordetzeko kokalekua
+ Karpeta badago
+ Karpeta sortzeak huts egin du
+ Jarri izen berria karpetari
+ Ezin da karpeta honetan sartu
+ Egin dohaintza proiektua laguntzeko
+ Abiarazi Cameraren webgunea nabigatzailean
+ Bestelako ezaugarriak gaitzen ditu, hala nola eskuzko esposizio-moduak, fokatzea, zurien oreka, RAWekin batera (gailuarekin bateragarria bada), baina baliteke gailu guztietan behar bezala ez funtzionatzea (berrabiaraziko da)
+ Erabili Camera2 API
+ Berrezarri ezarpenak
+ Aplikazioaren eta arazketaren informazioa
+ Honi buruz
+ Ziur kameraren ezarpen guztiak lehenetsitako balioetara ezarri nahi dituzula\?
+ Camerako ezarpen guztiak lehenetsitako balioetara berrezartzen ditu
+ Kopiatu arbelera
+ Ez erabilgarri
+ Erabilgarri
+ Galeria
+ Atera argazkia
+ Fokatze modua
+ Blokeatu esposizioa
+ Esposizioa
+ Aldatu aurreko kamerara
+ Flash modua
+ Aldatu argazki modura
+ Aldatu bideo modura
+ Aldatu atzeko kamerara
+ Igo karpeta
+ Partekatu argazkia
+ Ezabatu azkeneko argazkia
+ Ezin da karpeta honetan idatzi
+ Bideoaren grabazioa gelditu edota berrabiarazi egingo da (ikus beheko aukera) fitxategiaren gehienezko tamaina iristen denean (gutxi gorabehera). Kontuan izan Android gailu askok bideoetarako gehienezko tamaina dutela (normalean 2 GB edo 4 GB inguru), baina aukera honek balio jakin bat ezartzeko aukera ematen du. Kontuan izan aukera hau ezin dela erabili gailu baten barneko gehienezko memoria handitzeko.
+\n%s
+ Grabatu audioa bideoa grabatzean
+ Grabatu audioa
+ Audio-kanalak
+ Audioa grabatzeko erabiliko den mikrofonoa
+\n%s
+ Audio-iturburua
+ Flasha grabatu bitartean
+ Zehaztu mono edo estereo audioa grabatzeko (estereo gailu batzuetan soilik onartzen da)
+ Lineako laguntza
+ Bestelakoak
+ Gaituta baldin badago, flasha piztuko/itzaliko da bideoa grabatzean (kamera urrunetik grabatzen ari den jakiteko erabilgarria)
+ Erabili beharreko estiloa argazkietan testua zigilatzerakoan
+\n%s
+ Behartu 4K UHD bideoa (gailu batzuetan soilik funtzionatzen du)
+ Bideoaren bit-emaria (g.g.b)
+ Bideoaren gehienezko iraupena
+ Bideoaren fotograma-abiadura (g.g.b.)
+ Ezarri bideoen gutxi gorabeherako bit-emaria (emari altuagoak kalitate hobea esan nahi du, baina diskoan leku gehiago hartzen du; bideo-grabazioak huts egin dezake bit-emaria onartzen ez bada)
+\n%s
+ Bideo-grabazioa zehaztutako iraupenaren ondoren geldituko da
+\n%s
+ Bideoaren gehienezko tamaina
+ Bideoa gehienezko iraupenera iritsi ondoren gelditu bada (ezarri bada), aukera honen bidez bideoa berrabiaraziko da, adierazitako zenbakiraino.
+\n%s
+ Berrabiarazi bideoa gehienezko iraupenaren ondoren
+ Berrabiarazi gehienezko tamainan
+ Sortu azpititulu-fitxategia (.SRT) data eta ordua gordez; eta GPS informazioa kokaleku- edo norabide-datuak gaituta badaude
+\n%s
+ Bideoaren azpitituluak
+ Gaitu bideo-egonkortzea
+ Bideo-bereizmena
+ Gorde argazkiak atzeko planoko harian (eragiketa azkarragorako)
+ Erabili atzeko planoko haria
+ Erabili beharreko letra-tamaina argazkiaetan testua zigilatzerakoan
+ Letra-tamaina
+ Kapturatzen…
+ Bideoa pausatuta
+ Argazkiak ateratzeko eta bideoak grabatzeko ikonoa erakutsi. Desautatu argazkiak beste metodo batzuen bidez egin nahi badituzu (adibidez, zure gailuak hardwarea obturatzeko botoia badu edo bolumen-teklak erabiltzen baditu).
+ Erakutsi \"Atera argazkia\" ikonoa
+ ordubete
+ 45 minutu
+ 30 minutu
+ 25 minutu
+ 20 minutu
+ 15 minutu
+ 12 minutu
+ 11 minutu
+ 10 minutu
+ 9 minutu
+ 8 minutu
+ 7 minutu
+ 6 minutu
+ 5 minutu
+ 4 minutu
+ 3 minutu
+ 2 minutu
+ minutu 1
+ 30 segundo
+ 15 segundo
+ 10 segundo
+ 5 segundo
+ 3 segundo
+ Mugagabea
+ Sepia
+ Posterizatu
+ Bat ere ez
+ Negatiboa
+ Mono
+ Arbel beltza
+ Ura
+ Antzerkia
+ Ilunabarra
+ Kirolak
+ Elurra
+ Erretratua
+ Festa
+ Gaueko erretratua
+ Gaua
+ Paisaia
+ Su artifizialak
+ Auto
+ Hondartza
+ Barra-kodea
+ Jarduera
+ Eskuz
+ Epela
+ Ilunabarra
+ Itzala
+ Fluoreszente
+ Egun-argia
+ Auto
+ HDR irudia sortzeak huts egin du
+ uuuu-hh-ee (ISO 8601)
+ Lehenetsita
+ DNG (RAW) soilik
+ Estandarra eta DNG (RAW)
+ Ez
+ Prozesatzen…
+ Copyright
+ Irudiaren artista-etiketaren metadatuetan gordeko den testua (JPEG formatua soilik). (Utzi hutsik ezer ez agertzeko.)
+ Artista
+ Lehenetsita
+ Abiadura azkarra
+ erdialdean
+ pantailaren behealdean
+ pantailaren goialdean
+ pantailaren eskuinaldean
+ pantailaren ezkerraldean
+ aurpegiak
+ aurpegia
+ Dohaintza egin
+ Zer berri:
+ Arbel zuria
+ Gordetzeko kokalekua hona aldatu da:
+ DNG fitxategiek kameraren konprimitu eta prozesatu gabeko informazio guztia dute.
+\n
+\nKontuan izan galeriako aplikazio batzuk ez dituztela DNG fitxategiak ezagutzen. DNG irudiak Snapseed edo Lightroom bezalako irudi-editore espezializatuekin erabil daitezke.
+\n
+\nKontuan izan zenbait prozesatze-aukera, hala nola Zigilatu argazkiak eta Auto-egonkortzea, DNG ez diren (JPEG/etab.) irudiei soilik aplikatuko zaizkiela, eta ez DNG irudiei.
+ Gaituta badago, kamera blokeatutako pantailaren gainetik agertuko da (oraindik desblokeatu beharko duzu Ezarpenak, Galeria, eta abarretara sartzeko)
+ Erakutsi kamera blokeatuta dagoenean
+ Fitxategi-izenerako ordu-formatua
+ Bideoen fitxategi-izenak gordetzeko erabiliko den aurrizkia
+ Burutu auto-fokatzea hasterakoan
+ Testu-estiloa
+ Erabili beharreko letra-kolorea argazkietan testua zigilatzerakoan
+ Letra-kolorea
+ Zigilatu argazkiak pertsonalizatutako testuarekin
+ Pertsonalizatutako testua
+ GPS zigilatze formatua
+ Ordu-zigilatze formatua
+ Data-zigilatze formatua
+ Zigilatu argazkiak data eta denborarekin; baita GPS informazioarekin ere, kokapen-datuak gaituta badaude
+\n%s
+ Zigilatu argazkiak
+ HDR modua erabilgarria da distira asko aldatzen duten argazkietarako. Esposizio ezberdinetan argazkiak ateratzen ditu, eta azken irudia sortzeko hauek konbinatzen ditu.
+\n
+\nKontuan izan HDR ez dela egokia mugimendu azkarreko eszenetarako, eta kolore-erreprodukzioak zehaztasuna galdu dezakeela.
+\n
+\nHDR moduan argazkiak ateratzea motelagoa izango da.
+ Erabili aurpegiko detekzioa fokatze-eremuen ordez
+ Ezarri 0 gisa lehenetsitako esposizioaren konpentsaziorako
+ Ezarri esposizioaren konpentsazioa
+ Esposizioaren konpentsazioa
+ Lehenetsia
+ Ez gorde jatorrizko irudiak
+ s
+ Gorde jatorrizko irudi guztiak (motela)
+ Gorde jatorrizko irudi bakarra
+ Bideoa gelditu da
+\nBateria-maila baxuegia da
+ Leku libre nahikorik ez bideoa grabatzeko
+ Iluna
+ Kameraren errore larria
+ Obturazio-abiadura
+ Argia
+ HDR/espo argazkiak azkarrago ateratzeko aukera ematen du. Desgaitu hau zure gailuak HDR edo Espo moduekin argazkiak ateratzean arazoak baditu.
+ Autoargazkia
+ Grabatu bideoa
+ Auto-egonkortzeak automatikoki biratuko ditu argazkiak, maila berean ager daitezen.
+\n
+\nKontuan izan honek irudiek bereizmen txikiagoa izango dutela esan nahi duela (behar den biraketaren eta ebakiduraren eraginez).
+ Egin soinu ozena
+ Esan \"cheese\"
+ Gelditu audio-entzutea
+ Hasi audio-entzutea
+ Baimendu argazkiak bideoa grabatzean
+ Irudi hau irekitzeko ezgai
+ Hautatutako irudia
+ Ateratako azkeneko argazkia
+ Desaktibatuta
+ Auto
+ Desaktibatuta
+ 60Hz
+ 50Hz
+ Bistaratu iparrorratzaren norabide-lerroak
+ Erakutsi iparrorratzaren norabide-lerroak
+ Egonkorgailuaren kalibrazioa berrezarri da
+ Egonkorgailua kalibratuta
+ Berrezarri
+ Kalibratu
+ DRO
+ Esposizio-urkila
+ Espo {}
+ HDR
+ Estandar
+ Est
+ Argazki modua
+ Ez erakutsi berriro
+ Argazkien fitxategi-izenak gordetzeko erabiliko den aurrizkia
+ Iturburu-kodea
+ Lizentzia
+ Erabilera baldintzak
+ Egileak
+ Bideoa grabatzean, interfazea blokeatuta egongo da grabazioa ustekabean ez gelditzeko. Pasatu hatza pantaila desblokeatzeko. Kontuan izan bideo-grabazioa beti geldituko dela aplikazioa bigarren mailan sartu edo pantaila ezabatzen bada.
+ Blokeatu pantaila bideoa grabatzean
+ Gorde bideo-aurrizkia
+ Pantailaren interfazea…
+ Aurrebista biratzeko aukera (ez du eraginik izango ateratako argazkietan/bideoetan)
+\n%s
+ Biratu aurrebista
+ Interfazearen kokapena
+ Aurrebistaren tamaina
+ Uneko ISO maila erakusten du. Flash automatiko moduan, flash-ikur batek adieraziko du noiz abiaraziko den flasha. (Camera2 API behar du.)
+ Erakutsi ISOa
+ Erakutsi zoom-kontrolaren graduatzailea
+ Erakutsi zoom-graduatzailearen kontrola
+ Erakutsi zoom-kontrolaren -/+ botoiak
+ Erakutsi zoomaren -/+ kontrolak
+ Erakutsi zooma
+ Murgiltze modua
+ Bistaratu maila-horizontal lerroa
+ Erakutsi angelu-lerroa
+ Bistaratu gailuaren uneko orientazio-angelua pantailan
+ Erakutsi angelua
+ Erakutsi memoria librea
+ Angelua/altitudea nabarmentzeko kolorea
+ Kamera ia nibelatuta dagoenean nabarmentzeko kolorea
+ Ebakitzeko gida batek zehaztutako aspektu-erlazioak adierazten duen laukizuzena erakusten du. Argazkia/bideoa aspektu-erlazio ezberdinarekin ebakitzeko asmoa baduzu erabilgarria da. WYSIWYG argazki-moduan edo bideo-moduan egotea eskatzen du.
+\n%s
+ Erakutsi mozketa-gida
+ Sareta
+ Erakutsi sareta
+ Bistaratu uneko bateria-maila pantailan
+ Erakutsi bateria
+ Bistaratu uneko ordua pantailan
+ Erakutsi ordua
+ Bistaratu gailuaren iparrorratzaren norabidea pantailan
+ Erakutsi iparrorratzaren norabidea
+ Gaituta badago, pantaila ez da itzaliko kameraren interfaze nagusia aktibo dagoen bitartean
+ Mantendu pantaila piztuta
+ Bistaratu ertza pantailan argazkia atera dela adierazteko
+ Erakutsi ertza argazkia ateratzean
+ Bistaratu mugitzen den miniatura-animazioa argazkia ateratzean
+ Erakutsi miniatura-animazioa
+ Ezarri gordetako JPEG edo WebP argazkien irudiaren kalitatea (lehenetsitako balioa 90%% da). Ez du eraginik PNG irudi-formatuan.
+\n%s
+ Irudiaren kalitatea
+ Kamera-bereizmena
+ Kokapenaren ezarpenak…
+ Bideoen ezarpenak…
+ Argazkien ezarpenak…
+ Argazki eta bideoen ezarpenak
+ Behartu gehienezko distira
+ Gorde GPS kokapen-datuak argazkietan/bideoetan (argazkietan, kokapen-datuak JPEG eta DNG formatuetan soilik gorde daitezke)
+ Gorde kokapen-datuak (Geoetiketatzea)
+ RAW
+ Baimena behar da
+ BAIMENAK EZ ERABILGARRI
+ Gaituta badago, HDR argazki-modua erabiltzean, oinarrizko esposizioko hiru irudiak eta amaierako HDR argazkia gordeko dira. Kontuan izan horrek gordetzea motelduko duela, batez ere \"Zigilatu argazkiak\" edo Auto-egonkortzea bezalako aukerak erabiltzen badira.
+ Gorde HDR moduko argazki guztiak
+ Argazki-zigilatzea
+ GB
+ MB
+ Fitxategiaren gehienezko tamaina
+ Gelditu bideoaren grabaketa
+ Karpeta berria
+ Kokapen-datuak gaituta badaude, atera argazkia/bideoa kokapen-datuak erabilgarri badaude soilik
+ Eskatu kokapen-datuak
+ Gorde GPSaren iparrorratzaren norabidea argazkietan (JPEG formatua soilik)
+ Gorde iparrorratzaren norabidea
+ Esposizio-urkila moduaren irudi kopurua
+\n%s
+ Esposizio-urkila
+ Arazketa aukerak
+ Arazketa aukerak
+ Kokapen-baimena behar da geoetiketatzerako (kokapen-datuak argazkietan eta bideoetan gordetzeko). Bluetooth LE urruneko kontroleko gailuetara konektatzeko ere kokapen-baimena behar da.
+ Mikrofonoaren baimena beharrezkoa da bideoa audioarekin grabatzeko, baita \"Audio-kontrola\" aukerak erabiltzeko ere
+ Biltegiratzearen irakurketa/idazketa baimena beharrezkoa da argazkiak gordetzeko
+ Kameraren baimena beharrezkoa da kamera gaitzeko
+ Bat ere ez
+ hh/ee/uuuu
+ ee/hh/uuuu
+ Argazki kopurua
+ Kamera
+ Arrunta
+ Argazki kopurua
+ Gehitu distantzia mugagabea
+ 200Mb/s
+ 150Mb/s
+ 100Mb/s
+ 90Mb/s
+ 80Mb/s
+ 70Mb/s
+ 60Mb/s
+ 50Mb/s
+ 40Mb/s
+ 30Mb/s
+ 20Mb/s
+ 15Mb/s
+ 10Mb/s
+ 9Mb/s
+ 8Mb/s
+ 7Mb/s
+ 6Mb/s
+ 5Mb/s
+ 4Mb/s
+ 3Mb/s
+ 2Mb/s
+ 1Mb/s
+ 500kb/s
+ 200kb/s
+ 100kb/s
+ Lehenetsita
+ Prozesatu gabea
+ Kanpoko mikrofonoa (baldin badago)
+ Begi gorriak
+ Flasha aktibatuta
+ Flash auto
+ Flasha desaktibatuta
+ Abiadura
+ 200
+ 150
+ 100
+ 50
+ 40
+ 30
+ 25
+ 20
+ 15
+ 12
+ 10
+ 8
+ 6
+ 5
+ 4
+ 3
+ 2
+ 20
+ 15
+ 12
+ 10
+ 8
+ 6
+ 5
+ 4
+ 3
+ 2
+ Zure gailuko iparrorratzak kalibratu egin behar du zehaztasuna hobetzeko. Horretarako, 8 mugimenduko irudi batean mugi daiteke gailua.
+\n
+\nUneko zehaztasuna:
+ Iparrorratzaren norabidea
+ Handia
+ Ertaina
+ Baxua
+ Ez fidagarria
+ Konpilazio-bertsioa
+ Desaktibatuta
+ Lehenetsia
+ 4x
+ 2x
+ Desaktibatuta
+ Bizkorra
+ Ezarpenak prozesatzen…
+ Zer Berri elkarrizketa-koadroa erakusten du
+ ft
+ Oinak
+ Metroak
+ Distantzia-unitatea
+ Ezezaguna
+ Linterna
+ segidarik ez
+ Aktibatuta
+ Desaktibatuta
+ %100
+ %99
+ %98
+ %97
+ %95
+ %93
+ %90
+ %80
+ %70
+ Desaktibatuta
+ Desaktibatuta
+ RGB koloreak
+ Irekidura
+ Bideoari berrekin zaio
+ Gori
+ Hodeitsua
+ Argazki-zigilatzea desgaituta
+ Argazki-zigilatzea gaituta
+ Desgaitu argazki-zigilatzea
+ Gaitu argazki-zigilatzea
+ Desgaitu auto-egonkortzea
+ Gaitu auto-egonkortzea
+ Aurpegi-hautematea desgaituta
+ Aurpegi-hautematea gaituta
+ Desgaitu aurpegi-hautematea
+ Gaitu aurpegi-hautematea
+ Erakutsi aurpegi-hautematearen ikonoa
+ Eskuinentzako erabiltzaile-interfazea
+ Ezkerrentzako erabiltzaile-interfazea
+ Gelditzen dena
+ Gailu ezezaguna
+ PNG
+ WebP
+ JPEG
+ Berrezarri ezarpenak
+ Kameraren ezarpen guztiak fitxategi batean gordetzen ditu
+ Gorde ezarpenak
+ WebM (audiorik ez da onartzen)
+ 3GPP
+ MPEG4 HEVC
+ MPEG4 H264
+ Lehenetsita
+ Bideo-formatua
+ Beti
+ Azkarra
+ Desaktibatuta
+ -3 (sentikortasun txikia)
+ -2
+ -1
+ 0 (lehenetsita)
+ +1
+ +2
+ +3 (sentikortasun handia)
+ 2.4 (12:5)
+ 2.35 (47:20)
+ 2.33 (21:9)
+ 2 (2:1)
+ 1.85 (37:20)
+ 1.78 (16:9)
+ 1.5 (3:2)
+ 1.4 (7:4)
+ 1.33 (4:3)
+ 1.25 (5:4)
+ 1 (1:1)
+ Bat ere ez
+ 9GB
+ 5GB
+ 2GB
+ 1GB
+ 500MB
+ 300MB
+ 200MB
+ 100MB
+ Gailuak lehenetsita
+ 2h
+ 1h
+ 30m
+ 20m
+ 10m
+ 5m
+ 2m
+ 1m
+ 30s
+ 20s
+ 15s
+ 10s
+ 5s
+ 3s
+ 2s
+ 1s
+ 0,5s
+ 10x
+ Errepikatu
+ Hurrengoa
+ Camera kamera-sentsorearen eta mikrofonoaren datuetara sartzen da, kamera gisa duen asmoa betetzeko. Mikrofonoa aukerako \"audio-kontrolerako\" ere erabiltzen da.
+\nFitxategietarako sarbidea sortutako fitxategiak (argazkiak eta bideoak) gailuan gordetzeko behar da.
+\nKokapen-baimena aukerako geoetiketen ezaugarrietarako behar da (argazki eta bideoetarako, zigilu-aukerak eta azpitituluak barne). Dagozkion aukerak gaitzen direnean, gailuaren kokapena argazki-/bideo-/azpititulu-fitxategietan gordeko da. Bluetooth urruneko kontroleko gailuetara konektatzeko ere kokapen-baimena behar da.
+\nCamerak sistema eragilearen API ere erabiltzen duenez, pribatutasun-politika garrantzitsuak berrikusi behar dituzu, hala nola zure gailuarentzat, fabrikatzailearentzat, sistema eragilearentzat edota beste kontuentzat. Adibidez:
+\n*Ahotsa kontrolatzeko aukerako aukerak Android-en ahotsa ulertzeko zerbitzua erabiltzen du. Aktibatuta dagoenean, baliteke audio-datuak Android-ek urruneko zerbitzarietara bidaltzea ahotsa ezagutzeko.
+\n*Argazki-zigilurako edo bideo-azpitituluetarako \"helbideak\" aukerak Android Geocoder-en APIa erabiltzen du. Gaituta dagoenean, gailuak kokapen-datuak Internet bidez hirugarren bati transmititu behar dizkio (zure gailuan instalatutako backend zerbitzuen arabera).
+\n*Zure gailuan hodeiko zerbitzuak bezalako aplikazioek/zerbitzuek automatikoki kargatu ditzakete zure gailuan gordetzen diren argazkiak eta bideoak.
+
\ No newline at end of file
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index c9a04072ab4b8526771a2f74c642dc84ecfab588..c680c6d2e4b8b0fa9293de1cc90398eb25c28924 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -1,40 +1,41 @@
-
- Open Camera
+ Appareil photo
Paramètres
- Fenêtre de paramètres
- OK (ce message ne s\'affichera plus)
-
- Actif
- Inactif
-
+ Paramètres des pop-ups
+ OK (Ce message ne s\'affichera plus)
+ Activé
+
+ Désactivé
+
Sélectionnez le dossier d\'enregistrement\u00A0:
Effacer l\'historique des dossiers
Effacer l\'historique des dossiers\u00A0?
Sélectionnez un autre dossier
Nouvel emplacement d\'enregistrement\u00A0:
Enregistrement vidéo arrêté
- fois
+ fois
+
Impossible de se reconnecter à l\'appareil photo
Erreur, le fichier vidéo peut être corrompu
- non supporté par votre appareil
+ non supporté par votre appareil
+
Erreur inconnue, la vidéo est arrêtée
Erreur serveur, la vidéo est arrêtée
La vidéo a atteint la durée max
La vidéo a atteint la taille max
Compensation d\'exposition
- Images/seconde
- Distance de focus
+ i/s
+ Distance de mise au point
Infinie
Caméra frontale
Caméra arrière
Photo
Vidéo
- Exposition bloquée
- Exposition débloquée
+ Exposition verrouillée
+ Exposition déverrouillée
Retardateur annulé
- Mode rafale annulé
+ Mode répétition annulé
Retardateur démarré
Impossible d\'enregistrer le fichier vidéo
Impossible d\'enregistrer la vidéo
@@ -47,16 +48,15 @@
Impossible de prendre une photo
La position GPS n\'est pas disponible
Photo supprimée
- Application de galerie non disponible
+ Pas d\'application de galerie disponible
L\'écran est verrouillé\nbalayez pour déverrouiller
- Déverrouiller
+ Déverrouillé
Désolé, l\'auto-stabilisateur n\'est pas supporté\nsur cet appareil
Audio désactivé
Durée max
Effet de couleur
Mode scène
- Balance des blancs
-
+ Balance blancs
Angle
Direction
IMPOSSIBLE D\'OUVRIR LA CAMÉRA.
@@ -65,41 +65,39 @@
ISO
Zoom
Libre
- [VERROUILLÉE\u00A0:
- balayez pour déverrouiller]
-
- Impossible d\'ajouter les informations dans la photo
- m
-
+ [VERROUILLÉ :
+ Balayez pour déverrouiller]
+ Impossible d\'insérer les informations dans la photo
+ m
+
Effets photo
Auto-stabilisateur
Les photos seront pivotées de sorte qu\'elles soient automatiquement de niveau (photos seulement) (plus lent pour prendre des photos, et peut échouer sur les appareils avec trop peu de mémoire)
Appliquer un effet couleur
- Applique un effet couleur sur la photo
- Appliquer le mode scène
+ Applique l\'effet de couleur sélectionné à la photo
+ Appliquer un mode scène
Optimise la photo pour différentes scènes
- Réglage de la balance des blancs
- Choisissez un réglage pour la balance des blancs
- Choisir l\'ISO
+ Définir la balance des blancs
+ Choisissez un réglage pour ajuster la balance des blancs
+ Définir l\'ISO
Une valeur plus élevée signifie plus sensible à la lumière (peut ne pas fonctionner sur certains appareils)
- Régler la compensation d\'exposition
- Mettre à 0 pour la compensation de l\'exposition par défaut
- Bloquer l\'orientation de la photo/vidéo
+ Définir la compensation d\'exposition
+ Définir à 0 pour la compensation de l\'exposition par défaut
+ Bloquer l\'orientation photo/vidéo
Si elle est définie, l\'orientation de l\'appareil sera ignorée, et l\'orientation de la photo/vidéo sera l\'orientation spécifiée\n%s
Détection des visages
- Utilise la détection des visages au lieu des zones de focus
-
- Commandes de la caméra
+ Utiliser la détection des visages au lieu des zones de focus
+ Options de l\'appareil photo
Retardateur
- Retardateur sonore
- Émet des bips pour le retardateur ou le délai du mode rafale
+ Bip du retardateur
+ Émet des bips pour le retardateur ou le délai du mode répétition
Retardateur à voix
- Énonce le compte à rebours pour le retardateur ou le délai du mode rafale (à partir de 60s)
- Mode rafale
- Intervale du mode rafale
- Plus de paramètres…
- Toucher pour capturer
- Prendre une photo en touchant 1 ou 2 fois l\'aperçu
+ Énonce le compte à rebours pour le retardateur ou le délai du mode répétition (à partir de 60s)
+ Mode répétition
+ Intervalle du mode répétition
+ Options supplémentaires de l\'appareil photo…
+ Toucher pour photographier
+ Prendre une photo en touchant ou en double-cliquant sur l\'aperçu
Mettre en pause après la prise de photo
Mettre en pause l\'écran après avoir pris une photo, avec la possibilité de partager ou supprimer la photo
Son de l\'obturateur
@@ -110,19 +108,20 @@
Niveau de la sensibilité sonore pour l\'option contrôle audio (bruit fort)
Dossier de stockage
Dossier où sont stockés les fichiers photo/vidéo
- Utilise le Storage Access Framework pour enregistrer les photos et vidéos
+ Utilise la Structure d\'accès au stockage pour enregistrer les photos et vidéos. Cela devrait être activé pour permettre la sauvegarde sur des cartes SD externes. Sur Android 10+, cette option doit être activée si vous voulez sauvegarder vos prises dans un dossier différent de DCIM.
Préfixe du nom de photo
Le préfixe est utilisé pour le nom de fichier des photos
Préfixe du nom de la vidéo
Le préfixe est utilisé pour le nom de fichier des vidéos
- Afficher l\'application appareil verrouillé
- Si activé, Open Camera s\'affichera toujours au-dessus de l\'écran de verrouillage (vous devez déverrouiller pour accéder aux paramètres, galerie, etc.)
- Faire un auto-focus au démarrage
- Active l\'auto-focus au démarrage de Open Camera. Si vous avez un problème de flash qui s\'allume au démarrage, désactivez cette option
- Verrouiller l\'écran lors de l\'enregistrement vidéo
+ Afficher l\'Appareil photo quand verrouillé
+ Si activé, l\'Appareil photo s\'affichera toujours au-dessus de l\'écran de verrouillage (vous devrez toujours déverrouiller pour accéder aux paramètres, galerie, etc.)
+ Faire un focus auto au démarrage
+ Activer ou non la mise au point automatique au démarrage de l\'Appareil photo. Si vous avez un problème de flash qui s\'allume au démarrage, désactivez cette option
+ Verr. l\'écran lors de l\'enregistrement vidéo
Lors de l\'enregistrement vidéo, l\'interface graphique sera verrouillée pour éviter d\'arrêter accidentellement l\'enregistrement. Balayez l\'écran pour déverrouiller. Notez que l\'enregistrement vidéo sera toujours arrêté si l\'application passe en arrière-plan ou si l\'écran est occulté.
Pivoter l\'aperçu
- Option pour faire pivoter l\'aperçu (n\'affecte pas les photos/videos originales)\n%s
+ Option pour faire pivoter l\'aperçu (n\'affecte pas les photos/videos résultantes)
+\n%s
Interface à l\'écran…
Taille de l\'aperçu
Emplacement de l\'interface utilisateur
@@ -134,110 +133,114 @@
Afficher le curseur de zoom
Affiche le curseur pour modifier le niveau de zoom
Afficher les ISO
- Affiche le niveau actuel de l\'ISO (nécessite l\'API Camera2)
- Afficher la mémoire disponible
- Affiche l\'espace mémoire disponible à l\'écran
+ Affiche le niveau actuel de l\'ISO (Nécessite l\'API Camera2.)
+ Afficher le stockage disponible
+ Affiche à l\'écran l\'espace de stockage restant sur l\'appareil
Afficher l\'angle
Affiche l\'angle d\'orientation actuel de l\'appareil à l\'écran
Montrer la ligne d\'angle
- Affiche une ligne de niveau horizontal
- Couleur de surbrillance de la ligne d\'angle
- Met la ligne d\'angle en surbrillance lorsque l\'appareil est presque de niveau
- Afficher la boussole de direction
- Affiche la boussole de direction de l\'appareil à l\'écran
+ Affiche une ligne de niveau horizontale
+ Couleur de surbrillance de l\'angle/altitude
+ Couleur de surbrillance lorsque la caméra est presque à niveau
+ Afficher la direction de la boussole
+ Affiche la direction de la boussole de l\'appareil sur l\'écran
Afficher l\'heure
Affiche l\'heure actuelle à l\'écran
Afficher la batterie
Affiche le niveau actuel de la batterie à l\'écran
Afficher une grille
- Grille
+ Grille
+
Afficher un guide de recadrage
- Un guide de recadrage affiche un rectangle montrant à quoi le rapport d\'aspect spécifié ressemble - utile si vous prévoyez de recadrer la photo/vidéo après un ratio d\'aspect différent. Nécessite le mode photo WYSIWYG, ou d\'être en mode vidéo\n%s
- Afficher les messages d\'information
- Affiche les messages d\'informations à l\'écran
+ Un guide de recadrage affiche un rectangle montrant à quoi ressemble le ratio spécifié - utile si vous prévoyez de recadrer la photo/vidéo par la suite à un ratio différent. Nécessite le mode photo WYSIWYG (Ce que Vous Voyez C\'est Ce que Vous Obtenez) ou être en mode vidéo.
+\n%s
+ Afficher les messages d\'info
+ Afficher ou non les messages d\'info temporaires
Voir l\'animation des vignettes
- Affiche l\'animation des vignettes lorsque vous prenez une photo
- Ajouter une bordure à la photo
+ Affiche une animation de vignette en mouvement lors de la prise d\'une photo
+ Afficher une bordure lors prise photo
Affiche une bordure à l\'écran pour indiquer la prise d\'une photo
Garder l\'écran allumé
- Si activé, l\'appareil ne se mettra pas en veille tant qu\'Open Camera sera actif
+ Si activé, l\'appareil ne se mettra pas en veille tant que l\'interface utilisateur de l\'Appareil photo sera actif
Forcer la luminosité maximale
- Affichage de l\'écran avec une luminosité au maximum, plutôt que la valeur par défaut du périphérique
-
+ Force l\'affichage de l\'écran à être au maximum de sa luminosité, plutôt qu\'à la valeur par défaut de l\'appareil
Paramètres photo et vidéo
Paramètres photo…
Paramètres vidéo…
- Paramètres de géocodage…
- Résolution de l\'appareil photo
+ Paramètres de localisation…
+ Définition de la caméra
Qualité de l\'image
- Réglez la qualité des photos enregistrées (la valeur recommandée est 90 %%)\n%s
- Stocker les données de position (Géocodage)
- Enregistre la position GPS dans les photos/videos
+ Définir la qualité d\'image des photos JPEG ou WebP enregistrées (la valeur par défaut est de 90 %%). N\'a pas d\'effet pour le format d\'image PNG.
+\n%s
+ Stocker données localisation
+ Enregistre les données de localisation GPS dans les photos/vidéos (pour les photos, les données de localisation ne peuvent être stockées que dans les formats JPEG et DNG)
Stocker la direction de la boussole
- Stocke la direction GPS de la boussole dans les photos
- Données de position indispensables
- Prendre des photos/vidéos uniquement si les données de position sont activées et disponibles
- Incrustation photo
- Incruste sur les photos la date, l\'heure et la position GPS si les informations de position/direction sont activées\n%s
+ Enregistre la direction GPS de la boussole dans les photos (format JPEG seulement)
+ Exiger des données de localisation
+ Si les données de localisation sont activées, ne prendre une photo/vidéo que si les données de localisation sont disponibles
+ Insérer des données dans les photos
+ Incruster des données sur les photos : date et heure ainsi que les coordonnées GPS si les données de localisation/direction sont activées
+\n%s
Format de la date
Format de l\'heure
- Format GPS
+ Format des données GPS
Texte personnalisé
- Incruste un texte personnalisé sur la photo
+ Incruster un texte personnalisé sur la photo
Taille de la police
- Taille de la utilisée lors de l\'incrustation de texte sur les photos\n%s
+ Taille de la police utilisée lors de l\'incrustation de texte sur les photos
Couleur de la police
- Couleur de la police utilisée pour l\'incrustation de texte sur les photos\n%s
- Format du texte
- Format du texte utilisé pour l\'incrustation de texte sur les photos\n%s
- Résolution vidéo
- Forcer le format vidéo 4K UHD (experimental)
- Active la résolution 3840x2160 pour l\'enregistrement vidéo sur l\'appareil photo arrière - cela ne fonctionnera que si votre appareil le prend en charge (et peut se bloquer le cas échéant\u00A0!)
- Activer la stabilisation vidéo
- La stabilisation vidéo réduit les tremblements dûent aux mouvements de la caméra à la fois dans l\'aperçu et dans les vidéos enregistrées
- Débit des vidéos (approx.)
- Règle le débit approximatif des vidéos (plus élevé signifie une meilleure qualité, mais prend plus d\'espace disque, et peut entraîner un échec de l\'enregistrement vidéo s\'il n\'est pas pris en charge)\n%s
- Nombre d\'image de la vidéo (approx.)
- Définir le nombre d\'image par seconde (IPS) des vidéos (en fonction de votre appareil le nombre d\'IPS peut être aproximatif et pourrait ne pas atteindre le maximum. Un mauvais réglage peut entraîner l\'échec de l\'enregistrement vidéo s\'il n\'est pas pris en charge)\n%s
+ Couleur de la police utilisée pour l\'incrustation de texte sur les photos
+ Style du texte
+ Style du texte utilisé pour l\'incrustation de texte sur les photos
+\n%s
+ Définition de la vidéo
+ Forcer la vidéo 4K UHD (ne fonctionne que sur certains appareils)
+ Activer la définition 3840x2160 pour l\'enregistrement vidéo avec la caméra arrière - cette option est un bidouillage qui peut permettre aux appareils 4K sur les caméras 4K qui n\'exposent pas l\'option à des applications de caméra tierces. Le fonctionnement de cette option n\'est pas garanti, veuillez la tester avant de travailler.
+ Activer la stabilisation vidéo numérique
+ La stabilisation vidéo réduit les tremblements dus aux mouvements de la caméra à la fois dans l\'aperçu et dans les vidéos enregistrées. Cela peut être inutile si votre appareil prend en charge la stabilisation optique de l\'image (OIS).
+ Débit des vidéos (environ)
+ Définir le débit approximatif des vidéos (plus élevé signifie une meilleure qualité, mais prend plus d\'espace disque ; et peut entraîner un échec de l\'enregistrement vidéo si le débit n\'est pas pris en charge)
+\n%s
+ Fréquence d\'images vidéo (environ)
+ Définir la fréquence d\'images (FPS) des vidéos (peut être approximative, non garantie, et peut entraîner l\'échec de l\'enregistrement vidéo si la fréquence d\'images n\'est pas prise en charge). Veuillez vérifier les vidéos produites pour déterminer la bonne fréquence d\'images. Notez que ce paramètre est ignoré pour les vidéos au ralenti.
+\n%s
Durée maximale de la vidéo
L\'enregistrement vidéo s\'arrêtera après la durée spécifiée\n%s
- Nombre de vidéos après la durée maximale
+ Redémarrer vidéo après durée maximale
Si la vidéo est stoppée après avoir atteint la durée maximale sélectionnée (si activé), alors l\'enregistrement va reprendre autant de fois que le nombre spécifié dans ce paramètre\n%s
-
Taille maximale d\'un fichier vidéo
- L\'enregistrement vidéo va s\'arrêter/ou redémarrer (voir option ci-dessous) quand la taille maximale approximative du fichier est atteinte. Notez que la plupart des périphériques Android ont une taille maximale pour les vidéos (typiquement entre 2 et 4 Go), mais cette option permet de choisir une valeur\n%s
- Redémarrer sur la taille maximale
- Si activé, redémarrage automatique quand la taille maximale de fichier est atteinte (soit la valeur par défaut du périphérique, soit la valeur spécifiée)
- Enregistrement audio
- Enregistre aussi l\'audio lors de l\'enregistrement vidéo
+ L\'enregistrement vidéo va s\'arrêter et/ou redémarrer (voir option ci-dessous) quand la taille maximale (approximative) du fichier est atteinte. Notez que la plupart des périphériques Android ont une taille maximale pour les vidéos (généralement autour de 2 Go ou 4 Go), mais cette option permet de choisir une valeur spécifique. Notez que cette option ne peut pas être utilisée pour augmenter le maximum intégré à un appareil.
+\n%s
+ Redémarrer à la taille maximale
+ Redémarrer automatiquement ou non lorsque la taille maximale du fichier est atteinte (que ce soit la taille maximale par défaut du dispositif ou celle spécifiée par l\'utilisateur)
+ Enregistrer l\'audio
+ Enregistre l\'audio lors de l\'enregistrement vidéo
Source audio
- Sélectionne l\'entrée audio pour l\'enregistrement\n%s
- Format audio
- Spécifiez mono ou stéréo pour l\'enregistrement audio (stéréo uniquement pris en charge sur certains appareils)\n%s
- Clignoter pendant l\'enregistrement vidéo
- Si activé, le flash se met en marche/arrêt lors de l\'enregistrement vidéo (peut être utile pour indiquer que l\'appareil est en train d\'enregistrer à distance)
-
+ Microphone à utiliser pour l\'enregistrement audio. Notez que le comportement des options dépend de comment l\'option est implémentée sur votre appareil.
+\n%s
+ Canaux audio
+ Spécifier mono ou stéréo pour l\'enregistrement audio (stéréo uniquement pris en charge sur certains appareils)
+ Flash pendant enregistrement vidéo
+ Si activé, le flash se mettra à clignoter lors de l\'enregistrement vidéo (peut être utile pour indiquer que l\'appareil est en train d\'enregistrer à distance)
Divers
Aide en ligne
- Ouvre le site web de Open Camera dans votre navigateur
- Faire un don pour soutenir le développement
- Si vous aimez ce logiciel, n\'hésitez pas à faire un don. Vous pouvez le faire via l\'achat de mon «\u00A0application de don\u00A0» - Cliquer sur cette option va ouvrir la page de l\'application de don. Merci\u00A0!
+ Ouvre le site web de l\'application Appareil photo dans votre navigateur
+ Donner pour soutenir le développement
+ Si vous aimez cette application, n\'hésitez pas à faire un don. Vous pouvez le faire via l\'achat de mon « application de don » - Cliquer sur cette option va ouvrir la page de l\'application de don. Merci !
Utiliser l\'API Camera2
- Active l\'API Camera2 - permet d\'utiliser des fonctionnalités supplémentaires, mais reste encore expérimental (peut provoquer un redémarrage)
+ Active des fonctions supplémentaires telles que les modes manuels pour l\'exposition, la mise au point, la balance des blancs, ainsi que le mode RAW (s\'il est pris en charge par l\'appareil), mais peut ne pas fonctionner correctement sur tous les appareils (provoquera un redémarrage)
À propos
- Informations de l\'application et de debug
+ Infos sur l\'appli et de debogage
Réinitialiser les paramètres
- Réinitialise tout les paramètres aux valeurs par défaut d\'Open Camera
- Êtes-vous sûr de vouloir réinitialiser tout les réglages d\'Open Camera par défaut\u00A0?
-
+ Réinitialise tous les paramètres de l\'Appareil photo aux valeurs par défaut
+ Êtes-vous sûr de vouloir réinitialiser tous les réglages de l\'Appareil photo vers ceux par défaut ?
Disponible
Non disponible
Copier dans le presse-papier
-
Prendre une photo
- Gallerie
+ Galerie
Exposition
- Exposition bloquée
+ Exposition vérouillée
Mode focus
Mode flash
Utiliser la caméra frontale
@@ -246,70 +249,58 @@
Passer en mode photo
Effacer la dernière photo
Partager la photo
-
Dossier parent
Nouveau dossier
- Ne peux pas écrire dans ce dossier
- Ne peux pas accèder à ce dossier
- Nommer le nouveau dossier
+ Impossible d\'écrire dans ce dossier
+ Impossible d\'accèder à ce dossier
+ Entrez le nom du nouveau dossier
Impossible de créer le dossier
Dossier déjà existant
-
Sélectionnez un emplacement pour les enregistrements
- Storage Access Framework annulé
-
+ Structure d\'accès au stockage (SAF) annulée
Permission «\u00A0Microphone\u00A0» non disponible
Permission «\u00A0Position\u00A0» non disponible
-
- Démarrer l\'enregistrement de la vidéo
- Arrêter l\'enregistrement de la vidéo
-
+ Démarrer l\'enregistrement vidéo
+ Arrêter l\'enregistrement vidéo
Taille de fichier max
- Mo
- Go
-
+ Mo
+
+ Go
+
Démarrer l\'écoute de l\'audio
Arrêter l\'écoute de l\'audio
Dire «\u00A0cheese\u00A0»
Faire un bruit fort
- L\'auto-stabilisateur va automatiquement faire pivoter les photos pour qu\'elles
- apparaîssent de niveau.\n\nNotez que cela implique que les images apparaîtront avec une résolution légèrement
- inférieure (en relation avec la rotation et le rognage qui est nécessaire).
-
- Ne plus montrer
+ L\'auto-stabilisateur va automatiquement faire pivoter les photos pour qu\'elles apparaîssent à niveau.
+\n
+\nNotez que cela implique que les images apparaîtront avec une définition légèrement inférieure (à cause de la rotation et du rognage nécessaire).
+ Ne plus afficher
Impossible d\'enregistrer la photo RAW
- Le mode HDR est utile pour les prises de vue avec une grande variation de luminosité. Il
- fonctionne en prenant plusieurs prises avec des expositions différentes, puis en les combinant pour produire
- l\'image finale\nNotez que HDR n\'est pas approprié pour les scènes de mouvements et peut réduire la précision
- de la reproduction des couleurs.\n\nPrendre des photos en mode HDR
- sera également plus lent.
-
+ Le mode HDR est utile pour les prises de vue avec une grande variation de luminosité. Il fonctionne en prenant plusieurs prises avec des expositions différentes, puis en les combinant pour produire l\'image finale.
+\n
+\nNotez que HDR n\'est pas approprié pour les scènes avec des mouvements rapides et peut réduire la précision de la reproduction des couleurs.
+\n
+\nPrendre des photos en mode HDR sera également plus lent.
Mode photo
HDR
- Std
+ Std
+
Standard
Utiliser une tâche de fond
Permettre d\'enregistrer les photos dans une tâche de fond
(opération plus rapide)
- Incrustations photo
- Enregistrer toutes les images en mode HDR
- Si vous l\'activez, en mode photo HDR les trois images utilisées
- seront enregistrées en supplément de la photo finale HDR. Notez que ceci ralentira l\'enregistrement, plus
- particulièrement si les options «\u00A0Incrustation photo\u00A0» ou «\u00A0Auto-stabilisateur\u00A0» sont
- utilisées.
-
+ Incrustation photo
+ Enregistrer images du mode HDR
+ Si activé, en mode photo HDR les trois images utilisées seront enregistrées en supplément de la photo finale HDR. Notez que ceci ralentira l\'enregistrement, plus particulièrement si les options « Incrustation photo » ou « Auto-stabilisateur » sont également activées.
RAW
Format de l\'heure pour le nom de fichier
- Les fichiers DNG contiennent toutes les informations non compressées ni traitées de votre
- caméra.\n\nLa plupart des applications d\'affichage d\'image ne reconnaissent pas le DNG. Vous devrez utiliser une app
- spécialisée\n\nNotez que certaines options comme «\u00A0Incrustation photo\u00A0» ou
- «\u00A0Auto-stabilisateur\u00A0» ne s\'appliquent que pour des images JPEG et pas DNG.\n\nLes fichiers DNG
- utilisent beaucoup d\'espace disque, un explorateur de fichiers peut être utilise pour faire le ménage.\n\nLes
- fichiers DNG ne sont enregistrés que dans le mode photo standard.
-
-
+ Les fichiers DNG contiennent toutes les informations non compressées et non traitées de votre appareil photo.
+\n
+\nN.B. : la plupart des applications d\'affichage d\'image ne reconnaissent pas le format DNG. Vous aurez besoin d\'un éditeur d\'images spécialisé pour exploiter les images dans ce format.
+\n
+\nCertaines options de traitement comme l\'« Incrustation photo » ou l\'« Auto-stabilisateur » ne s\'appliquent que pour les images qui sont dans un format différent de DNG (JPEG, etc.).
Illimité
3 secondes
5 secondes
@@ -334,51 +325,45 @@
30 minutes
45 minutes
1 heure
-
Par défaut
-
Par défaut
- aaaa-mm-jj
+ aaaa-mm-jj (ISO 8601)
jj/mm/aaaa
mm/jj/aaaa
Aucun
-
- Flash éteint
+ Flash désactivé
Flash auto
- Flash forcé
+ Flash activé
Torche
Yeux rouges
-
Caméscope
Micro externe (si présent)
Source audio par défaut
- Optimisé pour la voix
-
+ Optimisé pour les appels vocaux
Par défaut
- 100kbps
- 200kbps
- 500kbps
- 1Mbps
- 2Mbps
- 3Mbps
- 4Mbps
- 5Mbps
- 6Mbps
- 7Mbps
- 8Mbps
- 9Mbps
- 10Mbps
- 15Mbps
- 20Mbps
- 30Mbps
- 40Mbps
- 50Mbps
- 60Mbps
- 70Mbps
- 80Mbps
- 90Mbps
- 100Mbps
-
+ 100 kbit/s
+ 200 kbit/s
+ 500 kbit/s
+ 1 Mbit/s
+ 2 Mbit/s
+ 3 Mbit/s
+ 4 Mbit/s
+ 5 Mbit/s
+ 6 Mbit/s
+ 7 Mbit/s
+ 8 Mbit/s
+ 9 Mbit/s
+ 10 Mbit/s
+ 15 Mbit/s
+ 20 Mbit/s
+ 30 Mbit/s
+ 40 Mbit/s
+ 50 Mbit/s
+ 60 Mbit/s
+ 70 Mbit/s
+ 80 Mbit/s
+ 90 Mbit/s
+ 100 Mbit/s
Désactivé
2x
3x
@@ -393,32 +378,29 @@
200x
500x
Illimité
-
Pas de délai
- 1s
- 2s
- 3s
- 5s
- 10s
- 15s
- 20s
- 30s
- 1m
- 2m
- 5m
- 10m
- 20m
- 30m
- 1h
- 2h
-
- Par défaut
- 100Mo
- 200Mo
- 300Mo
- 500Mo
- 1Go
-
+ 1 s
+ 2 s
+ 3 s
+ 5 s
+ 10 s
+ 15 s
+ 20 s
+ 30 s
+ 1 min
+ 2 min
+ 5 min
+ 10 min
+ 20 min
+ 30 min
+ 1 h
+ 2 h
+ Par défaut de l\'appareil
+ 100 Mo
+ 200 Mo
+ 300 Mo
+ 500 Mo
+ 1 Go
Aucun
1 (1:1)
1.25 (5:4)
@@ -430,7 +412,6 @@
2.33 (21:9)
2.35 (47:20)
2.4 (12:5)
-
+3 (très sensible)
+2
+1
@@ -438,20 +419,554 @@
-1
-2
-3 (peu sensible)
-
Interface utilisateur pour gaucher
Interface utilisateur pour droitier
-
- Texte ombré
+ Texte avec ombre
Texte brut
-
- Off
+ Version
+ Camera est dérivée d\'Camera
+ Auteurs
+ Code source
+ Licence
+ Informations sur Caméra
+ Conditions d\'utilisation
+ (Votre voix peut être envoyée à des serveurs
+\ndistants par Android pour effectuer
+\nune reconnaissance vocale.)
+ Barre de réglage de la compensation de l\'exposition
+ Faire défiler les modes RAW
+ Modes du flash
+ Aperçu de l\'image…
+ Couleur à utiliser pour souligner les contours qui sont à la distance de mise au point
+\n%s
+ Augmenter ou diminuer la compensation de l\'exposition
+ Luminance
+ Minimal
+ Selfie
+ Aqua
+ Log (Fin)
+ Camera utilise des icônes du Material Design de Google (https://developer.android.com/design/downloads/index.html , https://design.google.com/icons/ , https://github.com/google/material-design-icons/ , https://google.github.io/material-design-icons/) qui sont sous licence Apache version 2.0. Certaines icônes ont été modifiées. Appuyez ici pour la licence complète.
+ whether a setting is turned on, e.g., \"Auto-stabilise: On\"
+ Touchez pour faire la mise au point, et appuyez sur le bouton d\'appareil photo blanc pour prendre des photos.
+\n
+\nPour désactiver la luminosité maximale de l\'écran, aller dans Paramètres/Interface à l\'écran/\"Forcer la luminosité maximale\". Pour enregistrer sur une carte SD sous Android 5+, aller dans Paramètres > Options supplémentaires de l\'appareil photo… > \"Structure d\'accès au stockage (SAF)\". Pour plus d\'aide, cliquez sur \"Aide en ligne\" dans les Paramètres.
+ Prendre une photo/vidéo lorsque un son est détecté. Quand cette option est activée, utilisez le bouton du microphone à l\'écran pour démarrer/arrêter l\'écoute.
+\n%s
+ Sélectionner l\'API Camera2 pour activer des fonctions supplémentaires telles que les modes manuels d\'exposition, de mise au point, de balance des blancs, ainsi que le mode RAW (s\'il est pris en charge par l\'appareil). La modification de l\'API entraînera un redémarrage.
+\n%s
+ Sélectionnez le format de fichier utilisé pour l\'enregistrement des photos. Cela concerne les photos \"standard\" (pas RAW). Seul le format JPEG permet de sauvegarder les métadonnées Exif. N.B : le format PNG ne permet pas d\'éviter véritablement les pertes, en effet il est converti à partir d\'un JPEG de qualité 100 %.
+\n%s
+ Enregistrer les images d\'origine ainsi que le rapport XML
+ Enregistrer ou non les images originales en mode panoramique. Notez que cela ralentira l\'enregistrement des photos panoramiques. Permet aussi la possibilité d\'enregistrer un fichier XML qui peut être utile pour signaler des problèmes de panorama.
+\n%s
+ Pour prendre une image panoramique, tenez votre appareil en orientation portrait, et cliquez pour prendre une photo afin de lancer le panorama. Ensuite, faites pivoter votre appareil vers la gauche ou vers la droite pour déplacer le cercle blanc centré sur le point bleu. Après la prise de chaque nouvelle image, continuez à faire tourner votre appareil pour couvrir chaque nouveau point bleu qui apparaît à son tour.
+\n
+\nCliquez sur l\'icône en forme de coche pour enregistrer le panorama, ou sur l\'icône en forme de croix pour l\'annuler.
+\n
+\nNotez que le traitement et l\'enregistrement des photos panoramiques peuvent prendre du temps.
+ Choisir si l\'option RAW doit ou non également s\'appliquer au mode bracketing de mise au point. Si cette option est désactivée, seuls les JPEG seront enregistrés en mode bracketing de mise au point.
+ Autorise RAW pour bracketing d\'expo
+ Autoriser RAW pour le bracketing de la mise au point
+ Choisir si l\'option RAW doit ou non également s\'appliquer au mode bracketing d\'exposition (ou au mode HDR lorsque \"Enregistrer toutes les images pour le mode HDR\" est activé). Si cette option est désactivée, seuls les JPEG seront enregistrés dans ces modes photo.
+ Afficher ou non une icône à l\'écran pour faire défiler les options flash, au lieu d\'afficher les options flash dans le menu contextuel. N.B. : la lampe torche ne fonctionne pas si cette icône est utilisée.
+ Couleur de soulignage de la mise au point
+ Si cette option est activée, des surbrillances seront affichées sur les bords (contours) au point. Cette option est principalement utile pour la mise au point manuelle, et peut être utilisée pour aider à déterminer quelles régions de l\'image sont au point.
+\n%s
+ Soulignage de la mise au point
+ Afficher des zébrures
+ Si cette option est activée, des bandes zébrées seront dessinées à l\'écran, indiquant l\'endroit où l\'aperçu de la caméra est sur-exposé.
+\n%s
+ Luminosité (Moyenne des min-max)
+ Kraken Smart Housing
+ Bracketing de la mise au point annulé
+ Algorithme mode amélioration bords
+ Algorithme que le pilote de la caméra doit utiliser pour appliquer l\'amélioration des bords. L\'amélioration des bords améliore la netteté et les détails de l\'image capturée. (Ce paramètre est ignoré en mode réduction de bruit (NR).)
+\n%s
+ Afficher ou non le niveau sonore à l\'écran pendant l\'enregistrement vidéo
+ Afficher l\'indicateur niveau audio
+ Non traité
+ Profil logarithmique
+ Définir un profil d\'image standard ou plat pour le mode vidéo
+\n%s
+ Profils d\'image vidéo
+ Permet une capture plus rapide des prises de vue du HDR/expo. Désactivez cette fonction si votre appareil a des problèmes pour prendre des photos en mode HDR ou Expo.
+ Activer la rafale rapide de HDR/expo
+ API Camera2
+ Images d\'origine du panorama
+ En mode panoramique, suppression des bordures floues
+\n%s
+ Rechercher
+ Télécommande actuelle :
+ Restant
+ Télécommande connectée
+ Baisser luminosité si télécommande se déconnecte
+ Recherche d\'appareils BLE
+ Type d\'appareil distant
+ Activer les télécommandes Bluetooth LE (BLE)
+ Activer le contrôle à distance par Bluetooth LE
+ Télécommande Bluetooth LE…
+ Afficher icône verr. expo. auto
+ Afficher icône verr. bal. blancs auto
+ Désactiver le stabilisateur automatique
+ Activer le stabilisateur automatique
+ Afficher ou non à l\'écran une icône permettant d\'activer ou de désactiver le stabilisateur automatique. Lorsque celui-ci est actif, les photos subiront une rotation pour être ajustées à une prise de vue horizontale.
+ Afficher icône stabilisateur auto
+ Mode réduct. bruit
+ WebM (audio non supporté)
+ Quand utiliser l\'algorithme d\'amélioration de contraste HDR. Celui-ci peut améliorer l\'image lorsque la scène contient une large gamme de contrastes, et donne au résultat une apparence spécifique de l\'HDR.
+\n%s
+ Zoomer ou non lors du réglage de la distance de mise au point manuelle
+\n%s
+ Ajouter une distance infinie
+ Bracketing de mise au point
+ Focus {}
+ Log (Très fort)
+ Log (Fort)
+ Log (Moyen)
+ Log (Faible)
+ Aucun fichier de dialogue trouvé sur cet appareil, l\'option d\'image rémanente n\'est pas prise en charge
+ Dernière photo prise
+ Superposer une image, pour aider à l\'alignement.
+\n%s
+ Algorithmes pour aider avec le clignotement de la lumière.
+\n%s
+ Suppression des bandes
+ Torche d\'écran
+ Étiquettes EXIF personnalisées
+ Grande vitesse
+ Sports
+ Sous-titres des vidéos
+ Afficher les lignes de direction de la boussole
+ Afficher les lignes de direction de la boussole
+ Afficher les lignes de niveau horizontales
+ Afficher les lignes de niveau
+ Étalonner le niveau d\'angle
+ Inverser en mirroir l\'image de l\'appareil photo frontal
+\n%s
+ Effet miroir de l\'appareil photo frontal
+ Grave erreur de caméra
+ Vérification batterie critique
+ Nombre de pas à déduire/ajouter pour l\'image la plus sombre/brillante
+\n%s
+ Nombre d\'images pour le mode bracketing d\'exposition
+\n%s
+ Utiliser méthode de flash alternative
+ La permission d\'accès à la localisation est requise pour géolocaliser vos photos (stockage des données de localisation dans les photos et vidéos, incrustation et sous-titres inclus). Cette permission est également requise (du moins pour Android 11 et précédents) pour se connecter à des télécommandes Bluetooth LE.
+ NR
+ []]]
+ Veuillez cliquer ici pour obtenir des informations complètes sur les licences en ligne (s\'ouvre dans votre navigateur).
+ Licences en ligne
+ Icônes Material Design de Google
+ Camera est © 2013–2019 Mark Harman, diffusé sous la licence GPL v3 ou ultérieure. Appuyez ici pour voir le texte intégral de la licence.
+ Licences Open Source
+ Politique de confidentialité en ligne
+ Afficher la politique de confidentialité
+ Politique de confidentialité
+ API caméra d\'origine
+ API de la caméra
+ ID
+ Enregistrer les images d\'origine
+ Ne pas sauvegarder les images originales
+ Recadrage automatique du panorama
+ Échec de la création de l\'image panoramique
+ Panorama annulé
+ Annuler le panorama
+ Terminer le panorama
+ Enregistrement des images en cours…
+ Afficher à l\'écran une icône permettant de faire défiler les modes RAW
+ Afficher l\'icône RAW
+ Afficher l\'icône du flash
+ Activé
+ Désactivé
+ 100 %
+ 90 %
+ 80 %
+ 70 %
+ Désactivé
+ Intensité (Moyenne)
+ Valeur (Maximum)
+ Couleurs RGB
+ Désactivé
+ Afficher ou non à l\'écran l’histogramme des couleurs présentes
+\n%s
+ Afficher un histogramme
+ Ne plus enregistrer la géolocalisation
+ Enregistrer la géolocalisation
+ Afficher ou non à l\'écran une icône permettant d\'activer ou de désactiver l\'insertion de la géolocalisation dans les métadonnées de l\'image
+ Afficher icône géolocalisation
+ Utiliser l\'eau salée pour les calculs de profondeur
+ Pour les boîtiers sous-marins, améliore la précision si le type d\'eau sélectionné est correct.
+ Astuce : ajustez le niveau de luminosité au minimum avant de lancer Camera.
+ Dispositif inconnu
+ Bluetooth non pris en charge.
+ BLE non pris en charge
+ Utiliser les adresses
+ Afficher ou non à l\'écran une icône permettant le verrouillage ou déverrouillage de l\'exposition automatique
+ Balance des blancs déverrouillée
+ Balance des blancs verrouillée
+ Déverrouiller la balance des blancs
+ Verrouiller la balance des blancs
+ Afficher ou non à l\'écran une icône permettant de verrouiller ou déverrouiller la balance des blancs automatique
+ Si possible, obtenir l\'adresse grâce à la localisation GPS (pour l\'incrustation sur les photos ou les sous-titres vidéo). N.B. : si cette option est activée, votre appareil transmettra les données de localisation à un tiers par Internet afin de convertir les coordonnées GPS en une adresse. Cf. https://developer.android.com/reference/android/location/Geocoder. Cette fonctionnalité ne garantit ni la disponibilité ni l\'exactitude. Les résultats obtenus sont des estimations, rien de garantit qu\'elles soient utiles ou correctes.
+\n%s
+ Texte avec ombrage
+ Ne pas afficher l\'adresse
+ Préférer l\'adresse aux coordonnées GPS
+ Si possible, affiche l\'adresse en plus des coordonnées GPS
+ Afficher ou non une icône sur l\'écran permettant de définir un texte d\'incrustation personnalisé
+ Afficher l\'icône d\'incrustation de texte personnalisé
+ Incrustation désactivée
+ Incrustation activée
+ Désactiver l\'incrustation
+ Activer l\'incrustation
+ Afficher ou non à l\'écran une icône permettant d\'activer ou de désactiver l\'incrustation sur les photos
+ Afficher l\'icône d\'incrustation
+ Utilisé pour l\'altitude GPS lors de l\'incrustation sur les photos et dans les sous-titres vidéo
+\n%s
+ Reconnaissance des visages désactivée
+ Reconnaissance des visages activée
+ Désactiver la reconnaissance des visages
+ Activer la reconnaissance des visages
+ Afficher ou non à l\'écran une icône permettant d\'activer ou de désactiver la reconnaissance des visages
+ Afficher l\'icône de détection des visages
+ Icônes en haut (portrait)
+ Faible luminosité
+ Normal
+ Format d\'image
+ Aucun fichier de dialogue trouvé, cette option n\'est pas disponible
+ Échec de la restauration des paramètres
+ Échec de la sauvegarde des paramètres
+ Paramètres sauvegardés
+ Cette option vous permet de sélectionner un des fichiers de paramètres que vous avez précédemment enregistrés. Soyez averti que la sélection d\'un fichier à charger écrasera tous les paramètres actuels !
+ Restaure les paramètres précédemment enregistrés. Cela écrasera tous les paramètres actuels avec les paramètres sauvegardés !
+ Restaurer les paramètres
+ Nom de la sauvegarde des paramètres
+ Enregistre tous les réglages de l\'Appareil photo dans un fichier
+ Enregistrer les paramètres
+ Gestionnaire des paramètres
+ Par défaut
+ Formats et codecs des fichiers audio et vidéo
+\n%s
+ Format vidéo
+ Toujours
+ Intelligent
+ Désactivé
+ Amélioration du contraste HDR
+ 9 Go
+ 5 Go
+ 2 Go
+ 0,5 s
+ Précédent
+ 4x
+ 2x
+ Désactivé
+ Mise au point assistée
+ Haute qualité
+ Rapide
+ Désactivé
+ Par défaut
+ Algorithme que le pilote de la caméra doit utiliser pour appliquer la réduction du bruit. L\'algorithme de réduction du bruit tente d\'améliorer la qualité de l\'image en supprimant le bruit excessif ajouté par le processus de capture, en particulier dans des conditions d\'obscurité. (Notez que cela n\'est pas lié à la réduction du bruit du mode photo, et en fait ce paramètre est ignoré dans ce cas).
+\n%s
+ Algorithme de réduction du bruit
+ Traitement des paramètres…
+ Afficher ou non des informations sur les nouvelles fonctionnalités et les améliorations lorsque l\'application a été mise à jour
+ Afficher les nouveautés
+ 150
+ 100
+ 50
+ 40
+ 30
+ 25
+ 20
+ 15
+ 12
+ 10
+ 8
+ 6
+ 5
+ 4
+ 3
+ 2
+ Nombre de photos
+ 20
+ 15
+ 12
+ 10
+ Pano
+ Panorama
+ Mode faible luminosité : veuillez maintenir l\'appareil immobile
+ Déverrouiller l\'exposition
+ 8
+ 6
+ 5
+ 4
+ 3
+ 2
+ Nombre de photos
+ DNG (RAW) seulement
+ Standard et DNG (RAW)
+ Non
+ Traitement…
+ Texte à enregistrer dans les métadonnées pour l\'étiquette droit d\'auteur (format JPEG uniquement). (Laisser vide pour aucune.)
+ Copyright
+ Texte à enregistrer dans les métadonnées pour l\'étiquette artiste (format JPEG uniquement). (Laisser vide pour aucune.)
+ Artiste
+ au centre
+ en bas de l\'écran
+ en haut de l\'écran
+ à droite de l\'écran
+ à gauche de l\'écran
+ visages
+ visage
+ Faire un don
+ Nouveautés :
+ Tableau blanc
+ Solariser
+ Sépia
+ Postériser
+ Aucun
+ Négatif
+ Mono
+ Tableau noir
+ Théâtre
+ Coucher de soleil
+ Photo stable
+ Neige
+ Portrait
+ Fête
+ Portrait de nuit
+ Nuit
+ Paysage
+ Feux d\'artifice
+ Auto
+ Lumière de bougie
+ Plage
+ Code barre
+ Action
+ Manuel
+ Chaud
+ Crépuscule
+ Ombrage
+ Incandescent
+ Fluorescent
+ Lumière du jour
+ Nuageux
+ Auto
+ Échec de la création d\'une image HDR
+ Échec de l\'initialisation de l\'écoute audio
+ Capture…
+ Reprendre l\'enregistrement vidéo
+ Mettre l\'enregistrement vidéo en pause
+ Reprise de la vidéo
+ Vidéo mise en pause
+ Affiche l\'icône pour prendre des photos et enregistrer des vidéos. Décochez si vous préférez prendre des photos avec une autre méthode (par ex., si votre appareil a un bouton déclencheur matériel, ou en utilisant les boutons de volume).
+ Afficher l\'icône « Prendre la photo »
+ Créer un fichier de sous-titres (.SRT) enregistrant la date et l\'heure, ainsi que les coordonnées GPS si la localisation/direction est activée (sur Android 11+, cette option nécessite que l\'option \"Options supplémentaires de l\'appareil photo > Structure d\'accès au stockage (SAF)\" soit activée).
+\n%s
+ DRO
+ Étalonnage du niveau réinitialisé
+ Niveau étalonné
+ Réinitialiser
+ ft
+ Pieds
+ Mètres
+ Unité de distance
+ Inconnue
+ Haute
+ Moyenne
+ Faible
+ Non fiable
+ La boussole de votre appareil doit être calibrée pour améliorer sa précision. Ceci peut être fait en déplaçant votre appareil selon un mouvement en forme de 8.
+\n
+\nPrécision actuelle :
+ Direction de la boussole
+ Distance de la source du bracketing de la mise au point
+ Distance de la cible pour le bracketing de la mise au point
+ pas de rafale
+ 200 Mbps
+ 150 Mbps
+ Optimisé pour la reconnaissance vocale
+ Par défaut
+ Autorise la prise de photos pendant l\'enregistrement vidéo. À désactiver si des problèmes se manifestent lors de l\'enregistrement vidéo avec l\'API Camera2 activée.
+ Autoriser les photos pendant l\'enregistrement vidéo
+ Impossible d\'ouvrir cette image
+ Image sélectionnée
+ Désactivé
+ Image rémanente
+ Désactivé
+ 60 Hz
+ 50 Hz
+ Automatique
+ Flash écran activé
+ Flash écran auto
+ Ralenti désactivé
+ Ralenti activé
+ Normal
+ Vitesse
+ 200
+ Étalonner
+ Veuillez placer votre appareil sur une surface horizontale de façon qu\'il soit à plat (en mode portrait ou paysage), puis sélectionnez Étalonner.
+\n
+\nAppuyez sur Réinitialiser pour supprimer l\'étalonnage de votre appareil.
+\n
+\nAppuyez sur le bouton retour pour annuler.
+ Cette option permet d\'étalonner l\'accéléromètre de votre appareil, de sorte que les options de niveau automatique et de niveau/angle à l\'écran fonctionnent correctement
+ Enregistrement vidéo
+ Appareil photo
+ Vitesse d\'obturation
+ Clair
+ Sombre
+ Interrompre l\'enregistrement vidéo si le niveau de la batterie est très faible. Cela aide à réduire le risque de corruption de vos vidéos si votre appareil s\'éteint brusquement à cause d\'un manque d\'énergie.
+ Vidéo arrêtée
+\nNiveau de batterie critique
+ Pas assez d\'espace libre pour enregistrer des vidéos
+ s
+ Sauvegarder toutes les images originales (lent)
+ Sauvegarder une seule image originale
+ Images d\'origine pour la réduction du bruit
+ Sauvegarder ou non les images originales en mode réduction du bruit . Notez que ceci peut rendre l\'enregistrement des photos nettement plus lent.
+\n%s
+ Bracketing d\'exposition
+ Bracketing d\'exposition
+ Camera
+ PNG
+ WebP
+ JPEG
+ 3GPP
+ MPEG4 HEVC
+ MPEG4 H264
+ 2 (2:1)
+ Ne pas sauvegarder les images originales
+ Pas du bracketing d\'exposition
+ Activez ceci si votre appareil a un bogue de comportement du flash avec Camera2 API
+ Options de débogage
+ Options de débogage
+ La permission d\'utiliser le microphone est requise pour enregistrer des vidéos avec audio ainsi que pour utiliser les options de « Contrôle audio »
+ La permission de lire/écrire dans le stockage est requise pour sauvegarder les fichiers créés comme les photos et vidéos.
+ La permission d\'accès à l\'appareil photo est requise pour activer l\'appareil photo
+ Permission requise
+ PAS DE PERMISSIONS
+ Réduction de bruit (NR)
+ Rafale rapide
+ Expo {}
+ Impossible de sauvegarder dans ce dossier
+ Suivant
+ Désactivé
Masquer uniquement les boutons de navigation virtuelle de l\'écran
Masquer l\'interface graphique
Tout masquer
-
Aucun
Bruit fort
- Commande vocale : « cheese »
+ Commande vocale : « cheese »
+
+ 99%
+ 98%
+ 97%
+ 95%
+ 93%
+ Passer
+ Suivant
+ Extension : Nuit
+ X-Nuit
+ Extension : HDR
+ X-HDR
+ Extension : Auto
+ X-Auto
+ Appareil inconnu (permissions de connexion Bluetooth indisponibles)
+ Les permissions de scan/connexion Bluetooth sont nécessaires pour détecter les télécommandes Bluetooth LE et s\'y connecter.
+ Essayez d\'activer ce paramètre si votre appareil a du mal à prendre des photos en mode HDR ou Expo (si l\'image expo se révèle avoir la même exposition). Cela n\'est pertinent que si l\'option HDR/expo ci-dessous est également activée.
+ Activer la capture HDR/expo fix factice
+ Barre de progression pour modifier la valeur de préférence appliquée
+ Sauvegarder le lacet, le tangage et le roulis de l\'appareil dans le commentaire utilisateur Exif (format JPEG seulement)
+ Sauvegarder le lacet, le tangage et le roulis
+ Ralenti
+ Fréquence de trame
+ Bit par seconde
+ 4K UHD
+ Ouverture
+ Autoriser les actions par pression longue
+ Permettre ou non les actions déclenchées par pression longue (ex. : une pression longue sur la galerie pour changer le lieu de stockage).
+ Afficher l\'identifiant de la caméra actuelle sur l\'écran
+ Afficher l\'identifiant de la caméra/lentille
+ Si activé, utilise des boutons différents pour basculer entre les caméras arrière et avant, et pour basculer entre les différentes lentilles sur chaque façade. Si désactivé, l\'icône de basculement de caméra parcourra toutes les caméras.
+ Icône de caméras multiples
+ Basculer entre plusieurs caméras
+ Changer de caméra
+ Basculer sur la caméra externe
+ Grand-angle
+ Caméra externe
+ Blanc
+ Transparent
+ Orange
+ Rouge
+ Noir
+ Couleur à utiliser pour les rayures quand elles sont affichées.
+\n%s
+ Couleur à utiliser en arrière plan des rayures quand elles sont affichées.
+\n%s
+ Couleur d\'arrière plan des rayures
+ Couleur des rayures
+ Valeur Alpha des images fantômes. Plus la valeur est faible plus c\'est transparent, plus elle est élevée plus c\'est opaque.
+\n%s
+ Opacité de l\'image fantôme
+ Atténuer seulement les boutons de navigation virtuelle à l\'écran
+ 2,8
+ 2,6
+ 2,4
+ 2,3
+ 2,2
+ 2,1
+ 2,0
+ 1,9
+ 1,8
+ 1,6
+ Valeur gamma à utiliser pour la vidéo si le profil d\'image vidéo est défini à Gamma
+\n%s
+ Valeur du gamma vidéo
+ Gamma
+ sRGB
+ REC709
+ Sélectionnez la télécommande
+ Retour
+ Extension : Beauté / Retouche faciale
+ X-Bty
+ Extension : Bokeh
+ X-Bokeh
+ QR Code
+ Ajouter un contact
+ Ajouter un contact
+ Ajouter des évènements au calendrier
+ Ajouter cet évènement au calendrier
+ Ouvrir cette localisation
+ Ouvrir cette localisation
+ Envoyer un nouveau couriel
+ Composer un nouveau courriel pour les courriels spécifiés
+ Regarder cet ISBN
+ Recherchez cet ISBN sur isbnsearch.org
+ Rechercher un produit
+ Consulter le code-barres de l\'ID de ce produit
+ Envoyer un nouveau SMS
+ Envoyer un nouveau SMS aux destinataires spécifiés
+ Appeler le numéro de téléphone
+ Appeler le numéro de téléphone
+ Rechercher VIN
+ Recherche du numéro d\'identification du véhicule (VIN)
+ Se connecter à ce réseau Wi-Fi
+ Ajouter ce réseau Wi-Fi à la liste des réseaux connus et y connecter l\'appareil
+ Icône
+ Partager
+ Copier vers le presse papier
+ "Pas d'application disponible pour prendre en compte cette action "
+ Texte
+ Configurer cet appareil
+ Wi-Fi Easy Connect™ (DPP)
+ Manipuler ce code QR FIDO
+ Utiliser le mot de passe
+ Partager avec
+
+ VOTRE INTERRUPTEUR DE CONFIDENTIALITÉ DOIT ÊTRE ACTIVÉ
+ CAR LA CAMÉRA N\'EST PAS DISPONIBLE ;-)
-
+ VEUILLEZ ATTENDRE 5 SECONDES POUR VOTRE CAMÉRA
+ POUR QU\'ELLE SE CHARGE, CAR ELLE VIEN DE ÊTRE ACTIVÉE
+
\ No newline at end of file
diff --git a/app/src/main/res/values-gd/strings.xml b/app/src/main/res/values-gd/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f5520def8e138034094833cca56089d80ebd470f
--- /dev/null
+++ b/app/src/main/res/values-gd/strings.xml
@@ -0,0 +1,897 @@
+
+
+ Dheth
+ Air adhart
+ Teirmichean na seirbheise
+ Ceadachas
+ Bun-tùs
+ Ùghdaran
+ Tionndadh na togail
+ Roghainnean
+ 4x
+ 3x
+ 2x
+ Air ais
+ 4x
+ 2x
+ Dheth
+ Taic fòcais
+ Càileachd àrd
+ Luath
+ Fìor-bheag
+ Dheth
+ Bun-roghainn
+ troigh
+ Troigh
+ Meatair
+ Aonad an astair
+ Chan eil fhios
+ Àrd
+ Meadhanach
+ Ìseal
+ Neo-earbsach
+ 500kb/s
+ 200kb/s
+ 100kb/s
+ Bun-roghainn
+ Camara video
+ Bun-roghainn
+ Dheth
+ Dheth
+ 60Hz
+ 50Hz
+ Fèin-obrachail
+ Sùil dhearg
+ Leus
+ Tha an solas-boillsgidh air
+ Solas-boillsgidh fèin-obrachail
+ Tha an solas-boillsgidh dheth
+ Àbhaisteach
+ Luaths
+ 200
+ 150
+ 100
+ 50
+ 40
+ 30
+ 25
+ 20
+ 15
+ 12
+ 10
+ 8
+ 6
+ 5
+ 4
+ 3
+ 2
+ 20
+ 15
+ 12
+ 10
+ 8
+ 6
+ 5
+ 4
+ 3
+ 2
+ Chan eil gin
+ mm/ll/bbbb
+ ll/mm/bbbb
+ bbbb-mm-ll (ISO 8601)
+ Bun-roghainn
+ Chan eil
+ ’Ga phròiseasadh…
+ Còir-lethbhreac
+ Neach-ealain
+ Bun-roghainn
+ aodannan
+ aodann
+ Thoir tabhartas dhuinn
+ Na tha ùr:
+ Clàr-geal
+ Grianach
+ Sepia
+ Postairich
+ Chan eil gin
+ Ais-thionndaidh
+ Mono
+ Clàr-dubh
+ Aqua
+ Taigh-cluiche
+ Laighe na grèine
+ Dealbh seasmhach
+ Spòrs
+ Sneachd
+ Portraid
+ Cèilidh
+ Portraid air an oidhche
+ Oidhche
+ Cruth-tìre
+ Cleasan-teine
+ Fèin-obrachail
+ Solas-coinnle
+ Tràigh
+ Bàr-chòd
+ Gnìomh
+ A làimh
+ Blàth
+ Camhanaich
+ Solas-dealain
+ Fluaraiseach
+ Solas an latha
+ Neulach
+ Fèin-obrachail
+ ’Ga ghlacadh…
+ Tha a’ video ’na stad
+ Seall ìomhaigheag “Tog dealbh”
+ Uair a thìde
+ 45 mionaid
+ 30 mionaid
+ 25 mionaid
+ 20 mionaid
+ 15 mionaidean
+ 12 mhionaid
+ 11 mhionaid
+ 10 mionaidean
+ 9 mionaidean
+ 8 mionaidean
+ 7 mionaidean
+ 6 mionaidean
+ 5 mionaidean
+ 4 mionaidean
+ 3 mionaidean
+ 2 mhionaid
+ Mionaid
+ 30 diog
+ 15 diogan
+ 10 diogan
+ 5 diogan
+ 3 diogan
+ Gun chrìoch
+ Ath-shuidhich
+ Cailbhrich
+ Fèineag
+ Clàraich video
+ Camara
+ Luaiths an t-siutair
+ Soilleir
+ Dorcha
+ d
+ Roghainnean dì-bhugachaidh
+ Roghainnean dì-bhugachaidh
+ Tha feum air cead
+ Ma tha seo an comas, nuair a chleachdas tu modh HDR nan dealbhan, thèid trì dealbhan le bun-deisearas a shàbhaladh agus an dealbh HDR deireannach. Thoir an aire gun doir an sàbhaladh barrachd ùine le sin, gu h-àraidh ma tha “Cuir stampa air dealbhan” no an còmhnardachadh fèin-obrachail an comas.
+ Glanadh faraim
+ NR
+ HDR
+ Stannardach
+ Modh nan dealbhan
+ Na seall seo a-rithist
+ Tha am modh HDR feumail airson dealbhan le soilleireachd glè chaochlaideach. Togaidh am modh seo iomadh dealbh le deisearas eadar-dhealaichte is cuiridh e ri chèile iad airson an dealbh deireannach a chruthachadh.
+\n
+\nThoir an aire nach eil am modh HDR iomchaidh do sheallaidhean le gluasad luath annta is nach bi a dathan buileach fìrinneach ’s dòcha.
+\n
+\nBidh togail dhealbhan sa mhodh HDR nas slaodaiche.
+ Gabhaidh faidhlichean DNG a-staigh am fiosrachadh tùsail on chamara agad gun dùmhlachadh no pròiseasadh.
+\n
+\nThoir an aire nach aithnich a h-uile aplacaid gailearaidh faidhlichean DNG. ’S urrainn dhut dealbhan DNG a chleachdadh le deasaichean sònraichte, can Snapseed no Lightroom.
+\n
+\nThoir an aire nach dèid cuid a roghainnean pròiseasaidh mar stampa air dealbhan agus an còmhnardachadh fèin-obrachail a chur an sàs ach air dealbhan nach eil ’nan DNG (can JPEG) agus chan ann air na dealbhan DNG fhèin.
+ Nì an còmhnardachadh fèin-obrachail cuairteachadh air na dealbhan ach am bi coltas còmhnard orra.
+\n
+\nThoir an aire gur as ciall dha gum faigh thu dùmhlachd-bhreacaidh beagan nas lugha às (ri linn a’ chuairteachaidh ’s a bhearraidh a dh’adhbharaicheas sin).
+ Can caolas!
+ GB
+ MB
+ Cuir stad air a’ chlàradh a’ video
+ Tòisich air video a chlàradh
+ Tha am pasgan seo ann mu thràth
+ Dh’fhàillig cruthachadh a’ phasgain
+ Pasgan ùr
+ Pasgan pàrant
+ Co-roinn an dealbh
+ Geàrr leum gun chamara bheòil
+ Modh an t-solais-bhoillsgidh
+ Modh an fhòcais
+ Deisearas
+ Gailearaidh
+ Tog dealbh
+ Cuir lethbhreac dheth air an stòr-bhòrd
+ Chan eil seo ri fhaighinn
+ Ri fhaighinn
+ Ath-shuidhich na roghainnean
+ Mu dhèidhinn
+ Cobhair air loidhne
+ Measgaichte
+ Seanailean fuaime
+ Tùs fuaime
+ Clàraich fuaim
+ Reat fhrèaman a’ video (mu thuaiream)
+ Suidhich reat bhiodan mu thuaiream do videothan (is ciall do luach nas àirde gum faigh thu càileachd nas fheàrr ach bheir e barrachd àite air an diosg; dh’fhaoidte gum fàillig an clàradh video mur eil taic ris an reat bhiodan)
+\n%s
+ Reat bhiodan a’ video (mu thuaiream)
+ Lùghdaichidh bunailteachadh video an crathadh a dh’adhbharaicheas gluasad a’ chamara an dà chuid san ro-shealladh is sna videothan air an clàradh. Cha leig thu leas a chleachdadh ma chuireas an t-uidheam agad taic ri bunailteachadh deilbh fradharcach (OIS).
+ Cuir an comas bunailteachadh video digiteach
+ Cuir an comas dùmhlachd-bhreacaidh de 3840x2160 dhan chlàradh video leis a’ chamara cùil – ’s e hack a tha san roghainn seo feuch an cuir thu taic ri camara 4K air uidheam 4K nach nochd an roghainn seo do dh’aplacaidean camara threas-phàrtaidhean. Cha chuir sinn geall gun obraich e; cuir fo dheuchainn e mus cleachd thu e.
+ Spàrr video 4K UHD air (chan obraich seo ach air cuid a dh’uidheaman)
+ Dùmhlachd-bhreacaidh a’ video
+ Co-dhiù an dèid dealbhan a shàbhaladh le snàithlean sa chùlaibh (airson obrachadh nas luaithe)
+ Cleachd snàithlean sa chùlaibh
+ An stoidhle a thèid a chleachdadh do stampaichean teacsa air dealbhan
+\n%s
+ Stoidhle an teacsa
+ Dath a’ chrutha-chlò a thèid a chleachdadh do stampaichean teacsa air dealbhan
+ Dath a’ chrutha-chlò
+ Meud a’ chrutha-chlò a thèid a chleachdadh do stampaichean teacsa air dealbhan
+ Meud a’ chrutha-chlò
+ Cuir stampa le teacsa gnàthaichte air dealbhan
+ Teacsa gnàthaichte
+ Fòrmat an stampa GPS
+ Fòrmat an stampa-tìde
+ Fòrmat an stampa cinn-latha
+ Cuir stampa-tìde is -ama air dealbhan ’s cuir fiosrachadh GPS riutha cuideachd ma tha an dàta ionaid/comhair an comas
+\n%s
+ Cuir stampa air dealbhan
+ Ma tha dàta an ionaid an comas, na tog dealbh no video ach ma tha dàta an ionaid ri fhaighinn
+ Iarr dàta an ionaid
+ Cuir comhair na combaiste GPS ris na dealbhan (san fhòrmat JPEG a-mhàin)
+ Glèidh comhair na combaiste
+ Tha sinn duilich ach cha chuir an t-uidheam
+\nseo taic ri còmhnardachadh
+ Neo-ghlaiste
+ Tha an sgrìn glaiste
+\ngrad-shlaighd an sgrìn gus a neo-ghlasadh
+ Chan eil aplacaid gailearaidh ri làimh
+ Chaidh an dealbh a sguabadh às
+ Chan eil ionad GPS ri fhaighinn
+ Dh’fhàillig le togail an deilbh
+ A’ togail dealbh
+ Cha deach leinn ro-shealladh a’ chamara a thòiseachadh
+ Cha deach leis a’ chòmhnardachadh fhèin-obrachail
+ Cha deach leinn an dealbh RAW a shàbhaladh
+ Cha deach leinn an dealbh a shàbhaladh
+ Tha sinn duilich
+ Chaidh clàradh a’ video a thòiseachadh
+ Cha deach leinn a’ video a chlàradh
+ Cha deach leinn faidhle a’ video a shàbhaladh
+ Chaidh an tìmear a thòiseachadh
+ Chaidh sgur de mhodh na h-ath-thogail
+ Chaidh sgur dhen tìmear
+ Chaidh an deisearas a neo-ghlasadh
+ Chaidh an deisearas a ghlasadh
+ Video
+ Dealbh
+ Camara cùil
+ Camara beòil
+ Neo-chrìochnach
+ Astar an fhòcais
+ FPS
+ Co-leasachadh an deisearais
+ Ràinig a’ video am meud faidhle as motha
+ Ràinig a’ video an fhaide as motha
+ Thuislich am frithealaiche, chaidh stad a chur air a’ video
+ Mearachd nach aithne dhuinn, chaidh stad a chur air a’ video
+ chan eil an t-uidheam agad a’ cur taic ris
+ Mearachd, dh’fhaoidte gu bheil am faidhle video coirbte
+ Cha b’ urrainn dhuinn ath-cheangal ris a’ chamara
+ ath-thogail fhathast
+ Chaidh stad a chur air clàradh a’ video
+ Atharraich ionad an t-sàbhalaidh gu:
+ Tagh pasgan eile
+ A bheil thu airson an eachdraidh nam pasgan fhalamhachadh\?
+ Falamhaich an eachdraidh nam pasgan
+ Tagh ionad sàbhalaidh:
+ Dheth
+ Air
+ Ceart ma-thà (Cha nochd an teachdaireachd seo a-rithist)
+ Roghainnean priob-uinneige
+ Camara
+ Camara
+ Gluasad slaodach
+ Reat fhrèaman
+ Reat bhiodan
+ Fosgladh
+ Geàrr leum gu camara eile
+ Geal
+ Trìd-shoilleir
+ Orains
+ Dearg
+ Dubh
+ Dheth
+ 2.8
+ 2.6
+ 2.4
+ 2.3
+ 2.2
+ 2.1
+ 2.0
+ 1.9
+ 1.8
+ 1.6
+ Gamma
+ sRGB
+ REC709
+ ID
+ Teacsa lom
+ Teacsa sgàilichte
+ Sganaich
+ Ro-shealladh a’ chamara…
+ Air fhàgail
+ Air
+ Dheth
+ 100%
+ 99%
+ 98%
+ 97%
+ 95%
+ 93%
+ 90%
+ 80%
+ 70%
+ Dheth
+ Dheth
+ Uidheam nach aithne dhuinn
+ Cuairt-shealladh
+ Cuairt
+ Àbhaisteach
+ PNG
+ WebP
+ JPEG
+ Fòrmat an deilbh
+ Dh’fhàillig le sàbhaladh nan roghainnean
+ Aisig na roghainnean
+ Sàbhail na roghainnean
+ Bun-roghainn
+ Fòrmat video
+ An-còmhnaidh
+ Tapaidh
+ Dheth
+ -2
+ -1
+ 0 (bun-roghainn)
+ +1
+ +2
+ Chan eil gin
+ 9GB
+ 5GB
+ 2GB
+ 1GB
+ 500MB
+ 100MB
+ Bun-roghainn an uidheim
+ 2u
+ 1u
+ 30m
+ 20m
+ 10m
+ 5m
+ 2m
+ 1m
+ 30d
+ 20d
+ 15d
+ 10d
+ 5d
+ 3d
+ 2d
+ 1d
+ Gun dàil
+ Gun chrìoch
+ 500x
+ 200x
+ 100x
+ 50x
+ 40x
+ 30x
+ 20x
+ 10x
+ 5x
+ Cuir dàta an ionaid GPS ris na dealbhan/videothan (do dhealbhan, cha ghabh dàta an ionaid a chur ach ris an fhòrmat JPEG no DNG)
+ Glèidh dàta an ionaid (geò-tagadh)
+ RAW
+ Suidhich càileachd nan dealbhan JPEG no WebP a thèid a shàbhaladh (’s e 90%% a tha sa bhun-roghainn). Cha doir seo buaidh air dealbhan san fhòrmat PNG.
+\n%s
+ Càileachd nan dealbh
+ Dùmhlachd-bhreacaidh a’ chamara
+ Roghainnean ionaid…
+ Roghainnean a’ video…
+ Roghainnean an deilbh…
+ Roghainnean an deilbh ’s a’ video
+ Spàrr air taisbeanadh na sgrìn gun cleachd e an t-soilleireachd as motha seach bun-roghainn an uidheim
+ Spàrr an t-soillearachd as motha air
+ Ma tha seo an comas, cha dèid an sgrìn a chur dheth fhad ’s a bhios prìomh eadar-aghaidh a’ chamara gnìomhach
+ Cùm an taisbeanadh air
+ Seall iomall air an uidheam-taisbeanaidh a dh’innseas dhut nuair a bhios dealbh ’ga thogail
+ Seall iomall nuair a bhios tu a’ togail dealbh
+ Seall beòthachadh le dealbhag a’ gluasad nuair a bhios tu a’ togail deilbh
+ Seall dealbhagan beòthaichte
+ Co-dhiù an dèid teachdaireachdan fiosrachaidh sealach a shealltainn dhut air an sgrìn gus nach dèid
+ Seall teachdaireachdan air an sgrìn
+ Seallaidh treòir bearraidh ceart-cheàrnach a riochdaicheas an coltas a bhios air a’ cho-mheas deilbh a shònraich thu – tha seo feumail ma tha fainear dhut an dealbh no video a bhearradh gu co-mheas deilbh eile an uairsin. Bidh feum air modh dealbh WYSIWYG no modh video.
+\n%s
+ Seall treòir bearraidh
+ Griod
+ Seall griod
+ Seall ìre a’ bhataraidh air an sgrìn
+ Seall am bataraidh
+ Seall an t-àm làithreach air an sgrìn
+ Seall an t-àm
+ Seall comhair combaist an uidheim air an sgrìn
+ Seall comhair na combaiste
+ Dath soillseachaidh nuair a bhios an camara dha mhòr còmhnard
+ Dath soilleireachadh a’ cheàrna/na h-àirde
+ Seall loidhne còmhnardachaidh
+ Seall loidhne ceàrna
+ Seall ceàrn làithreach aig comhair an uidheim air an sgrìn
+ Seall an ceàrn
+ Seall air an sgrìn co mheud dhen stòras a tha air fhàgail air an uidheam
+ Seall a’ chuimhne shaor
+ Seall ìre làithreach an ISO. Ann am modh an t-solais-bhoillsgidh fhèin-obrachail, seallaidh samhla an t-solais bhoillsgidh an dèid a chleachdadh gus nach dèid. (Bidh feum air API Camera2.)
+ Seall ISO
+ Seall an sleamhnachan airson stiùireadh an t-sùm
+ Seall uidheam-smachd sleamhnachan sùm
+ Seall na putanan -/+ airson stiùireadh an t-sùm
+ Seall uidheaman-smachd -/+ an t-sùm
+ Seall an ìre làithreach air sùm a’ chamara air an sgrìn (nuair a chaidh a shùmadh a-steach)
+ Seall an sùm
+ Modh làn-tumaidh
+ Ionad air an eadar-aghaidh
+ Meud an ro-sheallaidh
+ Eadar-aghaidh air an sgrìn…
+ Roghainn airson an ro-shealladh a chuairteachadh (cha doir seo buaidh air na dealbhan no videothan a gheibh thu às
+\n%s
+ Cuairtich an ro-shealladh
+ Rè clàradh video, thèid an eadar-aghaidh a ghlasadh ach nach sguir thu dhen chlàradh ri mearachd. Grad-shlaighd air an sgrìn gus a’ ghlas a thoirt fo a bàrr. Thoir an aire gun dèid stad a chur air a’ chlàradh co-dhiù ma thèid an aplacaid dhan chùlaibh no an sgrìn a bhànadh.
+ Roghainnean na sgrìn-ghlasaidh rè clàradh video
+ Co-dhiù an dèid fòcas a chur air a’ chamara gu fèin-obrachail nuair a thèid a chur gu dol gus nach dèid. Ma tha duilgheadas agad le cur air an t-solais-bhoillsgidh aig an toiseach, cuir an roghainn seo à comas
+ Dèan fòcasachadh fèin-obrachail air aig àm tòiseachaidh
+ Ma tha seo an comas, chì thu an camara air sgrìn-ghlasaidh sam bith (feumaidh tu a’ ghlas a thoirt fo bhàrr airson na roghainnean ’s an gailearaidh is msaa. inntrigeadh)
+ Seall an camara rè a’ ghlasaidh
+ Fòrmat an ama do dh’ainmean faidhle
+ An ro-leasachan a thèid a chur ri ainmean faidhle nam videothan
+ Ro-leasachan sàbhaladh nam videothan
+ An ro-leasachan a thèid a chur ri ainmean faidhle nan dealbhan
+ Ro-leasachan sàbhaladh nan dealbh
+ Co-dhiù an dèid frèam-obrach inntrigeadh an stòrais a chleachdadh airson dealbhan is videothan a shàbhaladh. Bu chòir dhut seo a chur an comas ma tha thu airson sàbhaladh gu cairt SD air an taobh a-muigh.
+ Cleachd frèam-obrach inntrigeadh an stòrais
+ A pasgan far an dèid faidhlichean deilbh/video a shàbhaladh
+ Ionad sàbhalaidh
+ Mothalachd faraim do roghainn na fuaime (faram àrd)
+ Mothalachd stiùireadh na fuaime
+ Roghainnean stiùireadh na fuaime
+ Iuchraichean àirde na fuaime
+ Cluich fuaim nuair a thèid dealbh a thogail
+ Fuaim an t-siutair
+ Cuir an sgrìn ’na stad às dèidh dealbh a thogail leis an roghainn gus an dealbh a cho-roinneadh no a sguabadh às
+ Cuir ’na stad às dèidh dealbh a thogail
+ Tog dealbh le suathadh no gnogag dhùbailte air an ro-shealladh
+ Suath ris gus a ghlacadh
+ Barrachd uidheaman-smachd a’ chamara…
+ Tricead na h-ath-thogail
+ Ath-thog
+ Can an cunntadh sìos dhan tìmear no do dhàil na h-ath-thogail (o 60 diog)
+ Cunntadh sìos an tìmeir le guth
+ Dèan bìog nuair a bhios an tìmear a’ cunntadh sìos no airson dàil na h-ath-thogail
+ Bìog an tìmeir
+ Tìmear
+ Stiùireadh a’ chamara
+ Cleachd modhachadh do dh’aodannan seach raointean fòcais
+ Mothaich do dh’aodannan
+ Nuair a bhios seo air, thèid comhair an uidheim a leigeil seachad agus bidh comhair an deilbh/a’ video a-rèir na comhair a shònraicheas tu
+\n%s
+ Glais comhair an deilbh/a’ video
+ Suidhich air 0 airson co-leasachadh bunaiteach an deisearais
+ Suidhich co-leasachadh an deisearais
+ Is ciall do luach nas àirde gu bheil e nas mothachaile dhan t-solas (chan obraich seo air a h-uile uidheam)
+ Suidhich ISO
+ Tagh roghainn airson gleus a chur air a’ bhalans gheal
+ Suidhich am balans geal
+ Pisich an dealbh airson seallaidhean eadar-dhealaichte
+ Cuir modh seallaidh an sàs
+ Cuiridh seo an èifeachd datha a thagh thu an sàs air an dealbh
+ Cuir èifeachd datha an sàs
+ Thèid dealbhan a chuairteachadh gu fèin-obrachail gus am bi iad còmhnard (dealbhan-camara a-mhàin) (bidh togail dhealbhan nas slaodaiche agus dh’fhaoidte nach obraich e air uidheaman le cuimhne ghann)
+ Còmhnardaich gu fèin-obrachail
+ Èifeachdan a’ chamara
+ m
+ Cha deach leinn fiosrachadh stampa a chur ris an dealbh
+ Grad-shlaighd airson a’ ghlas a thoirt dheth]
+ [GLAISTE:
+ Saor
+ Sùm
+ ISO
+ A’ CLEACHDADH A’ CHAMARA AN-DRÀSTA.
+ DH’FHAOIDTE GU BHEIL APLACAID EILE
+ DH’FHÀILLIG LE FOSGLADH A’ CHAMARA.
+ Comhair
+ Ceàrn
+ Am balans geal
+ Modh seallaidh
+ Èifeachd dhathan
+ Air a char as fhaide
+ Tha an fhuaim à comas
+ 200Mb/s
+ 150Mb/s
+ 100Mb/s
+ 90Mb/s
+ 80Mb/s
+ 70Mb/s
+ 60Mb/s
+ 50Mb/s
+ 40Mb/s
+ 30Mb/s
+ 20Mb/s
+ 15Mb/s
+ 10Mb/s
+ 9Mb/s
+ 8Mb/s
+ 7Mb/s
+ 6Mb/s
+ 5Mb/s
+ 4Mb/s
+ 3Mb/s
+ 2Mb/s
+ 1Mb/s
+ An algairim a chleachdas draibhear a’ chamara airson faram a ghlanadh. Feuchaidh algairim glanadh an fharaim ri piseach a thoirt air càileachd an deilbh le toirt air falbh faraim anabarraich a chaidh a chur ris le pròiseas a’ ghlacaidh, gu h-àraidh nuair a bhios e dorcha. (Thoir an aire nach eil seo co-cheangailte ri modh glanadh faraim deilbh agus gun dèid an roghainn seo a chur dhan dàrna taobh an am modh NR deilbh.)
+\n%s
+ Algairim glanadh faraim
+ Roghainnean pròiseasaidh…
+ An algairim a chleachdas draibhear a’ chamara airson piseach a thoirt air an oir. Bheir piseach na h-oire geurad is mion-fhiosrachadh nas fheàrr dhut san dealbh a chaidh a ghlacadh. (Cuiridh modh NR an deilbh an roghainn seo dhan dàrna taobh.)
+\n%s
+ Algairim modh na h-oire
+ Gidheadh an dèid fiosrachadh mu ghleusan is pisich ùra a shealltainn dhut gus nach dèid nuair a bhios an aplacaid air a h-ùrachadh
+ Seall còmhradh mu na tha ùr
+ Thèid a chleachdadh airson àirde GPS do stampa an deilbh is fo-thiotalan video
+\n%s
+ Tha combaist an uidheim agad feumach air cailbhreachadh gus a phongalachd a phiseachadh. ’S urrainn dhut seo a dèanamh a ghluasad an uidheim agad ann an cumadh 8.
+\n
+\nA’ phongalachd làithreach:
+ Comhair na combaiste
+ Cuir astar neo-chrìochnach ris
+ Astar-amais airson bracketing an fhòcais
+ Astar-tùis airson bracketing an fhòcais
+ Bracketing an fhòcais
+ {} an fhòcais
+ Co-dhiù an dèid ìre na fuaime a shealltainn air an sgrìn rè clàradh video gus nach dèid
+ Seall meidheadair fuaime
+ gun bhòrcadh
+ Gun phròiseasadh
+ Pisichte airson aithneachadh gutha
+ Pisichte airson gairmean gutha
+ Tùs bunaiteach na fuaime
+ Micreofon on taobh a-muigh (ma tha gin ann)
+ Pròifil an loga
+ Loga (glè làidir)
+ Loga (làidir)
+ Loga (meadhanach)
+ Loga (ìosal)
+ Loga (fìne)
+ Cruthaich faidhle fho-tiotalan (.SRT) a ghlèidheas an ceann-là ’s an t-àm; agus fiosrachadh GPS cuideachd ma tha dàta an ionaid/na comhair an comas
+\n%s
+ Fo-thiotalan video
+ Seall loidhnichean comhair na combaiste
+ Seall loidhnichean comhair na combaiste
+ Seall loidhnichean pids còmhnard
+ Seall loidhnichean pids
+ DRO
+ Chaidh cailbhreachadh a’ chòmhnaird ath-shuidheachadh
+ Chaidh an còmhnard a chailbhreachadh
+ Cuir an t-uidheam agad air uachdar rèidh còmhnard far am bi e còmhnard (air comhair portraid no dreach-tìre) agus tagh “Cailbhrich” an uairsin.
+\n
+\nBrùth air “Ath-shuidhich” airson an cailbhreachadh a thoirt air falbh on uidheam agad.
+\n
+\nBrùth air a’ phutan “Air ais” airson sgur dheth.
+ Nì an roghainn seo cailbhreachadh air meidheadair-luathachaidh an uidheim agad ach an obraich an còmhnardachadh fèin-obrachail agus roghainnean a’ chòmhnardachaidh/a’ cheàrna air an sgrìn
+ Glais an deisearas
+ A bheil thu cinnteach gu bheil thu airson roghainnean uile a’ chamara ath-shuidheachadh air na bun-roghainnean\?
+ Aisig gach bun-roghainn a’ chamara
+ Fiosrachadh dì-bhugachaidh ’s na h-aplacaid
+ Cuiridh seo an comas barrachd roghainnean mar modhan a làimh dhan deisearas, dhan fhòcas is dhan bhalans gheal agus modh RAW (ma chuireas an t-uidheam taic ris) ach dh’fhaoidte nach obraich e mar bu chòir air a h-uile uidheam (bidh feum air ath-thòiseachadh)
+ Cleachd API Camera2
+ Mas toigh leat an aplacaid seo, saoil an doir thu tabhartas dhuinn airson taic a chur ris an obair-leasachaidh\? ’S urrainn dhut an aplacaid tabhartais againn a cheannach airson seo a dhèanamh – briog air an roghainn seo airson duilleag na h-aplacaid tabhartais againn fhosgladh. Mòran taing!
+ Thoir tabhartas dhuinn a chuireas taic ris an obair-leasachaidh
+ Suidhich pròifil stannardach no rèidh dhan mhodh video
+\n%s
+ Pròifil dealbh nam videothan
+ Ceadaich togail dhealbhan nuair ’s a bhios video ’ga chlàradh. Cuir seo à comas ma tha duilgheadas ann le clàradh videothan nuair a bhios API Camera2 an comas air an uidheam agad.
+ Ceadaich togail dhealbhan rè clàradh video
+ Cha ghabh an dealbh seo fhosgladh
+ Cha do lorg sinn còmhradh faidhle air an uidheam seo, chan eil taic ri gleus an deilbh taibhse
+ Dealbh air a thaghadh
+ An dealbh mu dheireadh a chaidh a thogail
+ Tar-chòmhdaich dealbh a chuidicheas leis a’ cho-thaobhadh.
+\n%s
+ Dealbh taibhse
+ Algairimean a chuidicheas le priobadh an t-solais.
+\n%s
+ Mùchadh a’ bhannachaidh
+ Leus na sgrìn
+ Tha boillsgeadh na sgrìn air
+ Boillsgeadh fèin-obrachail na sgrìn
+ Tha an gluasad slaodach à comas
+ Tha an gluasad slaodach an comas
+ Àireamh de dhealbhan
+ Àireamh de dhealbhan
+ DNG (RAW) a-mhàin
+ Stannardach agus DNG (RAW)
+ An teacsa a thèid a ghlèidheadh ann am meata-dàta an deilbh airson taga na còrach-lethbhreac (san fhòrmat JPEG a-mhàin). (Fàg bàn e mur eil thu ’ga iarraidh.)
+ An teacsa a thèid a ghlèidheadh ann am meata-dàta an deilbh airson taga an neach-ealain (san fhòrmat JPEG a-mhàin). (Fàg bàn e mur eil thu ’ga iarraidh.)
+ Tagaichean EXIF gnàthaichte
+ Fìor-luath
+ sa mheadhan
+ aig bonn na sgrìn
+ aig bàrr na sgrìn
+ taobh deas na sgrìn
+ taobh clì na sgrìn
+ Dubhar
+ Dh’fhàillig cruthachadh an deilbh HDR
+ Cha deach leinn tòiseachadh air èisteachd ris an fuaim
+ Lean air clàradh a’ video
+ Cuir clàradh a’ video ’na stad
+ A’ leantainn air a’ video
+ Seall an ìomhaigheag airson dealbhan a thogail ’s videothan a chlàradh. Thoir a’ chromag air falbh nam b’ fheàrr leat dealbhan a thogail air dòigh eile (m.e. ma tha putan siutair bathair-chruaidh aig an uidheam agad no ma bhios tu a’ cleachdadh iuchraichean àirde na fuaime).
+ Cuir làrach-lìn a’ chamara gu dol sa bhrabhsair agad
+ Ma tha seo an comas, thèid an solas-boillsgidh a chur air/dheth le clàradh video (agus chì thu aig astar a bheil an camara a’ clàradh fhathast gus nach eil)
+ Solas-boillsgidh rè clàradh video
+ Sònraich mono no stereo dhan chlàradh fuaime (cha chuir ach cuir a dh’uidheaman taic ri stereo)
+ Am micreofon a thèid a chleachdadh airson clàradh fuaime. Thoir an aire gu bheil giùlan nan roghainnean a-rèir an dòigh air an deach an roghainn seo a phrògramachadh dhan uidheam agad.
+\n%s
+ Clàraich an fhuaim nuair a thèid video a chlàradh
+ Co-dhiù an dèid clàradh video ath-thòiseachadh gu fèin-obrachail nuair a ruigeas e am meud faidhle as motha gus nach dèid (ge b’ e a bheil meud faidhle as motha a uidheim ’ga chleachdadh no an deach a shònrachadh le cleachdaiche)
+ Ath-thòisich às dèidh meud as motha an fhaidhle
+ Thèid stad a chur air clàradh videothan agus/no an ath-thòiseachadh (faic an roghainn gu h-ìosal) nuair a thèid meud as motha an fhaidhle a ruigsinn (mu thuaiream). Thoir an aire gu bheil meud as motha air iomadh uidheam Android a thaobh videothan (mu 2GB no 4GB mar as trice) ach leigidh an roghainn seo leat luach sònraichte a shuidheachadh. Thoir an aire nach urrainn dhut an roghainn seo a chleachdadh airson am meud as motha tùsail aig uidheam a mheudachadh.
+\n%s
+ Meud as motha nam faidhlichean video
+ Ma chaidh stad a chur air video às dèidh an fhaide as motha a ruigsinn (ma chaidh sin a shuidheachadh), bheir an roghainn seo ath-thòiseachadh air a’ video an àireamh de thursan a shònraich thu
+\n%s
+ Ath-thòisich a’ video às dèidh na faide as motha
+ Thèid stad a chur air clàradh videothan às dèidh na faide a shònraich thu
+\n%s
+ Faid as motha nam videothan
+ Suidhich reat fhrèaman (FPS) nam videothan (mu thuaiream, cha chuir sinn geall gun gabh a ruigsinn agus dh’fhaoidte gum fàillig le clàradh video mur eil taic ris an reat fhrèaman). Thoir sùil air na videothan a gheibh thu às airson an reat fhrèaman a chaidh a chleachdadh dha-rìribh fhaicinn. Thoir an aire gum fàg videothan le gluasad slaodach an roghainn seo air an dàrna taobh.
+\n%s
+ Cailbhrich ceàrn a’ chòmhnardachaidh
+ Co-dhiù an dèid na dealbhan a gheibh thu on chamara bheòil a sgàthanachadh gus nach dèid
+\n%s
+ Sgàthanaich an camara beòil
+ Gabhaidh togail HDR/deisearais a dhèanamh nas luaithe leis. Cuir seo à comas ma tha duilgheadas aig an uidheam agad nuair a bhios tu a’ togail dealbhan sa mhodh HDR no deisearais.
+ Cuir an comas HDR luath/bòrcadh an deisearais
+ Mearachd èiginneach a’ chamara
+ Cuir stad air clàradh video nuair a bhios am bataraidh èiginneach fann. Cuidichidh seo ach nach biodh na videothan coirbte nuair a thèid an t-uidheam agad a chur dheth gu h-obann air sàilleibh dìth cumhachd.
+ Sgrùd ìre èiginneach a’ bhataraidh
+ Chaidh stad a chur air a’ video
+\nTha am bataraidh èiginneach fann
+ Chan eil àite saor gu leòr ann gus a’ video a chlàradh
+ Sàbhail gach dealbh tùsail (slaodach)
+ Sàbhail aon dealbh tùsail
+ Na sàbhail na dealbhan tùsail
+ Co-dhiù an dèid na dealbhan tùsail a shàbhaladh sa modh glanadh faraim gus nach dèid. Thoir an aire gun doir sàbhaladh nan dealbhan mòran nas fhaide leis.
+\n%s
+ Dealbhan tùsail dhan ghlanadh faraim
+ Co mheud stadan a thèid a chur ris/a thoirt air falbh on dealbh as duirche/soilleire
+\n%s
+ Stadan bracketing an deisearais
+ An àireamh de dhealbhan do mhodh bracketing an deisearais
+\n%s
+ Bracketing an deisearais
+ Cuir seo an comas ma tha giùlan briste aig solas-boillsgidh an uidheim agad le API Camera2
+ Cleachd dòigh solais-bhoillsgidh eile
+ Tha feum air cead ionaid airson geò-tagadh (glèidheadh dàta mun ionad ann an dealbhan is videothan). Tha feum air cead ionaid cuideachd airson ceangal ri uidheaman-smachd cèine Bluetooth LE.
+ Tha feum air cead a’ mhicreofoin airson videothan le fuaim a chlàradh agus roghainnean stiùireadh na fuaime a chleachdadh
+ Tha feum air cead leughaidh/sgrìobhaidh gus dealbhan a shàbhaladh
+ Tha feum air cead air a’ chamara gus an camara a chur an comas
+ CHAN EIL NA CEADAN RI FHAIGHINN
+ Sàbhail gach dealbh airson modh HDR
+ Stampa deilbh
+ Bòrcadh luath
+ Bracketing an deisearais
+ {} deis
+ Std
+ Dèan fuaim àrd
+ Cuir stad air èisteachd ris an fhuaim
+ Tòisich air èisteachd ris an fhuaim
+ Meud as motha nam faidhlichean
+ Chan eil cead dhan ionad ri fhaighinn
+ Chan eil cead dhan mhicreofon ri fhaighinn
+ Chan urrainn dhuinn sàbhaladh dhan phasgan seo
+ Chaidh sgur de fhrèam-obrach inntrigeadh an stòrais
+ Tagh ionad sàbhalaidh
+ Cuir a-steach ainm pasgain ùir
+ Cha ghabh am pasgan seo inntrigeadh
+ Cha ghabh sgrìobhadh dhan phasgan seo
+ Sguab às an dealbh mu dheireadh
+ Geàrr leum gun mhodh deilbh
+ Geàrr leum gun mhodh video
+ Geàrr leum gun chamara chùil
+ Cuairteachadh an t-solais-bhoillsgidh
+ An dath a thèid a chleachdadh airson na h-iomallan mun fhòcas a shoilleireachadh.
+\n%s
+ Dath mullaichean an fhòcais
+ Ma tha an roghainn seo an comas, thèid iomallan mun fhòcas air an dealbh a shoilleireachadh. Tha seo feumail gu h-àraidh dhan fhòcas a làimh agus ’s urrainn dhut a chleachdadh airson faighinn a-mach dè na badan far a bheil fòcas air an dealbh.
+\n%s
+ Mullaichean an fhòcais
+ Ma tha an roghainn seo an comas, thèid stiallan sìobra a tharraing air an sgrìn a sheallas dhut far a bheil deisearas ro àrd air ro-shealladh a’ chamara.
+\n%s
+ Seall stiallan sìobra
+ Soilleireachd (cuibheas on tè as lugha/as motha)
+ Dèine (chuibheasach)
+ Luach (as otha)
+ Lùmanas
+ Dathan RGB
+ Co-dhiù an dèid hiostogram dhe na dealbhan a shealltainn air an sgrìn gus nach dèid
+\n%s
+ Seall hiostogram
+ Sguir de ghlèidheadh dàta an ionaid
+ Glèidh dàta an ionaid
+ Co-dhiù an dèid ìomhaigheag a shealltainn air an sgrìn gus nach dèid gus dàta an ionaid (geò-tagadh) a chur an comas no à comas
+ Seall ìomhaigheag airson dàta an ionaid a ghlèidheadh
+ Na seall an seòladh
+ ’S fheàrr leam seòladh na co-chomharran GPS
+ Cuir an seòladh ris na co-chomharran GPS ma ghabhas seo a dhèanamh
+ Cleachd seòlaidhean
+ Kraken Smart Housing
+ Chaidh uidheam-smachd cèin a cheangal ris
+ Airson còmhdachaidhean fon uisge, bheir seo barrachd phongalachd dhut ma thaghas tu an seòrsa de dh’uisge ceart.
+ Cleachd sàl airson àireamhachadh na doimhne
+ Leth-fhacal: suidhich an t-soilleireachd bhunaiteach air an ìre as lugha mus tòisich thu an camara.
+ Doilleirich an sgrìn nuair a thèid an uidheam-smachd cèin a dhì-cheangal
+ Chan eil taic ri Bluetooth.
+ Sganadh uidheaman BLE
+ Chan eil taic ri BLE
+ Seòrsa an uidheim-smachd chèin
+ Cuir an comas uidheaman-smachd cèin Bluetooth LE (BLE)
+ Cuir an comas uidheam-smachd cèin Bluetooth LE
+ Uidheam-smachd cèin Bluetooth LE…
+ Modh solais fhainn: cùm an camara seasmhach
+ Thoir a’ ghlas far an deisearais
+ Co-dhiù an dèid ìomhaigheag a shealltainn air an sgrìn gus nach dèid gus an deisearas a ghlasadh no neo-ghlasadh
+ Seall ìomhaigheag glaise dhan deisearas fhèin-obrachail
+ Tha am balans geal neo-ghlaiste
+ Tha am balans geal glaiste
+ Thoir a’ ghlas far a’ bhalans ghil
+ Glais am balans geal
+ Co-dhiù an dèid ìomhaigheag a shealltainn air an sgrìn gus nach dèid gus am balans geal fèin-obrachail a ghlasadh no neo-ghlasadh
+ Seall ìomhaigheag glaise dhan bhalans gheal fhèin-obrachail
+ Co-dhiù an dèid ìomhaigheag a shealltainn air an sgrìn gus nach dèid gus teacsa gnàthaichte ri stampadh air an dealbh a shònrachadh
+ Seall ìomhaigheag teacsa gnàthaichte dhan stampa deilbh
+ Tha stampa deilbh à comas
+ Tha stampa deilbh an comas
+ Cuir stampa deilbh à comas
+ Cuir stampa deilbh an comas
+ Co-dhiù an dèid ìomhaigheag a shealltainn air an sgrìn gus nach dèid gus stampa deilbh a chur an comas no à comas
+ Seall ìomhaigheag stampa deilbh
+ Cuir an còmhnardachadh fèin-obrachail à comas
+ Cuir an còmhnardachadh fèin-obrachail an comas
+ Co-dhiù an dèid ìomhaigheag a shealltainn air an sgrìn gus nach dèid gus an còmhnardachadh fèin-obrachail a chur an comas no à comas. Nuair a bhios an còmhnardachadh fèin-obrachail an comas, thèid dealbhan a chuairteachadh gu fèin-obrachail ach am bi iad a-rèir na fàire.
+ Seall ìomhaigheag a’ chòmhnardachaidh fhèin-obrachail
+ Tha am mothachadh do dh’aodannan à comas
+ Tha am mothachadh do dh’aodannan an comas
+ Cuir à comas am mothachadh do dh’aodannan
+ Cuir an comas am mothachadh do dh’aodannan
+ Co-dhiù an dèid ìomhaigheag a shealltainn air an sgrìn gus nach dèid gus am mothachadh do dh’aodannan a chur an comas no à comas
+ Seall ìomhaigheag mothachadh do dh’aodannan
+ Ìomhaigheagan ris a’ bhàrr (portraid)
+ Eadar-aghaidh deas-làmhach
+ Eadar-aghaidh clì-làmhach
+ Solas fann
+ Modh NR
+ Cha do lorg sinn còmhradh faidhle air an uidheam seo, chan eil taic ris an roghainn
+ Dh’fhàillig le aiseag nan roghainnean
+ Roghainnean air an sàbhaladh
+ Leigidh an roghainn seo leat faidhle a thaghadh le roghainnean a shàbhail thu roimhe. Thoir an aire gun dèid sgrìobhadh thairis air gach roghainn làithreach nuair a thaghas tu faidhle!
+ Aisigidh seo roghainnean a shàbhail thu roimhe. Sgrìobhaidh seo na roghainnean on t-sàbhaladh thairis air gach roghainn làithreach!
+ Ainm nan roghainnean air an sàbhaladh
+ Sàbhail gach roghainn a’ chamara gu faidhle
+ Manaidsear nan roghainnean
+ WebM (gun taic ri fuaim)
+ 3GPP
+ MPEG4 HEVC
+ MPEG4 H264
+ Fòrmat is codecs nam faidhlichean video is fuaime
+\n%s
+ Cuin a thèid algairim leasachadh an iomsgaraidh a chleachdadh airson HDR. ’S urrainn dha piseach a thoirt air a’ choltas nuair a bhios rainse dinimigeach glè àrd san t-sealladh agus bheir e coltas HDR air an toradh cuideachd.
+\n%s
+ Leasachadh iomsgaradh HDR
+ -3 (mothalachd ìseal)
+ +3 (mothalachd àrd)
+ 2.4 (12:5)
+ 2.35 (47:20)
+ 2.33 (21:9)
+ 2 (2:1)
+ 1.85 (37:20)
+ 1.78 (16:9)
+ 1.5 (3:2)
+ 1.4 (7:4)
+ 1.33 (4:3)
+ 1.25 (5:4)
+ 1 (1:1)
+ Chaidh sgur de bhracketing an fhòcais
+ 300MB
+ 200MB
+ 0.5d
+ Meudaich no lùghdaich co-leasachadh an deisearais
+ Co-dhiù an dèid sùmadh a-steach gus ach dèid nuair a chuireas tu gleus air astar an fhòcais a làimh
+\n%s
+ An luach gamma a thèid a chleachdadh dhan video ma chaidh pròifil dealbh a’ video a shuidheachadh air “Gamma”
+\n%s
+ Luach gamma a’ video
+ Suath ris airson fòcas is brùth air putan gorm a’ chamara airson dealbhan a thogail.
+\n
+\nAirson an t-soilleireachd as motha a chur dheth dhan sgrìn, faic “Roghainnean”/”Eadar-aghaidh air an sgrìn”/”Spàrr an t-soillearachd as motha air”. Airson sàbhaladh gu cairt SD air Android 5+, faic “Roghainnean”/”Barrachd uidheaman-smachd a’ chamara”/”Cleachd frèam-obrach inntrigeadh an stòrais”. Airson barrachd cobharach, briog air “Cobhair air loidhne” o na roghainnean.
+ Ma ghabhas seo dèanamh, cleachd seòladh airson stampaidhean le ionad GPS. Feumaidh an roghainn seo ceangal dhan eadar-lìon. Thoir an aire nuair a bhios seo an comas gun tar-chuir an t-uidheam agad dàta mun ionaid dhan eadar-lìon gu treas-phàrtaidh airson seòladh fhaighinn às na co-chomharran GPS. Faic https://developer.android.com/reference/android/location/Geocoder .
+\n%s
+ Togh dealbh/video nuair a thèid mothachadh do dh’fhuaim no le àithne gutha. Nuair a bhios seo an comas, cleachd putan a’ mhicreofoin air an sgrìn airson tòiseachadh air èisteachd no sguir dhith. Thoir an aire gun cleachd roghainn na h-àithne gutha seirbheis aithneachadh cainnt Android: nuair a chleachdas tu an roghainn sin, tha sinn an dùil gun dèid dàta fuaime a chur a-null gu frithealaichean cèine airson an t-aithneachadh gutha a thoirt gu buil.
+\n%s
+ API Camera2
+ API tùsail a’ chamara
+ Tagh API Camera2 airson barrachd roghainnean a chur an comas mar modhan a làimh dhan deisearas, dhan fhòcas is dhan bhalans gheal agus modh RAW (ma chuireas an t-uidheam taic ris). Bidh feum air ath-thòiseachadh nuair a dh’atharraicheas tu an API.
+\n%s
+ API a’ chamara
+ Tagh fòrmat nam faidhlichean do shàbhaladh nan dealbhan. Bheir seo buaidh air dealbhan “stannardach” (seach RAW). Thoir an aire nach eil am fòrmat PNG gun chall gu tur ach gun dèid iompachadh o JPEG air càileachd de 100%%.
+\n%s
+ Bàr-siridh airson co-leasachadh an deisearais atharrachadh
+ Sàbhail na dealbhan tùsail ’s XML dì-bhugachaidh
+ Sàbhail na dealbhan tùsail
+ Na sàbhail na dealbhan tùsail
+ Co-dhiù an dèid na dealbhan tùsail a shàbhaladh ann am modh a’ chuairt-sheallaidh gus nach dèid. Thoir an aire gun doir sàbhaladh nan cuairt-sheallaidhean nas fhaide le seo. Bheir seo an roghainn dhut cuideachd gun sàbhail thu faidhle XML a ghabhas cleachdadh airson aithris a dhèanamh air duilgheadasan leis a’ chuairt-shealladh.
+\n%s
+ Dealbhan tùsail a’ chuairt-sheallaidh
+ Airson dealbh cuairt-sheallaidh a thogail, cuir comhair portraid air an uidheam agad is briog airson an dealbh a thòisicheas an cuairt-shealladh a thogail. An uairsin, cuairtich an t-uidheam agad gu clì no deas airson an cearcall geal sa mheadhan a ghluasad air an dotag ghorm. Gach turas a dhèid dealbh ùr a ghlacadh, cuairtich an t-uidheam a-rithist dhan dotag ghorm a nochdas.
+\n
+\nBriog air ìomhaigheag na cromaige airson an cuairt-shealladh a shàbhaladh no air ìomhaigheag na croise airson sgur dheth.
+\n
+\nThoir an aire gun doir dealbhan cuairt-sheallaidh ùine a phròiseasadh is a shàbhaladh.
+ Do mhodh a’ chuairt-sheallaidh, co-dhiù an dèid na h-iomallan lùbach a thoirt air falbh gus nach dèid
+\n%s
+ Bearradh fèin-obrachail a’ chuairt-sheallaidh
+ Dh’fhàillig cruthachadh a’ chuairt-sheallaidh
+ Chaidh sgur dhen chuairt-shealladh
+ Sguir dhen chuairt-shealladh
+ Cuir crìoch air a’ chuairt-shealladh
+ A’ sàbhaladh nan dealbhan…
+ Teacsa le cùlaibh duibhrichte
+ An t-uidheam-smachd cèin làithreach:
+ Co-dhiù an dèid ìomhaigheag a shealltainn air an sgrìn gus nach dèid airson cuairteachadh tro na modhan RAW
+ Co-dhiù am bi roghainn HDR an sàs air modh bracketing an fhòcais gus nach bi. Ma tha an roghainn seo à comas, cha dèid ach faidhlichean JPEG a shàbhaladh ann am modhan deilbh bracketing an fhòcais.
+ Co-dhiù am bi roghainn HDR an sàs air modh bracketing an deisearais (no dhan mhodh HDR nuair a bhios “Sàbhail gach dealbh airson modh HDR” an comas) gus nach bi. Ma tha an roghainn seo à comas, cha dèid ach faidhlichean JPEG a shàbhaladh sna modhan deilbh sin.
+ Ceadachasan bun-tùis fhosgailte
+ Glèidh claonadh, pids is roiligeadh an uidheim ann am beachd cleachdaiche Exif an deilbh (fòrmat JPEG a-mhàin)
+ Glèidh an claonadh, a’ phids is an roiligeadh
+ 4K UHD
+ Co-dhiù am bi gnìomhan brùthaidh fhaide ceadaichte gus nach bi (m.e. brùthadh fada air a’ ghailearaidh airson ionad an t-sàbhalaidh atharrachadh).
+ Ceadaich gnìomhan brùthaidh fhaide
+ Seall àireamh ID a’ chamara làithrich air an sgrìn
+ Seall ID a’ chamara
+ Ma tha seo an comas, cleachdaidh tu putanan fa leth airson leum a ghearradh eadar camara cùil/beòil agus iomadh camara cùil/beòil. Ma tha seo à comas, cuairtichidh ìomhaigheag gearradh leum nan camarathan tro na camarathan uile.
+ Ìomhaigheag iomadh camara
+ Geàrr leum eadar camarathan
+ Geàrr leum gun chamara on taobh a-muigh
+ Glè leathann
+ Camara on taobh a-muigh
+ An dath a thèid a chleachdadh airson stiallan sa chùlaibh nuair a bhios stiallan sìobra ’gan sealltainn.
+\n%s
+ Dath cùlaibh nan stiallan sìobra
+ An dath a thèid a chleachdadh airson stiallan sa bheulaibh nuair a bhios stiallan sìobra ’gan sealltainn.
+\n%s
+ Dath beulaibh nan stiallan sìobra
+ An luach alpha a thèid a chleachdadh airson dealbhan taibhse. Is ciall do luach nas ìsle gu bheil e nas trìd-shoilleire agus do luach nas àirde gu bheil e nas trìd-dhoilleire.
+\n%s
+ Trìd-dhoilleireachd an deilbh taibhse
+ Falaich a h-uile rud
+ Falaich an eadar-aghaidh
+ Falaich putanan biortail na seòladaireachd air an sgrìn
+ Doilleirich putanan biortail na seòladaireachd air an sgrìn
+ Mun chamara
+ ’S e fork de Camera a th’ ann an aplacaid a’ chamara
+ Tha an Camara a’ cleachdadh ìomhaigheagan o Material Design Google (https://developer.android.com/design/downloads/index.html , https://design.google.com/icons/ , https://github.com/google/material-design-icons/ , https://google.github.io/material-design-icons/) fo cheadachas Apache tionndadh 2.0. Chaidh cuid dhe na h-ìomhaigheagan atharrachadh. Thoir gnogag an-seo airson teacsa slàn a’ cheadachais.
+ Ìomhaigheagan Material Design Google
+ Tha an Camara © 2013–2019 Mark Harman, ’ga fhoillseachadh fo GPL v3 no nas ùire. Thoir gnogag an-seo airson teacsa slàn a’ cheadachais.
+ Tagh uidheam-smachd cèin
+ Seall ìomhaigheag RAW
+ Cuairteachadh na modhan RAW
+ Ceadaich RAW airson bracketing an fhòcais
+ Ceadaich RAW airson bracketing an deisearais
+ Co-dhiù an dèid ìomhaigheag a shealltainn air an sgrìn gus nach dèid airson cuairteachadh tro roghainnean an t-solais-bhoillsgidh seach a bhith a’ sealltainn roghainnean an t-solais-bhoillsgidh air priob-chlàr-taice
+ Seall ìomhaigheag an t-solais-bhoillsgidh
+
\ No newline at end of file
diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..efbc6e5249a142420e7b34f25527d0619294847d
--- /dev/null
+++ b/app/src/main/res/values-gl/strings.xml
@@ -0,0 +1,897 @@
+
+
+ Elixir outro cartafol
+ Eliminar o historial do cartafol\?
+ Eliminar historial do cartafol
+ Elixir localización para gardar:
+ Apagado
+ Acendido
+ ACEPTAR (Esta mensaxe non se amosará de novo)
+ Configuración dos elementos emerxentes
+ Configuración
+ Cámara
+ NR
+ Amosa liñas de dirección do compás
+ Amosar liñas de dirección
+ Amosa liñas horizontais de paso
+ Amosar liñas de paso
+ DRO
+ Calibración de nivel reiniciada
+ Nivel calibrado
+ Reiniciar
+ Calibrar
+ Coloque o dispositivo sobre unha superficie horizontal plana de xeito que quede nivelado (en orientación vertical ou horizontal) e seleccione Calibrar.
+\n
+\nPrema Restablecer para eliminar a calibración do dispositivo.
+\n
+\nPreme o botón Atrás para cancelar.
+ Esta opción calibra o acelerómetro do dispositivo, polo que as opcións de nivel automático e de nivel/ángulo na pantalla funcionan correctamente
+ Calibrar nivel angular
+ Indica se é debido reflectir as fotos resultantes cando se usa a cámara frontal
+\n%s
+ Reflexo en cámara frontal
+ Autoretrato
+ Gravar vídeo
+ Cámara
+ Permite a captura máis rápida das fotos HDR / expo. Desactívao se o teu dispositivo ten problemas ao sacar fotos cos modos de foto HDR ou Expo.
+ Habilitar ráfagas HDR / exposicións rápidas
+ Erro grave da cámara
+ Velocidade de obturador
+ Brillante
+ Escuro
+ Deter a gravación de vídeo se o nivel de batería é moi baixo. Isto axuda a reducir o risco de que os vídeos se corrompan se o dispositivo se apaga de súpeto debido a que queda sen enerxía.
+ Comprobar batería crítica
+ Vídeo detido.
+\nNivel da batería demasiado baixo
+ Non hai suficiente espazo libre para gravar vídeo
+ s
+ Gardar todas as imaxes orixinais (lento)
+ Gardar unha soa imaxe orixinal
+ Non se gardaron as imaxes orixinais
+ Se se gardan as imaxes orixinais no modo de redución de ruído. Ten en conta que isto pode facer que gardar fotos sexa moito máis lento.
+\n%s
+ Redución de ruído orixinal de imaxes
+ Cantas paradas hai que restar/sumar para a imaxe máis escura/brillante
+\n%s
+ Pasos de soporte de exposición BKT
+ Número de imaxes para o modo de soporte de exposición
+\n%s
+ Soporte de exposición
+ Habilitar se o seu dispositivo ten un comportamento erróneo do escintileo coa API Camera2
+ Usar un método de escintileo alternativo
+ Opcións de depuración
+ Opcións de depuración
+ Requírese permiso de localización para o xeoetiquetado (almacenar datos de localización en fotos e vídeos). Tamén se require permiso de localización para conectarse a dispositivos de control remoto Bluetooth LE.
+ Requírese o permiso de micrófono para gravar vídeo con audio
+ Permiso de lectura/escritura de almacenamento para gardar foto
+ Requírese o permiso da cámara para habitala
+ Permiso requirido
+ PERMISOS NON DISPOÑIBLES
+ Se está activado, cando se use o modo de foto HDR, gardaranse as tres imaxes de exposición base, así como a foto HDR final. Ten en conta que isto fará que o aforro sexa máis lento, especialmente se tamén se utilizan opcións como \"Fotos de gravado\" ou Nivel automático.
+ Gardar todas as imaxes no modo HDR
+ Gravado en fotos
+ Reducción de ruído
+ Ráfaga rápida
+ Soporte de exposición
+ BKT {}
+ HDR
+ Estándar
+ Std
+ Modo de foto
+ Non amosar de novo
+ O modo HDR é útil para tiros cunha gran variación de brillo. Funciona tomando varias fotos en diferentes exposicións e combinándoas para crear a imaxe final.
+\n
+\nTeña en conta que HDR non é adecuado para escenas con movemento rápido e pode producir unha reprodución de cor menos precisa.
+\n
+\nTomar fotos en modo HDR será máis lento.
+ Os ficheiros DNG conteñen a información completa non comprimida e sen procesar da súa cámara.
+\n
+\nTen en conta que algunhas aplicacións de galería non recoñecen ficheiros DNG. As imaxes DNG pódense empregar con editores de imaxes especializados como Snapseed ou Lightroom.
+\n
+\nTen en conta que varias opcións de procesamento, como fotos de selos e nivel automático, só se aplicarán ás imaxes que non sexan DNG (JPEG/etc) e non ás imaxes DNG.
+ O nivel automático xirará automaticamente as fotos para que aparezan de nivel.
+\n
+\nTeña en conta que isto significa que as imaxes terán unha resolución lixeiramente inferior (debido á rotación e ao recorte que se requiren).
+ Introducir un ruído forte
+ Dicir \"cheese\"
+ Deter a escoita do audio
+ Comzar a escoitar o audio
+ GB
+ MB
+ Máximo tamaño de arquivo
+ Deter a gravación do vídeo
+ Iniciar a gravación do vídeo
+ O permiso de ubicación non está dispoñible
+ O permiso do micrófono non está dispoñible
+ Non se pode gardar neste cartafol
+ Framework de Almacenamento de Acceso cancelado
+ Selecciona o lugar de gardado
+ O cartafol xa existe
+ Fallo ao crear o cartafol
+ Inserir un novo nome ao cartafol
+ Usa Camera2 API
+ Non se pode acceder a este cartafol
+ Non se pode escribir neste cartafol
+ Novo cartafol
+ Cartafol superior
+ Compartir foto
+ Eliminar última foto
+ Cambiar ao modo de foto
+ Cambiar ao modo de vídeo
+ Cambiar á cámara traseira
+ Cambiar á cámara frontal
+ Modo escintileo
+ Modo Foco
+ Bloquear exposición
+ Exposición
+ Galería
+ Tomar foto
+ Copiar ao portapapeis
+ Non dispoñible
+ Dispoñible
+ Ten a certeza de que quere restaurar toda a configuración para patrón\?
+ Restaurar toda a configuración da Cámara por defecto
+ Restablecer axustes
+ Información do aplicativo e depuración
+ Sobre
+ Habilita funcións adicionais como os modos manuais de exposición, enfoque, balance de brancos, xunto con RAW (se o dispositivo o admite), pero é posible que non funcione correctamente en todos os dispositivos (provocará un reinicio)
+ Se che gusta este aplicativo, considera facer unha doazón para apoiar o desenvolvemento. Podes facelo mercando o meu aplicativo de doazón. Preme nesta opción para abrir a páxina do meu aplicativo de doazón. Grazas!
+ Doe para apoiar o proxecto
+ Inicie o sitio web de Cámara no seu navegador
+ Axuda en liña
+ Varios
+ Se está activado, o escintileo activarase/desactivarase ao gravar vídeo (pódese usar para indicar que a cámara segue gravando a distancia)
+ Escintileo durante a gravación de vídeo
+ Especique mono ou estéreo para gravar audio (estéreo só é admitido nalgúns dispositivos)
+ Canles de audio
+ O micrófono a usar para gravar audio
+\n%s
+ Fonte do audio
+ Grave audio durante a gravación do vídeo
+ Gravar audio
+ A gravación de vídeo reiníciase de forma automática se o arquivo alcanza o tamaño máximo específicado polo dispositivo ou o definido polo usuario
+ Reiniciar tamaño máximo
+ A gravación de vídeo deterase e/ou reiniciarase (ver a opción máis abaixo) cando se alcanza o tamaño máximo (aproximado) do ficheiro. Teña en conta que moitos dispositivos Android teñen un tamaño máximo de ficheiro para os vídeos (normalmente ao redor de 2 GB ou 4 GB), pero esta opción permite establecer un valor específico. Ten en conta que esta opción non se pode usar para aumentar o máximo incorporado dun dispositivo.
+\n% s
+ Máximo tamaño do arquivo de vídeo
+ Se o vídeo se detivo despois de acadar a duración máxima (se está definido), esta opción fará que o vídeo se reinicie ata o número de veces especificado
+\n%s
+ Reiniciar o vídeo despois da duración máxima
+ A gravación do vídeo deterase despois da duración especificada
+\n%s
+ Máxima duración dun vídeo
+ Estableza a velocidade de fotogramas (FPS) dos vídeos (pode ser aprox., non se garante que se alcance e pode causar un fallo na gravación de vídeo se a velocidade de fotogramas non é compatible). Comproba os vídeos resultantes para atopar a velocidade de fotogramas real empregada. Ten en conta que esta configuración ignórase para os vídeos en cámara lenta.
+\n%s
+ Frecuencia de fotogramas do vídeo (aprox.)
+ Estableza a taxa de bits aproximada dos vídeos (maior significa mellor calidade, pero ocupa máis espazo no disco; pode causar un fallo na gravación de vídeo se a taxa de bits non é compatible)
+\n%S
+ Taxa de bits do vídeo (aprox)
+ A estabilización do vídeo reduce a axitación debido ao movimento da cámara na previsualización e nos vídeos gravados.
+ Activar estabilización do vídeo
+ Activa a resolución 3840x2160 para a gravación de vídeos na cámara traseira - isto só funcionará se o teu dispositivo o soporta.
+ Forzar 4K UHD vídeo (experimental)
+ Resolución do vídeo
+ Garde fotos cun subproceso en segundo plano (para unha operación máis rápido)
+ Usar subproceso en segundo plano
+ Estilo a usar cando se grave texto nas fotos
+\n%s
+ Estilo do texto
+ Cor da fonte a usar cando se grave texto nas fotos
+ Cor da fonte
+ Tamaño de fonte a usar cando se grave texto nas fotos
+ Tamaño de fonte
+ Grave fotos cun texto personalizado
+ Texto personalizado
+ Formato de gravado de GPS
+ Formato de gravado de hora
+ Formato de gravalo da data
+ Grave fotos con data e hora; tamén información do GPS se os datos da ubicación/dirección están activados
+\n%s
+ Gravar fotos
+ Se os datos da ubicación están activados, só tome fotos/vídeos se hai datos de ubicación dispoñibles
+ Requerir datos da ubicación
+ Almacene a dirección do compás do GPS nas fotos
+ Almacenar a dirección do compás
+ Almacene os datos da ubicación do GPS nas fotos/vídeos
+ Almacenar datos da ubicación (Geotagging)
+ RAW
+ Establece a calidade JPEG das imaxes fotográficas gardadas (o valor predeterminado é 90%%). Non ten efecto no formato PNG da imaxe.
+\n%s
+ Calidade da imaxe
+ Resolución
+ Configuración da ubicación…
+ Configuración dos vídeos…
+ Configuración das fotos…
+ Configuración das fotos e vídeos
+ Forzar a visualización da pantalla a ter o brillo máximo, no canto do valor predeterminado do dispositivo
+ Forzar brillo ao máximo
+ Se é activado, a pantalla non se apagará mentres a interface de usuario principal da Cámara estea activa
+ Manter pantalla acendida
+ Amosa unha contorna na pantalla para indicar a captura dunha foto
+ Amosar contorna cando se está tirando unha fotografia
+ Amosa a animación en miniatura en movemento ao tomar unha foto
+ Amosar animación en miniatura
+ Optar por amosar o elemento emerxente das mensaxes da pantalla
+ Amosar mensaxes na pantalla
+ Unha guía de recorte amosa un rectángulo que indica a relación de aspecto especificada, útil se planea rcortar a foto7vídeo posteriormente cunah relación de aspecto diferente. Require modo de foto WYSIWYG, ou estar en modo de vídeo
+\n%s
+ Amosar guía de recorte
+ Cuadrícula
+ Amosar cuadrícula
+ Amosa o nivel actual da batería na pantalla
+ Amosar batería
+ AMosa a hora ctual na pantalla
+ Amosar hora
+ Amosa a dirección do compás do dispositivo na pantalla
+ Amosar a dirección do compás
+ Cor de subliñado cando a cámara está case nivelada
+ Cor de subliñado de ángulo/altitude
+ Amosa liña de nivel horizontal
+ Amosar a liña do ángulo
+ Amosa o ángulo de orientación actual do dispositivo na pantalla
+ Amosar ángulo
+ Amosa o espazo de almacenamento restante do dispositivo na pantalla
+ Amosar memoria libre
+ Amosa o nivel da ISO actual (require API de Camera2)
+ Amosar ISO
+ Amosa o control deslizante para controlar a ampliación
+ Amosar control deslizante da ampliación
+ Amose os botóns para o control da ampliación -/+
+ Amosar controis ampliación -/+
+ Amose o nivel de ampliación actual da cámara na pantalla (cando se amplía)
+ As imaxes serán rotadas automaticamente para que estean niveladas perfectamente (só as fotos) (máis lenta en tomar fotos e pode que falle en dispositivos con pouca memoria)
+ Amosar ampliación
+ Modo inmersivo
+ Ubicación da Interface de Usuario
+ Tamaño da vista previa
+ Interface de pantalla…
+ Opción para rotar a vista previa (non afectará ás fotos/vídeos resultantes)
+\n%s
+ Rotar vista previa
+ Ao gravar o vídeo, a interface de pantalla vloquearase para evitar deter accidentalmente a gravación. Desliza a pantalla para desbloqueala. Teña en conta que a gravación de vídeo sempre se deterá se o aplicativo entra en segundo plano ou se a pantalla se borra.
+ Bloquear pantalla ao gravar o vídeo
+ Realice o auto-foco cando a Cámara se inicie. Se presenta o problema onde o escintileo se acende ao iniciar, desactive esta opción
+ Realizar auto-foco ao iniciar
+ Se está activado, o Camera continuará a ser mostrado enriba de calquera pantalla de bloqueo (seguirás tendo que desbloquear para acceder á Configuración, Galería, etc)
+ Amosar cámara aínda que o dispositivo estea bloqueado
+ Formato da hora para o nome do arquivo
+ O prefixo usado para o nome dos vídeos
+ Gardar o prefixo do vídeo
+ O prefixo usado para o nome das fotos
+ Gardar prefixo da foto
+ Utilice o Framework de Acceso do Almacenamento para gardar fotos e vídeos. Isto debe ser activado para permitir que se garde nunha tarxeta SD externa.
+ Usar o Framework de Acceso do Almacenamento
+ Cartafol para gardar os arquivos da foto/vídeo
+ Cartafol de almacenamento
+ Sensibilidade ao nivel de ruído para a opción de audio (ruído forte)
+ Sensibilidade do control do audio
+ Opcións de control do audio
+ Teclas do volume
+ Reproducir un son ao tomar unha foto
+ Son da captura
+ Deter a pantalla despois de toamr unha foto, coa opción de compartir ou eliminar a foto
+ Deter despois de tomar a foto
+ Toma unha foto simplemente premendo dúas veces a pantalla
+ Premer para capturar
+ Máis controis de cámara…
+ Intervalo do modo disparo continuo
+ Repetir
+ Activa a ocnta regresiva por voz para o temporizador ou do modo disparo continuo (a partir dos 60 segundos)
+ Conta regresiva do temporizador por voz
+ Soar cando o temporizador está contando regresivamente ou para o atraso do modo disparo continuo
+ Son do temporizador
+ Temporalizador
+ Controis de cámara
+ Use a detección de rostros no canto das áreas de foco
+ Detección de rostro
+ Se é establecido, a orientación do dispositivo será ignorada e a orientación da foto/vídeo será con respecto á orientación especificada
+\n%s
+ Bloquear a orientación de fotos e vídeos
+ Establece a 0 para a compensación da Exposición por defecto
+ Establece a compensación da Exposición
+ A maior valor significa maior sensibilidade á luz (pode non funcionar nalgúns dispositivos)
+ Establecer ISO
+ Elixe un axuste de balances de brancos
+ Establece o balance de brancos
+ Optimiza a foto para distintas escenas
+ Aplicar modo de escena
+ Aplica o efecto de cor seleccionado á foto
+ Aplicar un efecto de cor
+ Nivel automático
+ Efectos da cámara
+ m
+ Erro no gravado da información
+ Desliza para desbloquear]
+ [BLOQUEADO:
+ Libre
+ AMPLIACIÓN
+ POR OUTRO APLICATIVO\?
+ PODE ESTAR A CÁMARA EN USO
+ ERRO AO ABRIR A CÁMARA.
+ Dirección
+ Ángulo
+ Modo de escena
+ Efecto de cor
+ Duración máxima
+ Audio deshabilitado
+ Sentímolo, auto-estabilizar non está
+\nsoportado neste dispositivo
+ Desbloqueado
+ A pantalla está bloqueada
+\ndeslice o dedo pola pantalla para desbloquear
+ Non hai un aplicativo de galería dispoñible
+ Foto eliminada
+ Ubicación GPS non está dispoñible
+ Erro ao tomar a foto
+ Tomando foto
+ Erro ao iniciar a vista previa da cámara
+ Erro do nivel automático
+ Fallou ao gardar a foto RAW
+ Erro ao gardar a foto
+ Sentímolo
+ Gravando
+ Erro ao gravar o vídeo
+ Erro ao gardar o vídeo
+ Temporizador iniciado
+ Disparo continuo cancelado
+ Temporizador cancelado
+ Exposición desbloqueada
+ Exposición bloqueada
+ Vídeo
+ Foto
+ Cámara traseira
+ Cámara frontal
+ Infinitivo
+ Distancia focal
+ FPS
+ Compensar exposición
+ O vídeo alcanzou o máximo tamaño
+ O vídeo alcanzou a máxima duración
+ O servidor parou, o vídeo foi detido
+ Erro descoñecido, vídeo detido
+ non soportado no teu dispositivo
+ Erro, o arquivo devídeo pode estar danado
+ Erro ao volver a conectar a cámara
+ repite para ir
+ Deteuse a gravación de vídeo
+ Cambiar a ruta de gardado a:
+ ISO
+ Balance de brancos
+ Apertura
+ Autores
+ Termos de servizo
+ Código fonte
+ Licenza
+ Versión de compilación
+ 80%
+ 70%
+ Desactivado
+ Se esta opción está habilitada, as raias de cebra debuxaranse na pantalla mostrando onde está demasiado exposta a vista previa da cámara.
+\n%s
+ Amosar raias da cebra
+ Luminosidade (Media do mín-máx)
+ Intensidade (Media)
+ Valor (Máximo)
+ Luminosidade
+ Cores RGB
+ Desactivado
+ Deixar de almacenar datos de localización
+\n%s
+ Activar gravado da foto
+ Indica se é amosada unha icona na pantalla para activar ou desactivar o gravado de fotos
+ Amosar icona gravado da foto
+ Desactivar auto-nivel
+ Activar auto-nivel
+ Indica se é amosada unha icona na pantalla para habilitar ou desactivar o nivel automático. Cando o nivel automático está activado, as fotos xiraranse de xeito que queden automaticamente ao nivel do horizonte.
+ Amosar icona de auto-nivel
+ Detección facial desactivada
+ Detección facial activada
+ Desactivar detección facial
+ Activar detección facial
+ Indica se é amosada unha icona na pantalla para activar ou desactivar a detección de rostros
+ Ensinar a icona de detección da cara
+ Iconas na parte superior (retrato)
+ Interface de usuario para destros
+ Interface de usuario para zurdos
+ Luz baixa
+ Normal
+ Modo NR
+ PNG
+ WebP
+ Formato da imaxe
+ Non se atopou ningún diálogo de ficheiro neste dispositivo, a opción non é compatible
+ Erro ao restaurar a configuración
+ Erro ao gardar a configuración
+ Restaura a configuración gardada previamente. Isto substituirá todas as opcións actuais coas opcións gardadas!
+ Configuración gardada
+ Esta opción permítelle seleccionar un dos ficheiros de configuración que xa gardou. Ten en conta que se seleccionas un ficheiro para cargar sobrescribirás todas as opcións actuais!
+ Restaurar configuración
+ Gardar nome da configuración
+ Gardar toda a configuración de Cámara nun ficheiro
+ Gardar configuración
+ Xestor de configuración
+ WebM (audio non compatible)
+ 3GPP
+ MPEG4 HEVC
+ MPEG4 H264
+ Predeterminado
+ Formato de ficheiro de vídeo e audio e códecs
+\n%s
+ Formato vídeo
+ Sempre
+ Intelixente
+ Desactivado
+ Cando se usa un algoritmo de mellora do contraste para HDR. Isto pode mellorar a aparencia nos casos en que hai un rango dinámico moi alto na escena e tamén dá un aspecto HDR aos resultados.
+\n%s
+ Mellora do contraste HDR
+ -3 (sensiblidade baixa)
+ -2
+ -1
+ 0 (predeterminado)
+ +1
+ +2
+ +3 (sensiblidade alta)
+ 2,4 (12:5)
+ 2,35 (47:20)
+ 2,33 (21:9)
+ 2 (2:1)
+ 1,85 (37:20)
+ 1,78 (16:9)
+ 1,5 (3:2)
+ 1,4 (7:4)
+ 1,33 (4:3)
+ 1,25 (5:4)
+ 1 (1:1)
+ Ningún
+ Soprote do foco eliminado
+ 9GB
+ 5GB
+ 2GB
+ 1GB
+ 500MB
+ 300MB
+ 200MB
+ 100MB
+ Predeterminado polo dispositivo
+ 2h
+ 1h
+ 30m
+ 20m
+ 10m
+ 5m
+ 2m
+ 1m
+ 30s
+ 20s
+ 15s
+ 10s
+ 5s
+ ft
+ 3s
+ 2s
+ 1s
+ 0,5s
+ Sen atraso
+ Ilimitado
+ 500x
+ 200x
+ 100x
+ 50x
+ 40x
+ 30x
+ 20x
+ 10x
+ 5x
+ 4x
+ 3x
+ 2x
+ Desactivado
+ Anterior
+ Aumentar ou diminuír a compensación da exposición
+ 4x
+ 2x
+ Desactivado
+ Indica se está achegado ao axustar a distancia de enfoque manual
+\n%s
+ Foco asistido
+ Alta calidade
+ Rápido
+ Mínima
+ Desactivado
+ Predeterminado
+ Algoritmo que o controlador da cámara debería usar para aplicar a redución de ruído. O algoritmo de redución de ruído intenta mellorar a calidade da imaxe eliminando o ruído excesivo engadido polo proceso de captura, especialmente en condicións escuras. (Teña en conta que isto non está relacionado co modo de foto de redución de ruído e, de feito, esta configuración ignórase no modo de foto NR).
+\n%s
+ Algoritmo de redución do ruído
+ Configuración do proceso…
+ Algoritmo que o controlador da cámara debería empregar para mellorar o bordo. A mellora do bordo mellora a nitidez e os detalles da imaxe capturada. (Esta configuración ignórase no modo foto NR.)
+\n%s
+ Algoritmo de modo Edge
+ Indica se é amosada a información sobre novas funcións e melloras cando o aplicativo se actualizou
+ Amosas o diálogo Novidades
+ Pé
+ Metros
+ Utilízase para a altitude GPS para gravados de fotos e subtítulos de vídeo
+\n%s
+ Unidade de distancia
+ Descoñecida
+ Alta
+ Media
+ Baixa
+ Non fiable
+ O compás do dispositivo precisa calibrarse para mellorar a súa precisión. Isto pódese facer movendo o dispositivo nun movemento de 8.
+\n
+\nPrecisión actual:
+ Dirección do compás
+ Engadir distancia infinita
+ Distancia de destino entre parénteses de foco
+ Distancia da fonte entre parénteses de foco
+ Soporte do foco
+ Foco {}
+ Indica se é amosado o nivel de audio na pantalla ao gravar vídeo
+ Mostrar medidor de nivel de audio
+ non explosivo
+ 200Mb/s
+ 150Mb/s
+ 100Mb/s
+ 90Mb/s
+ 80Mb/s
+ 70Mb/s
+ 60Mb/s
+ 50Mb/s
+ 40Mb/s
+ 30Mb/s
+ 20Mb/s
+ 15Mb/s
+ 10Mb/s
+ 9Mb/s
+ 8Mb/s
+ 7Mb/s
+ 6Mb/s
+ 5Mb/s
+ 4Mb/s
+ 3Mb/s
+ 2Mb/s
+ 1Mb/s
+ 500kb/s
+ 200kb/s
+ 100kb/s
+ Predeterminado
+ Non procesado
+ Optimizado para o recoñecemento de voz
+ Optimizada para voz
+ Entrada de audio predefinida
+ Micrófono externo (se existe)
+ Videocámara
+ Perfil de rexistro
+ Rexistro (Extra forte)
+ Rexistro (Forte)
+ Rexistro (Medio)
+ Rexistro (Baixo)
+ Rexistro (Fino)
+ Predeterminado
+ Establece o perfil de imaxe estándar ou plano para o modo de vídeo
+\n%s
+ Perfís de imaxes de vídeo
+ Permite sacar fotos mentres gravas vídeos. Desactívao se hai problemas coa gravación de vídeo coa API Camera2 habilitada no teu dispositivo.
+ Permite fotos mentres gravas vídeo
+ Non se pode abrir esta imaxe
+ Non se atopou ningún diálogo de ficheiro neste dispositivo, a opción de imaxe fantasma non é compatible
+ Imaxe seleccionada
+ Última foto tomada
+ Desactivado
+ Superpoña unha imaxe para axudar ao aliñamento.
+\n%s
+ Imaxe da fantasma
+ Apagado
+ 60Hz
+ 50Hz
+ Auto
+ Algoritmos para reducir o parpadeo da luz.
+\n%s
+ Redutor de parpadeo
+ Pantalal da lanterna
+ Pantalla escintileo acendido
+ Pantalla escintileo automático
+ Ollos vermellos
+ Lanterna
+ Escintileo acendida
+ 7 minutos
+ 6 minutos
+ 5 minutos
+ 4 minutos
+ 3 minutos
+ 2 minutos
+ 1 minuto
+ 30 segundos
+ 15 segundos
+ 10 segundos
+ 5 segundos
+ 3 segundos
+ Ilimitado
+ Crea un ficheiro de subtítulos (.SRT) que almacena a data e a hora; e tamén información GPS se os datos de localización / dirección están habilitados
+\n% s
+ Subtítulos no vídeo
+ Posterior
+ Amosar un histograma
+ Deixar de almacenar datos de localización
+ Datos da ubicación do almacenamento
+ Indica se é amosada unha icona na pantalla para habilitar ou desactivar os datos de localización (xeoetiquetado)
+ Amosar a icona de datos de localización da tenda
+ Non amosar o enderezo
+ Prefire o enderezo que os GPS
+ Amosar o enderezo se é posible, ademais das coordenadas GPS
+ Usar enderezos
+ Kraken Smart Housing
+ Telecomando conectado
+ Para vivendas subacuáticas, mellora a precisión se está seleccionada o tipo de auga correcto.
+ Use Saltwater para cálculos en profundidade
+ Consello: configura o brillo predeterminado ao nivel mínimo antes de iniciar a cámara.
+ Diminuír a pantalla se está desconectado o control remoto
+ Dispositivo descoñecido
+ Bluetooth non compatible.
+ Análise de dispositivos BLE
+ BLE non compatible
+ Tipo de dispositivo remoto
+ Activa os dispositivos de control remoto Bluetooth LE (BLE)
+ Habilitar telecomando Bluetooth LE
+ Mando a distancia Bluetooth LE…
+ Panorámica
+ Panorámica
+ Modo de pouca luz: manteña a cámara estable
+ Desbloquear exposición
+ Indica se é amosada unha icona na pantalla para bloquear ou desbloquear a exposición
+ JPEG
+ Amosar a icona de bloqueo de exposición automática
+ Balance branco desbloqueado
+ Balance branco bloqueado
+ Desbloquear balance branco
+ Bloquear balance branco
+ Indica se é amosada unha icona na pantalla para bloquear ou desbloquear o balance de branco automático
+ Amosar a icona de bloqueo automático do balance de brancos
+ Indica se é amosada unha icona na pantalla para especificar o texto personalizado que se gravará na foto
+ Amosar icona da foto co texto personalizado gravado
+ Gravado da foto desactivada
+ Gravado da foto activado
+ Desactivar gravado da foto
+ Escintileo automático
+ Escintileo apagado
+ Cámara lenta deshabilitada
+ Cámara lenta habilitada
+ Normal
+ Velocidade
+ 200
+ 150
+ 100
+ 50
+ 40
+ 30
+ 25
+ 20
+ 15
+ 12
+ 10
+ 8
+ 6
+ 5
+ 4
+ 3
+ 2
+ Número de fotos
+ 20
+ 15
+ 12
+ 10
+ 8
+ 6
+ 5
+ 4
+ 3
+ 2
+ Número de fotos
+ Ningún
+ mm/dd/aaaa
+ dd/mm/aaaa
+ dd-mm-aaaa (ISO 8601)
+ Predeterminado
+ Só DNG (RAW)
+ Estándar e DNG (RAW)
+ Non
+ Procesando…
+ Texto para gardar nos metadatos da imaxe para a etiqueta de dereitos de autor (só en formato JPEG). (Deixar en branco para ningún.)
+ Dereitos de autor
+ Texto para gardar nos metadatos da imaxe para a etiqueta de artista (só en formato JPEG). (Deixar en branco para ningún.)
+ Artista
+ Personalizar etiquetas EXIF
+ Predeterminado
+ Alta velocidade
+ no centro da pantalla
+ abaixo da pantalla
+ enriba da pantalla
+ na dereita da pantalla
+ na esquerda da pantalla
+ caras detectadas
+ cara detectada
+ Doar
+ Novidades:
+ Pizarra branca
+ Solarizar
+ Sepia
+ Posterizar
+ Ningún
+ Negativo
+ Monocromo
+ Pizarra negra
+ Auga
+ Teatro
+ Posta do sol
+ Estabilizador
+ Deportes
+ Neve
+ Retrato
+ Festa
+ Retrato nocturno
+ Nocturno
+ Paisaxe
+ Fogos artificiais
+ Auto
+ Luz das velas
+ Praia
+ Código de barras
+ Acción
+ Manual
+ Luz cálida
+ Crepúsculo
+ Sombra
+ Incandescente
+ Fluorescente
+ Luz do día
+ Nuboso
+ Auto
+ Erro ao crear a imaxe HDR
+ Erro ao inicializar a escoita do audio
+ Capturando…
+ Reanudar a gravación de vídeo
+ Deter a gravación de vídeo
+ Vídeo reanudado
+ Vídeo en pausa
+ Amosa a icona para facer fotos e gravar vídeos. Desmarque se prefire facer fotos por outros métodos (por exemplo, se o seu dispositivo ten un botón de disparo de hardware ou se emprega as teclas de volume).
+ Amosa icona para tomar foto
+ 1 hora
+ 45 minutos
+ 30 minutos
+ 25 minutos
+ 20 minutos
+ 15 minutos
+ 12 minutos
+ 11 minutos
+ 10 minutos
+ 9 minutos
+ 8 minutos
+ Información da cámara
+ Cámara está bifurcada de OpenCamara
+ A cámara usa iconas das iconas de Material Design de Google (https://developer.android.com/design/downloads/index.html, https://design.google.com/icons/, https://github.com/google/ material-design-icons /, https://google.github.io/material-design-icons/) baixo a licenza Apache versión 2.0. Algúns iconas inclúen modificacións. Preme aquí para ver o texto completo da licenza.
+ Iconas de Material Design de Google
+ A cámara é © 2013–2019 Mark Harman, publicada baixo a GPL v3 ou posterior. Preme aquí para ver o texto completo da licenza.
+ Cámara
+ Licenza de Código Aberto
+ Almacene a guiñada, o cabeceo e o balanceo do dispositivo no comentario de usuario Exif da foto (só en formato JPEG)
+ Almacena a guiñada, cabeceo e balanceo
+ Movemento lento
+ Taxa de cadros
+ Taxa de bits
+ 4K UHD
+ Se son permitidas accións de premer longo (por exemplo, premer longo na galería para cambiar a situación de gardado).
+ Permitir accións de premer longo
+ Mostrar o número de identificación da cámara actual na pantalla
+ Amosar cámara ID
+ Se está activado, use botóns separados para cambiar entre cámaras dianteiras/traseiras e para cambiar entre varias cámaras fronte/atrás. Se está desactivada, a icona Cambiar cámara percorrerá todas as cámaras.
+ Icona de cámaras múltiples
+ Cambiar entre cámaras múltiples
+ Cambiar cámara
+ Cambiar á cámara externa
+ Ultra-ancho
+ Cámara externa
+ Branco
+ Transparente
+ Laranxa
+ Vermello
+ Negro
+ Cor para empregar na franxa de fondo cando se mostran raias de cebra.
+\n%s
+ Cor de fondo de raias de cebra
+ Cor para empregar na raia de primeiro plano cando se mostran raias de cebra.
+\n%s
+ Cor de raias de cebra en primeiro plano
+ Valor alfa para usar nas imaxes pantasmas. Un valor inferior significa máis transparente, maior significa máis opaco.
+\n%s
+ Opacidade da imaxe pantasma
+ Agochar todo
+ Agochar GUI
+ Agochar os botóns de navegación virtual na pantalla
+ Só diminuír os botóns de navegación virtual na pantalla
+ Apagado
+ 2,8
+ 2,6
+ 2,4
+ 2,3
+ 2,2
+ 2,1
+ 2,0
+ 1,9
+ 1,8
+ Que cor usar para resaltar os bordos enfocados
+\n%s
+ 1,6
+ Valor gamma que se usará no vídeo se o perfil da imaxe de vídeo está configurado en Gamma
+\n%s
+ Valor gamma vídeo
+ Gamma
+ sRGB
+ REC709
+ Seleccionar dispositivo remoto
+ Preme para focar e preme o botón azul da cámara para facer fotos.
+\n
+\nPara desactivar o brillo máximo da pantalla, consulte Configuración / GUI na pantalla / \"Forzar o brillo máximo\". Para gardar en tarxetas SD en Android 5+, consulte Configuración / Máis controis da cámara / \"Use Storage Access Framework\". Para obter máis axuda, preme en \"Axuda en liña\" en Configuración.
+ Se é posible, use un enderezo cando seleccione localizacións GPS. Esta opción require unha conexión a Internet. Teña en conta que, se está activado, é necesario que o dispositivo transmita datos de localización a través de Internet a un terceiro para converter as coordenadas GPS a un enderezo. Vexa https://developer.android.com/reference/android/location/Geocoder.
+\n%s
+ Tire fotos/vídeos cando se detecte un ruído ou por comando de voz. Cando estea activado, use o botón de micrófono en pantalla para iniciar/deixar de escoitar. Teña en conta que a opción de comando de voz utiliza o servizo de recoñecemento de voz de Android: cando se usa esta opción, é probable que os datos de audio se envíen a servidores remotos para realizar o recoñecemento de voz.
+\n%s
+ API Camera2
+ Cámara API orixinal
+ Seleccione a API Camera2 para habilitar funcións adicionais, como modos manuais de exposición, enfoque, balance de branco, xunto con RAW (se o dispositivo o admite). Cambiar a API provocará un reinicio.
+\n%s
+ Cámara API
+ Seleccione o formato de ficheiro usado para gardar fotos. Isto afecta ás fotos \"estándar\" (non RAW). Teña en conta que o formato PNG non é realmente sen perdas, senón que se converte desde un formato JPEG con calidade 100 %%.
+\n%s
+ Barra de busca para cambiar a compensación de exposición
+ ID
+ Garda imaxes orixinais e depura XML
+ Gardar imaxes orixinais
+ Non gardar imaxes orixinais
+ Indica se se gardan as imaxes orixinais no modo panorámico. Teña en conta que isto gardará as fotos panorámicas máis lentamente. Permite tamén a opción de gardar un ficheiro XML que pode ser útil para informar de problemas con panorama.
+\n%s
+ Imaxes orixinais panorámicas
+ Para facer unha imaxe panorámica, manteña o dispositivo en orientación vertical e preme para tirar unha foto para iniciar a panorámica. A continuación, xira o dispositivo á esquerda ou á dereita para mover o círculo branco centrado sobre o punto azul. Despois de capturar cada nova imaxe, siga xirando o dispositivo para cubrir cada novo punto azul que aparece á súa vez.
+\n
+\nPreme na icona de marca para gardar a panorámica ou na icona cruzada para cancelar.
+\n
+\nTen en conta que as fotos panorámicas poden levar tempo para procesarse e gardarse.
+ Para o modo panorámico, se están eliminados os límites ondulados
+\n%s
+ Panorámica auto-recortada
+ Erro ao crear imaxe Panorámica
+ Panorámica cancelada
+ Cancelar panorámica
+ Finalizar panorámica
+ Gardando imaxes…
+ Texto con fondo sombreado
+ Texto plano
+ Texto sombreado
+ Buscar
+ Telecomando actual:
+ Indica se é amosada unha icona na pantalla para circular polos modos RAW
+ Amosar icona RAW
+ Cicla modos RAW
+ Indica se a opción RAW tamén se debe aplicar ao modo de foto entre parénteses de foco. Se esta opción está desactivada, só se gardarán os JPEG nos modos de foto entre parénteses de foco.
+ Permitir RAW para o focus bracketing
+ Indica se a opción RAW tamén se debe aplicar ao modo de foto de bracketing expo (ou ao modo HDR cando está activado \"Gardar todas as imaxes para o modo HDR\"). Se esta opción está desactivada, só se gardarán JPEG neses modos de foto.
+ Permitir RAW para o bracketing expo
+ Indica se é amosada unha icona na pantalla para circular polas opcións de escintileo no canto de mostrar as opcións de escintileo no menú emerxente
+ Amosar icona do escintileo
+ Escintileo circular
+ Previsualizar cámara…
+ Restante
+ Foco de cor máxima
+ Activado
+ Desactivado
+ Se esta opción está activada, os resaltados mostraranse nos bordos enfocados (contornos). Isto é principalmente útil para o foco manual e pode usarse para determinar que rexións da imaxe están focadas.
+\n%s
+ Foco máximo
+ 100%
+ 99%
+ 98%
+ 97%
+ 95%
+ 93%
+ 90%
+
\ No newline at end of file
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index ffd1f09fbabd736f31fc24fc3ad93aa03887620f..c63ba8ebdcc2d7df47284bc2cc65f0929a5b2abc 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -1,24 +1,25 @@
-
- Open Camera
+ Kamera
Beállítások
Felugró beállítások
OK (Ez az üzenet nem jelenik meg újra)
-
- Be
- Ki
-
+ Be
+
+ Ki
+
Válaszd ki a mentés helyét:
Könyvtárelőzmények törlése
- Törlöd a könyvtárelőzményeket?
+ Törlöd a könyvtárelőzményeket\?
Válassz másik könyvtárat
Mentés helye módosult erre:
Videofelvétel megállítva
- ismétlések az indításhoz
+ ismétlések az indításhoz
+
Nem sikerült újrakapcsolódni a kamerához
Hiba történt, a videofájl sérülhetett
- nem támogatott az eszközödön
+ nem támogatott az eszközödön
+
Ismeretlen hiba, a videó leállítva
A kiszolgáló leállt, a videó megállítva
A videó elérte a maximális hosszt
@@ -36,7 +37,7 @@
Időzítő megszakítva
Sorozatfelvétel megszakítva
Időzítő elindult
- Nem sikerült menteni a videofájlt
+ Nem sikerült menteni a videofájlt
Nem sikerült videofelvételt készíteni
Videofelvétel elindult
Sajnálom
@@ -49,15 +50,16 @@
A GPS helymeghatározás nem érhető el
Fotó törölve
Nincs elérhető galéria alkalmazás
- Képernyő zárolva\nA feloldáshoz csúsztasd az ujjad a képernyőn
+ Képernyő zárolva
+\nA feloldáshoz csúsztasd az ujjad a képernyőn
Feloldva
- Sajnálom, az auto-stabilizálás\nnem támogatott ezen az eszközön
+ Sajnálom, az auto-stabilizálás
+\nnem támogatott ezen az eszközön
Hang letiltva
Max időtartam
Színhatás
Fotó üzemmód
Fehéregyensúly
-
Szög
Irány
NEM SIKERÜLT MEGNYITNI A KAMERÁT.
@@ -68,10 +70,9 @@
Szabad
[Zárolva:
Csúsztasd a feloldáshoz]
-
Nem sikerült információkat írni a fotóba
- m
-
+ m
+
Kamera hatások
Auto-stabilizálás
A képek elforgatásra kerülnek, így automatikusan jó irányba fognak állni (csak fotók) (a fotózás kicsit lassabb, és kevés memóriájú eszközön sikertelen is lehet)
@@ -86,10 +87,10 @@
Expozíció kompenzáció beállítása
Az alapértelmezett kompenzációhoz állítsd 0-ra
Fotó/videó tájolás zárolása
- Ha be van állítva, a készülék tájolása figyelmen kívül lesz hagyva, és a fotó/videó a megadott tájolás szerint fog állni\n%s
+ Ha be van állítva, a készülék tájolása figyelmen kívül lesz hagyva, és a fotó/videó a megadott tájolás szerint fog működni
+\n%s
Arcfelismerés
Arcfelismerés használata fókuszterületek helyett
-
Kamera kezelés
Időzítő
Időzítő hangjelzés
@@ -97,7 +98,7 @@
Hangos visszaszámlálás
Az időzítő és sorozatfelvétel visszaszámlálás késleltetésének bemondása (60 másodperctől)
Sorozatfelvétel
- Sorozatfelvétel intervallum
+ Sorozatfelvétel időköz
További kamera beállítások…
Exponálás érintéssel
Fénykép készítése az előnézet érintésével, vagy dupla koppintással
@@ -118,9 +119,9 @@
A videók mentésekor használt fájlnév előtag
Fájlnév időformátum
Kamera megjelenítése zárolt állapotban
- Ha engedélyezve van, az Open Camera látható marad a zárképernyő alatt is (de fel kell oldanod a beállítások, geléria, stb. eléréséhez)
+ Ha engedélyezve van, az Camera látható marad a zárképernyő alatt is (de fel kell oldanod a beállítások, geléria, stb. eléréséhez)
Autofókusz indításkor
- Automatikus fókuszálás, amikor az Open Camera elindul. Ha gondok vannak az induláskor bekapcsoló vakuval, tiltsd ezt le
+ Automatikus fókuszálás, amikor az Camera elindul. Ha gondok vannak az induláskor bekapcsoló vakuval, tiltsd ezt le
Képernyő zárolása videofelvétel alatt
Videó készítése alatt a felhasználói felület zárolva lesz, megakadályozva a felvétel véletlen leállítását. Feloldáshoz csúsztad az ujjad a képernyőn. Megjegyzendő, hogy a felvétel le fog állni, ha az alkalmazás háttérbe kerül vagy a képernyő kikapcsol.
Előnézet forgatása
@@ -152,7 +153,8 @@
Akkumulátor megjelenítése
Az aktuális akkumulátortöltöttség megjelenítése a képernyőn
Rács megjelenítése
- Rács
+ Rács
+
Vágási segédvonal megjelenítése
A vágási segéd egy négyzetet jelenít meg, mutatva, hogy nézne ki a megadott oldalarány – hasznos, ha a fotót/videót később más oldalarányúra tervezed vágni. WYSIWYG fényképmód, vagy videózás mód szükséges hozzá\n%s
\"toast\" üzenetek megjelenítése
@@ -162,17 +164,17 @@
Keret megjelenítése exponáláskor
Keret megjelenítése a kijelzőn, jelezve hogy fotó készül
Kijelző bekapcsolva tartása
- Ha engedélyezve van, akkor a képernyő nem kapcsol ki, míg az Open Camera főképernyője aktív
+ Ha engedélyezve van, akkor a képernyő nem kapcsol ki, míg az Camera főképernyője aktív
Maximális fényerő kényszerítése
A kijelző mindenképpen maximális fényerővel üzemel, az eszköz alapértelmezése helyett
-
Fotó és videó beállítások
Fotó beállítások…
Videó beállítások…
Helymeghatározás beállítások…
Kamera felbontása
Képminőség
- Beállítja, hogy a képek milyen JPEG minőséggel legyenek elmentve (ajánlott érték 90%%)\n%s
+ Beállítja, hogy a képek milyen JPEG minőséggel legyenek elmentve (ajánlott érték 90%%)\n%s
+
RAW
Helyadatok eltárolása (geotaggelés)
Eltárolja a GPS helyadatot a fotóban/videóban
@@ -217,13 +219,12 @@
Hangforrás
Hangrögzítésre használandó mikrofon\n%s
Hangcsatornák
- Monó vagy sztereó hangfelvétel készítése (sztereó felvételre nem minden eszköz képes)\n%s
+ Monó vagy sztereó hangfelvétel készítése (sztereó felvételre nem minden eszköz képes)
Villogás felvétel alatt
Ha engedélyezve van, a vaku ki-be kapcsol a felvétel alatt (ezzel jelezhető, hogy egy kamera épp rögzít a távolban)
-
Egyéb
Online súgó
- Open Camera weboldal megnyitása böngészőben
+ Camera weboldal megnyitása böngészőben
Támogasd a fejlesztést adománnyal
A tetszik az alkalmazás, fontold meg adomány küldését a fejlesztés támogatására. Ezt a „támogatói alkalmazás” megvásárlásával teheted meg – kattints ide, hogy megnyisd a támogató alkalmazás oldalát. Köszönjük!
Camera2 API használata
@@ -231,13 +232,11 @@
Névjegy
App és hibakeresési információk
Beállítások visszaállítása
- Az Open Camera összes beállítását alaphelyzetbe állítja
- Biztosan vissza szeretnéd állítani az Open Camera összes beállítását az alapértelmezettre?
-
+ Az Camera összes beállítását alaphelyzetbe állítja
+ Biztosan vissza szeretnéd állítani az Camera összes beállítását az alapértelmezettre?
Elérhető
Nem elérhető
Vágólapra másolás
-
Fotózás
Galéria
Expozíció
@@ -250,7 +249,6 @@
Váltás fotó módba
Utolsó kép törlése
Fénykép megosztása
-
Szülő könyvtár
Új könyvtár
Nem lehet írni ebbe a könyvtárba
@@ -258,42 +256,37 @@
Add meg az új könyvtár nevét
Nem sikerült létrehozni a könyvtárat
A könyvtár már létezik
-
Válaszd ki a mentés helyét
Storage Access Framework visszavonva
-
Mikrofon engedély nem érhető el
Hely engedély nem érhető el
-
Videofelvétel indítása
Videofelvétel leállítása
-
Maximális fájlméret
- MB
- GB
-
+ MB
+
+ GB
+
Hangfigyelés indítása
Hangfigyelés leállítása
Mondd, hogy „csíííz”
Csinálj hangos zajt
-
Az auto-stabilizálás automatikusan elforgatja a fotókat, hogy szintben legyenek.\n\nNe felejtsd el, hogy a képek így kicsit kisebb felbontásúak lesznek (a forgatás és vágás miatt).
A DNG fájlok a kamera teljes, tömörítetlen és feldolgozatlan adatait tartalmazzák.\n\nA legtöbb galéria alkalmazás nem ismeri a DNG formátumot, érdemes helyette specializált alkalmazást használni.\n\nMegjegyzendő, hogy az utófeldolgozó beállítások, mint a „Fotók feliratozása” és „Auto-stabilizálás” csak a JPEG képekre kerülnek rá, a DNG-re nem.\n\nA DNG fájlok sokkal több helyet foglalnak; egy fájlkezelő alkalmazás hasznos lehet a másolásukhoz, törlésükhöz.\n\nDNG fájlok csak Normál és DRO fotómódban mentődnek.
A HDR mód változó fényerejű felvételek készítésénél hasznos. Úgy működik, hogy több felvételt kész különböző expozíciós idővel, és ezeket összekombinálva hozza létre a végleges képet.\n\nMegjegyzendő, hogy a HDR nem alkalmas gyorsan mozgó tárgyak fotózására, mert kevésbé pontos színvisszaadást eredményez.\n\nA HDR fotók készítése lassabb.
-
Ne jelenjen meg újra
-
Fotómód
- Norma
+ Norma
+
Normál
HDR
- Expo {}
+ Expo {}
+
Expozíció sorozat
Fotó feliratozás
Az összes kép mentése HDR módban
Ha engedélyezve van, HDR mód használatakor a három eltérő expozíciójú alapkép is el lesz mentve a végleges HDR fotó mellett. Megjegyzendő, hogy a mentés így lassabb lesz, főleg ha a „Fotók feliratozása” vagy az „Auto-stabilizálás” is be van kapcsolva.
-
ENGEDÉLY NEM ELÉRHETŐ
Engedély szükséges
A kamera eléréséhez „kamera engedély” szükséges
@@ -302,35 +295,29 @@
Hibakeresési lehetőségek
Alternatív vakukezelés használata
Engedélyezd, ha a készülék vakuja hibásan működik Camera2 API-val
-
Expozíciósorozat
Képek száma az expozíciósorozat módban\n%s
Expozíciósorozat lépésköz
Az egyes képek készítése ennyi fényérték eltéréssel\n%s
-
- mp
-
+ mp
+
Nincs elég szabad hely videofelvétel készítéséhez
Felvétel leállítva\nAz akkumulátorszint kritikusan alacsony
Kritikus akkumulátorszint ellenőrzés
Leállítja a videofelvételt, ha az akkumulátor kritikusan alacsony szintre merül. Segít csökkenteni annak a kockázatát, hogy a felvétel hibás lesz, amikor az eszköz váratlanul lemerül és kikapcsol.
-
- Sötét
- Világos
+ Sötét
+
+ Világos
+
Zársebesség
-
Súlyos kamerahiba
-
Gyors HDR/expozíciósorozat engedélyezése
Lehetővé teszi HDR képek / expozíciósorozatok gyorsabb rögzítését. Tiltsd le, ha problémákat tapasztalsz a készülékeden HDR vagy expozíciósorozat készítése közben (például a kamera leáll, vagy az expozíciósorozat rossz sorrendben készül)
-
Kamera
Videofelvétel
Szelfi
-
Előlapi kamera tükrözés
Az előlapi kamera használatakor a kép tükrözése\n%s
-
Vízszint kalibrálása
Ez a beállítás kalibrálja a készülék gyorsulásmérőjét, így az auto-stabilizálás és a képernyőn megjelenő vízszintező jól fog működni
Helyezd a készüléket sík, vízszintes felületre (fekvő vagy álló helyzetben), majd nyomj a Kalibrálás gombra.\n\nA kalibrálás visszavonásához kattints a Visszaállításra.\n\nA megszakításhoz nyomd meg a vissza gombot.
@@ -338,16 +325,13 @@
Visszaállítás
Vízszint kalibrálva
Vízszint kalibrálás visszaállítása
-
DRO
-
Osztóvonalak megjelenítése
Vízszintes osztóköz megjelenítése
Iránytű irányvonalak megjelenítése
Irányvonalakat jelenít meg az iránytű alapján
Videó feliratok
Felirat (.srt) fájl létrehozása dátummal, idővel és GPS szélesség/hosszúság adatokkal\n%s
-
Korlátlan
3 másodperc
5 másodperc
@@ -372,30 +356,22 @@
30 perc
45 perc
1 óra
-
Fénykép készítése ikon megjelenítése
A fénykép és videó készítése gombok megjelenítése. Hasznos, ha a készüléknek van saját fényképezés gombja, ezért a képernyőn lévőt nem használod.
-
Videó szünetel
Videó folytatása
Videofelvétel szüneteltetése
Videofelvétel folytatása
-
Rögzítés…
-
Nem sikerült elindítani a hangfigyelést
-
Alapértelmezett
-
Csak JPEG
JPEG és DNG (RAW)
-
Alapértelmezett
éééé-hh-nn
nn/hh/éééé
hh/nn/éééé
Nincs
-
Vaku ki
Vaku automata
Vaku be
@@ -403,12 +379,10 @@
Vörös szem
Képernyő vaku automata
Képernyő vaku ki
-
Kamkorder
Külső mikrofon (ha van)
Alapértelmezett hangforrás
Hangra optimalizált
-
Alapértelmezett
100kbps
200kbps
@@ -433,7 +407,6 @@
80Mbps
90Mbps
100Mbps
-
Ki
2x
3x
@@ -448,7 +421,6 @@
200x
500x
Korlátlan
-
Nincs késleltetés
1mp
2mp
@@ -466,14 +438,12 @@
30p
1ó
2ó
-
Készülék alapértelmezett
100MB
200MB
300MB
500MB
1GB
-
Nincs
1 (1:1)
1.25 (5:4)
@@ -485,7 +455,6 @@
2.33 (21:9)
2.35 (47:20)
2.4 (12:5)
-
+3 (nagy érzékenység)
+2
+1
@@ -493,13 +462,18 @@
-1
-2
-3 (alacsony érzékenység)
-
Balkezes felhasználói felület
Jobbkezes felhasználói felület
-
Árnyékos szöveg
Sima szöveg
-
+ About
+ Összeállított verzió
+ A fényképezőgép villás az Camera-tól
+ Szerzők
+ Forráskód
+ Engedély
+ Kamera információ
+ Szolgáltatás feltételei
Ki
Csak a virtuális navigációs gombok elrejtése
Kezelőfelület elrejtése
@@ -509,4 +483,4 @@
Hangos zaj
Hangutasítás: \"csíííz\"
-
+
\ No newline at end of file
diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e01e44d825cefa4e591e8d4b5d60f765ff81ddb9
--- /dev/null
+++ b/app/src/main/res/values-is/strings.xml
@@ -0,0 +1,967 @@
+
+
+ Ofurvítt
+ Skipta um myndavél
+ 40 mínútur
+ 25 mínútur
+ 30 mínútur
+ 45 mínútur
+ 1 klukkustund
+ Sjálfvirkt
+ Skýjað
+ Dagsbirta
+ Flúrljós
+ Skuggi
+ Hlý
+ Handvirkt
+ Aðgerð
+ Strikamerki
+ Strönd
+ Sjálfvirkt
+ Flugeldar
+ Landslag
+ Nótt
+ Partí
+ Andlitsmynd
+ Snjór
+ Íþróttir
+ Sólsetur
+ Leikhús
+ Sægrænt
+ Einóma
+ Negatíva
+ Ekkert
+ Þrykkja
+ Sepía
+ Nýtt á döfinni:
+ andlit
+ Sjálfgefið
+ Höfundarréttur
+ Í vinnslu…
+ Nei
+ DNG (RAW) einungis
+ áááá-mm-dd (ISO 8601)
+ dd/mm/áááá
+ mm/dd/áááá
+ Fjöldi mynda
+ 2
+ 3
+ 4
+ 5
+ 6
+ 8
+ 10
+ 12
+ 15
+ 20
+ Fjöldi mynda
+ 2
+ 3
+ 4
+ 5
+ 6
+ 8
+ 10
+ 12
+ 15
+ 20
+ 25
+ 30
+ 40
+ 50
+ 100
+ 150
+ 200
+ Leifturljós af
+ Leifturljós sjálfvirkt
+ Leifturljós á
+ Ljóskastari
+ Rauð augu
+ 50Hz
+ 60Hz
+ 100kbps
+ 200kbps
+ 500kbps
+ 1Mbps
+ 2Mbps
+ 3Mbps
+ 4Mbps
+ 5Mbps
+ 6Mbps
+ 7Mbps
+ 8Mbps
+ 9Mbps
+ 10Mbps
+ 15Mbps
+ 20Mbps
+ 30Mbps
+ 40Mbps
+ 50Mbps
+ 60Mbps
+ 70Mbps
+ 80Mbps
+ 90Mbps
+ 100Mbps
+ 150Mbps
+ 200Mbps
+ Skerpa {}
+ Stefna áttavita
+ Eining fyrir vegalengdir
+ ft
+ Hratt
+ Hágæða
+ 2x
+ 4x
+ 2x
+ 3x
+ 4x
+ 5x
+ 10x
+ 20x
+ 30x
+ 40x
+ 50x
+ 100x
+ 200x
+ 500x
+ Ótakmarkað
+ Engin töf
+ 0.5s
+ 1s
+ 2s
+ 3s
+ 5s
+ 10s
+ 15s
+ 20s
+ 30s
+ 1m
+ 2m
+ 5m
+ 10m
+ 20m
+ 30m
+ 1klst
+ 2klst
+ Sjálfgefin stilling tækis
+ 100MB
+ 200MB
+ 300MB
+ 500MB
+ 1GB
+ 2GB
+ 5GB
+ 9GB
+ 1 (1:1)
+ 1.25 (5:4)
+ 1.33 (4:3)
+ 1.4 (7:4)
+ 1.5 (3:2)
+ 1.78 (16:9)
+ 1.85 (37:20)
+ 2 (2:1)
+ 2.33 (21:9)
+ 2.35 (47:20)
+ 2.4 (12:5)
+ +3 (mikil næmni)
+ +2
+ +1
+ 0 (sjálfgefið)
+ -1
+ -2
+ -3 (lítil næmni)
+ Snjallt
+ Snið myndmerkis
+ MPEG4 H264
+ Sleppa
+ LINSA
+ ISO
+ Upplausn myndskeiðs
+ Vista staðsetningu
+ Stærð forskoðunar
+ Birta tíma
+ Myndavél
+ Stillingar
+ Á
+ Af
+ RSEK
+ Óendanlegt
+ Frammyndavél
+ Bakmyndavél
+ Ljósmynd
+ Myndskeið
+ Því miður
+ Ólæst
+ Hvítvægi
+ Horn
+ Stefna
+ Aðdráttur
+ [LÆST:
+ Strjúktu til að aflæsa]
+ m
+ Stilltu ISO-ljósnæmni
+ Greining andlita
+ Niðurteljari
+ Endurtaka
+ Hljóð lokara
+ Hljóðstyrkshnappar
+ Stillingar ljósmynda…
+ Stillingar myndskeiða…
+ Stillingar staðsetningar…
+ Myndgæði
+ RAW
+ Leturstærð
+ Litur á letri
+ Taka upp hljóð
+ Uppruni hljóðmerkis
+ Ýmislegt
+ Hjálp á netinu
+ Endurstilla
+ Virknihamur
+ Yfirmappa
+ Ný mappa
+ Ekki tókst að búa til möppu
+ MB
+ GB
+ Segðu \"SÍS\"
+ Ekki birta þetta aftur
+ Ljósmyndahamur
+ HDR
+ Truflanasía
+ Krafist er heimildar
+ s
+ Dökkt
+ Bjart
+ Myndavél
+ Taka upp myndskeið
+ Kvarða
+ Frumstilla
+ Skjátextar myndskeiðs
+ Ótakmarkað
+ 3 sekúndur
+ 5 sekúndur
+ 10 sekúndur
+ 15 sekúndur
+ 30 sekúndur
+ 1 mínúta
+ 2 mínútur
+ 3 mínútur
+ 4 mínútur
+ 5 mínútur
+ 6 mínútur
+ 7 mínútur
+ 8 mínútur
+ 9 mínútur
+ 10 mínútur
+ 11 mínútur
+ 12 mínútur
+ 15 mínútur
+ MPEG4 HEVC
+ 3GPP
+ WebM (ekki stuðningur við hljóð)
+ Vista stillingar
+ Myndsnið
+ JPEG
+ WebP
+ PNG
+ Víðmynd
+ Víðmynd
+ Óþekkt tæki
+ 70%
+ 80%
+ 90%
+ 93%
+ 95%
+ 97%
+ 98%
+ 99%
+ 100%
+ Eftir
+ REC709
+ sRGB
+ 1.6
+ 1.8
+ 1.9
+ 2.0
+ 2.1
+ 2.2
+ 2.3
+ 2.4
+ 2.6
+ 2.8
+ Fela viðmót
+ Ljósop
+ 4K UHD
+ X-Auto
+ X-HDR
+ X-Night
+ X-Bokeh
+ X-Bty
+ Myndavél
+ Byggingarútgáfa
+ Höfundar
+ Grunnkóði
+ Notkunarleyfi
+ Þjónustuskilmálar
+ Til baka
+ Næsta
+ Ofurlýsa
+ Styrkja
+ andlit
+ Háhraða
+ Sérsniðin EXIF-merki
+ Ljósmyndari
+ Staðlað og DNG (RAW)
+ Sjálfgefið
+ Ekkert
+ Hraði
+ Venjulegt
+ Sjálfvirkt
+ Af
+ Af
+ Sjálfgefið
+ Truflanaútreikningur
+ Sjálfgefið
+ Af
+ lágmarks
+ Af
+ Fyrra
+ Næsta
+ Af
+ Ekkert
+ HDR bæting birtuskila
+ Gildi (hámark)
+ Af
+ Litróf (gamma)
+ Litrófsgildi myndmerkis
+ Af
+ Svart
+ Rautt
+ Appelsínugult
+ Gegnsætt
+ Hvítt
+ Utanáliggjandi myndavél
+ Skipta á utanáliggjandi myndavél
+ Skiptu milli margra myndavéla
+ Í lagi (þessi skilaboð verða ekki birt aftur)
+ Laust
+ Sýna aðdrátt
+ Birta -/+ aðdráttarstýringar
+ Birta -/+ hnappa til að stýra aðdrætti
+ Sýna rafhlöðu
+ Birta reiti
+ Rúður
+ Upplausn myndavélar
+ Sérsniðinn texti
+ Textastíll
+ Um hugbúnaðinn
+ Tiltækt
+ Ekki tiltækt
+ Afrita á klippispjald
+ Taka mynd
+ Myndasafn
+ Lýsing
+ Staðlað
+ TS
+ Valkostir villukembingar
+ Valkostir villukembingar
+ Lokhraði
+ Myndskeið í bið
+ Haldið áfram með myndskeið
+ Setja upptöku myndskeiðs í bið
+ Halda áfram með upptöku myndskeiðs
+ Ómeðhöndlað
+ Sjálfgefið
+ Óáreiðanlegt
+ Lítil
+ Miðlungs
+ Mikil
+ Óþekkt
+ metrar
+ fet
+ Af
+ Alltaf
+ Sjálfgefið
+ Endurheimta stillingar
+ Vistaðar stillingar
+ Venjulegt
+ Lítið ljós
+ Bluetooth ekki stutt.
+ Af
+ Ljómi
+ Af
+ Á
+ Bitahraði
+ Rammatíðni
+ Ekkert
+ Táknmyndir frá Material-hönnun Google
+ Sýna ISO-ljósnæmni
+ Sýna laust minni
+ Std
+ Sjálfsmynd
+ Glóperur
+ Ljósaskipti
+ Kertaljós
+ Andlit að næturlagi
+ Stöðug mynd
+ Skanna
+ Skyggður texti
+ Ósniðinn texti
+ Vista myndir…
+ Auðkenni
+ Myndavél/Camera er kvíslað frá Camera
+ Upplýsingar um Myndavél
+ vinstra megin á skjánum
+ hægra megin á skjánum
+ efst á skjánum
+ neðst á skjánum
+ á miðjunni
+ Aðstoð við skerpu
+ Litstyrkur (meðaltal)
+ Ljósleiki (meðaltal lág-hámarks)
+ Birta litrendur
+ Fjarlægð skerpupunkts
+ Tek ljósmynd
+ Mistókst að taka mynd
+ Hljóðrásir
+ Truflanasíuhamur
+ Fletta í gegnum RAW-hami
+ Birta RAW-táknmynd
+ Texti með skyggðum bakgrunni
+ Ljúka við víðmynd
+ Hávaði
+ Raddskipun: \"sís\"
+ Aflæsa hvítvægi
+ Hvítvægi læst
+ Hvítvægi aflæst
+ Aflæsa lýsingu
+ Bluetooth LE fjarstýring…
+ Virkja Bluetooth LE fjarstýringu
+ Virkja Bluetooth LE (BLE) fjarstýringartæki
+ Gerð fjarstýringartækis
+ BLE ekki stutt
+ Leita að BLE-tækjum
+ Dimma skjá ef fjarstýring aftengist
+ Fjarstýring tengd
+ Nota heimilisföng
+ Geyma staðsetningargögn
+ Hætta að geyma staðsetningargögn
+ Birta litatíðnirit
+ RGB-litir
+ Hætta við víðmynd
+ Hætt við víðmynd
+ Sjálfvirkur utanskurður víðmyndar
+ GPS-staðsetning ekki tiltæk
+ Mynd var eytt
+ Læsa lýsingu
+ Gat ekki skrifað í þessa möppu
+ Gat ekki opnað þessa möppu
+ Settu inn heiti á nýrri möppu
+ Mappan er þegar til
+ Veldu staðsetningu til að vista
+ Hámarksstærð skráar
+ Læsa hvítvægi
+ Vista upprunalegar myndir
+ Fela allt
+ Viðauki: Auto
+ Viðauki: HDR
+ Viðauki: Night
+ Viðauki: Bokeh
+ Viðauki: Beauty / Face Retouch
+ Open Source notkunarleyfi
+ Stöðvaði upptöku myndskeiðs
+ ekki stutt á tækinu þínu
+ Jöfnun lýsingar
+ Mistókst að vista mynd
+ Mistókst að vista RAW-mynd
+ Tókst ekki að ræsa forskoðun myndavélar
+ Veldu staðsetningu vistunar:
+ Hreinsa feril möppu
+ Hreinsa feril möppu\?
+ Veldu aðra möppu
+ Breytti staðsetningu vistunar í:
+ Hámarkstímalengd
+ Skjárinn er læstur
+\nstrjúktu eftir skjánum til að aflæsa
+ Hljóð óvirkt
+ Svart spjald
+ Hvítt spjald
+ Upplýsingar um höfund/ljósmyndara til að skrá í lýsigögn myndar (einungis JPEG-snið). (Skilja eftir autt til að sleppa)
+ Upplýsingar um höfundarrétt til að skrá í lýsigögn myndar (einungis JPEG-snið). (Skilja eftir autt til að sleppa)
+ Ljóskastari af skjá
+ Draugamynd
+ Síðasta mynd tekin
+ Valin mynd
+ Enginn skráagluggi fannst á þessu tæki, valkostur draugamyndar því ekki studdur
+ Get ekki opnað þessa mynd
+ Hvort renna eigi inn þegar verið er að aðlaga handvirkt fjarlægð skerpupunkts
+\n%s
+ Misskerpt myndaröð sem hætt var við
+ Sýna auðkenni myndavélar
+ Leyfa aðgerðir þar sem ýtt er lengi
+ Litáhrif
+ MISTÓKST AÐ OPNA MYNDAVÉL.
+ Spila hljóð við myndatöku
+ Valkostir hljóðstýringar
+ Næmni hljóðstýringar
+ Birta ástand rafhlöðu á skjánum
+ Birta stoðlínur fyrir utanskurð
+ Birta skilaboð á skjá
+ Birta hreyfingar smámynda
+ Birta jaðar þegar ljósmynd er tekin
+ Bitahraði myndmerkis (áætlaður)
+ Ræsa vefsvæði myndavélarforritsins í vafranum þínum
+ Gefa til að styðja áframhaldandi þróun
+ Birta \"Taka mynd\" tákn
+ Mistókst að búa til HDR-mynd
+ Utanáliggjandi hljóðnemi (ef til staðar)
+ Sjálfgefinn uppruni hljóðmerkis
+ Bestað fyrir raddsímtöl
+ Bestað fyrir talgreiningu
+ engin runa
+ Sýna hljóðstyrksmæli
+ Misskerpt myndaröð
+ Fjarlægð myndavélar í misskerptri myndaröð
+ Fjarlægð viðfangsefnis í misskerptri myndaröð
+ Bæta við óendanlegri fjarlægð
+ Mistókst að vista stillingar
+ Mistókst að endurheimta stillingar
+ Enginn skráagluggi fannst á þessu tæki, valkostur því ekki studdur
+ Vinstri-handar notandaviðmót
+ Hægri-handar notandaviðmót
+ Táknmyndir efst (lóðrétt)
+ Birta tákn fyrir greiningu andlita
+ Hamur fyrir lítið ljós: haltu myndavélinni stöðugri
+ Nota Saltwater fyrir útreikninga dýptar
+ Velja frekar heimilisföng en GPS-hnit
+ Ekki birta heimilisfang
+ Hvort birta eigi litatíðnirit litanna sem sjást á skjánum
+\n%s
+ Skerpumerking
+ Ef þessi valkostur er virkjaður, verður settur áherslulitur á brúnir sem eru skarpar (jaðrar). Þetta er fyrst og fremst notadrjúgt við handvirka stillingu skerpu, en er einnig ábending um hvaða svæði myndar séu skörp.
+\n%s
+ Litur skerpumerkingar
+ Hvaða lit á að nota til að áherslulita brúnir sem eru skarpar
+\n%s
+ Leyfa RAW í misskerptum myndaröðum
+ MYNDAVÉL GÆTI VERIÐ Í NOTKUN
+ AF ÖÐRU FORRITI\?
+ Mistókst að stimpla upplýsingar á mynd
+ Myndavélabrellur
+ Virkja litáhrif
+ Beitir völdum litáhrifum á myndina
+ Nota greiningu andlita í stað skerpusvæða
+ Hljóðmerki niðurteljara
+ Millibil í endurtekningarham
+ Fleiri myndavélarstýringar…
+ Snerta til að byrja upptöku
+ Í bið eftir að mynd er tekin
+ Mappa þar sem á að vista ljósmyndir/myndskeiðaskrár
+ Vista forskeyti ljósmynda
+ Forskeyti sem verður bætt framan við nöfn ljósmyndaskráa
+ Vista forskeyti myndskeiða
+ Forskeyti sem verður bætt framan við nöfn myndskeiðaskráa
+ Tímasnið skráarheita
+ Sýna myndavél þegar er læst
+ Framkvæma sjálfvirka skerpu í ræsingu
+ Hvort eigi að stilla skerpu sjálfvirkt þegar myndavélarforritið er gangsett. Ef þú átt í vandræðum með að kvikni á leifturljósi við gangsetningu, skaltu gera þetta óvirkt
+ Læsa skjá við upptöku myndskeiðs
+ Snúa forskoðun
+ Viðmót á skjánum…
+ Staðsetning viðmóts
+ Sýna horn
+ Sýna hornlínu
+ Halda skjánum gangandi
+ Þvinga hámarks birtustig
+ Stillingar ljósmynda og myndskeiða
+ Stilltu myndgæði JPEG eða WebP-ljósmynda (sjálfgefið gildi er 90%%). Hefur engin áhrif á PNG-myndsnið.
+\n%s
+ Nota Camera2 API
+ Virkja greiningu andlita
+ Gera greiningu andlita óvirka
+ Greining andlita virk
+ Greining andlita óvirk
+ Myndbandstökuvél
+ Stillingar sprettglugga
+ endurtekningar eftir
+ Gat ekki endurtengst myndavél
+ Villa, myndskeiðsskráin gæti verið skemmd
+ Óþekkt villa, myndskeið stöðvaðist
+ Þjónninn dó, myndskeið stöðvaðist
+ Því miður, sjálfvirk aðlögun á halla
+\ner ekki studd á þessu tæki
+ Sjálfvirk aðlögun halla
+ Birta fyrirliggjandi ISO-ljósnæmni. (Krefst notkunar Camera2 API.)
+ Birta lárétta jafnvægislínu
+ Litur á áherslulitun þegar myndavél er nálægt því lárétt
+ Stimpla ljósmyndir
+ Snið dagsetningarmerkis
+ Stimpla mynd
+ Myndskeið stöðvað
+\nVarhugavert lág hleðsla rafhlöðu
+ Halli kvarðaður
+ Hallakvörðun endurstillt
+ Notað í GPS-hæðarmælingar fyrir stimplun í myndir og skjátexta myndskeiða
+\n%s
+ Birta tákn fyrir sjálfvirka aðlögun halla
+ Virkja sjálfvirka aðlögun halla
+ Virkja myndstimpil
+ Gera myndstimpil óvirkan
+ Myndstimpill virkur
+ Myndstimpill óvirkur
+ Birta tákn fyrir stimplun sérsniðins texta á mynd
+ Nota heimilisföng ef mögulegt er auk GPS-hnita
+ Tímalengd myndskeiðs náði hámarki
+ Skráarstærð myndskeiðs náði hámarki
+ Lýsing læst
+ Lýsing ólæst
+ Hætt við niðurteljara
+ Hætt við endurtekningarham
+ Ræsti niðurteljara
+ Mistókst að vista myndskeiðsskrá
+ Mistókst að taka upp myndskeið
+ Byrjaði upptöku myndskeiðs
+ Mistókst að aðlaga halla sjálfvirkt
+ Stimplaðu ljósmyndir með dagsetningu og tíma og einnig GPS-upplýsingum ef staðsetning/stefnugögn eru virk
+\n%s
+ Snið tímamerkis
+ Snið GPS-merkis
+ Stimplaðu ljósmyndir með sérsniðnum texta
+ Stærð leturs þegar texti er stimplaður á myndir
+\n%s
+ Litur leturs þegar texti er stimplaður á myndir
+\n%s
+ Stíll sem á að nota þegar texti er stimplaður á myndir
+\n%s
+ Gera sjálfvirka aðlögun halla óvirka
+ Birta \"Stimpla mynd\" tákn
+ Sjálfvirkt leifturljós af skjá
+ Leifturljós af skjá virkt
+ Leggðu yfir aðra mynd, til aðstoðar við hliðrun.
+\n%s
+ Læsa stefnu ljósmynda/myndskeiða
+ Myndavélarstýringar
+ Myndsviðshamur
+ Beita myndsviðsham
+ Bestaðu myndina miðað við ólík myndsvið (senur)
+ Stilltu hvítvægi
+ Stilltu jöfnun á lýsingu
+ Geyma staðsetningargögn
+ Geyma stefnu áttavita
+ Krefjast staðsetningargagna
+ Setja allar stillingar myndavélar á sjálfgefin gildi
+ Ertu viss um að þú viljir endursetja allar stillingar myndavélar á sjálfgefin gildi\?
+ Leifturljóshamur
+ Skipta yfir á frammyndavél
+ Skipta yfir á bakmyndavél
+ Skipta yfir í myndskeiðsham
+ Skipta yfir í ljósmyndaham
+ Eyða síðustu mynd
+ Deila mynd
+ Get ekki vistað í þessa möppu
+ Heimild fyrir staðsetningar er ekki tiltæk
+ Mislýs {}
+ Mislýst myndaröð
+ Tek upp…
+ Leyfa RAW í mislýstum myndaröðum
+ Mislýst myndaröð stöðvast
+ Hve mörg ljósop á að draga frá eða bæta við dekkstu/ljósustu mynd
+\n%s
+ Ekki vista upprunalegar myndir
+ Vista staka upprunalega mynd
+ Vista allar upprunalegar myndir (hægvirkt)
+ Ekki nægilegt pláss til að taka upp myndskeið
+ Athugun á hættulega lágri hleðslu
+ Alvarleg villa í myndavél
+ Ekkert myndasafnsforrit er tiltækt
+ Heimild fyrir hljóðnema er ekki tiltæk
+ Hefja upptöku myndskeiðs
+ Stöðva upptöku myndskeiðs
+ Hröð runa
+ Vista allar myndir fyrir HDR-ham
+ HEIMILD EKKI TILTÆK
+ Mislýst myndaröð
+ Fjöldi mynda í mislýstum myndaröðum
+\n%s
+ Sýna aðdráttarsleða
+ Birta sleða til að stýra aðdrætti
+ Birta stefnu áttavita
+ Birta núverandi tíma á skjánum
+ Nota bakgrunnsþráð
+ Þvinga 4K UHD myndmerki (virkar bara á sumum tækjum)
+ Virkja stafræna stöðugleikajöfnun myndmerkis
+ Rammatíðni myndmerkis (áætlaður)
+ Hámarks tímalengd myndskeiðs
+ Hámarks skráarstærð myndskeiðs
+ Endurræsa eftir að hámarksstærð er náð
+ Blikka á meðan upptöku myndskeiðs stendur
+ Endurræsa myndskeið eftir að hámarkslengd er náð
+ Camera API
+ Upprunalegt Camera API
+ Ógegnsæi draugamyndar
+ Forgrunnslitur litranda
+ Bakgrunnslitur litranda
+ Tákn fyrir margar myndavélar
+ Birta fyrirliggjandi aðdráttarstig á skjánum (þegar rennt er að)
+ Geyma stefnu áttavita í myndum (einungis JPEG-snið)
+ Hefja hlustun eftir hljóði
+ Hætta hlustun eftir hljóði
+ Gerðu hávaða
+ Sjálfvirk aðlögun halla mun snúa myndum svo þær virðist alveg láréttar.
+\n
+\nAthugaðu að þetta þýðir að myndirnar munu koma út með örlítið minni upplausn (vegna snúnings og utanskurðar sem þetta útheimtir).
+ Kvarða horn halla
+ Settu tækið þitt á flatann láréttan flöt svo það sé lárétt (annað hvort á langveg eða þverveginn), og veldu síðan Kvarða.
+\n
+\nÝttu á Frumstilla til að fjarlægja kvörðun úr tækinu þínu.
+\n
+\nÝttu á Til baka hnappinn til að hætta við.
+ Hvort birta skuli hljóðstyrk á skjá við upptöku myndskeiðs
+ Birta tákn fyrir að geyma staðsetningargögn
+ Forskoðun myndavélar…
+ Fletta í gegnum leifturljós
+ Birta tákn fyrir leifturljós
+ Fyrirliggjandi fjarstýring:
+ Mistókst að búa til víðmynd
+ Upprunalegar myndir víðmyndar
+ Ekki vista upprunalegar myndir
+ Leitarstika til að aðlaga jöfnun lýsingar
+ Vista upprunalegar myndir ásamt XML-aflúsun
+ Camera2 API
+ Veldu fjartengt tæki
+ Óþekkt tæki (heimild fyrir bluetooth-tengingar er ekki til staðar)
+ Myndavél/Camera er © 2013–2023 Mark Harman, gefið út með GPL útg.3 eða síðari. Ýttu hér til að sjá allan texta notkunarleyfisins.
+ Myndavél/Camera notar táknmyndir úr Material-hönnun Google (https://developer.android.com/design/downloads/index.html , https://design.google.com/icons/ , https://github.com/google/material-design-icons/ , https://google.github.io/material-design-icons/) samkvæmt Apache notkunarleyfi útgáfu 2.0. Sumum táknmyndum hefur verið breytt. Ýttu hér til að sjá allan texta notkunarleyfisins.
+ Hægtaka virk
+ Hægtaka óvirk
+ Hvort eigi að sýna táknmynd á skjánum þar sem hægt er að virkja eða gera greiningu andlita óvirka
+ Hvort eigi að sýna táknmynd á skjánum þar sem hægt er að virkja eða gera stimplun mynda óvirka
+ Hvort eigi að sýna táknmynd á skjánum þar sem hægt er að tilgreina sérsniðinn texta til að stimpla á myndina
+ Hvort eigi að sýna táknmynd á skjánum þar sem hægt er að læsa eða aflæsa sjálfvirku hvítvægi
+ Hvort eigi að sýna táknmynd á skjánum þar sem hægt er að læsa eða aflæsa lýsingu
+ Hvort eigi að sýna táknmynd á skjánum þar sem hægt er að virkja eða gera staðsetningargögn óvirk (geotagging)
+ Hvort eigi að sýna táknmynd á skjánum þar sem hægt er að fletta í gegnum RAW-hami
+ Veldu skráasniðið sem notað verður til að vista myndir. Þetta hefur áhrif á \"venjulegar\" (ekki RAW) ljósmyndir. Einungis JPEG styður að vista með EXIF-lýsigögn. Athugaðu að PNG-snið er ekki fullkomlega taplaust, heldur er því umbreytt úr JPEG með 100%% myndgæðum.
+\n%s
+ Hvort eigi að leyfa aðgerðir þar sem ýtt er lengi (t.d. ýta lengi á myndasafn til að breyta staðsetningu vistunar).
+ Hægtaka (slow-motion)
+ Geyma snúning, dýfu og veltu
+ Geyma snúning, dýfu og veltu (yaw, pitch, roll) í athugasemdum EXIF-lýsigagna mynda á tækinu (einungis JPEG-snið)
+ Leitarstika til að breyta kjörstillingu
+ Útrýming ráka
+ Leyfa ljósmyndir á meðan upptöku myndskeiðs stendur
+ Litasnið myndskeiða
+ Birta \'Nýtt á döfinni\' glugga
+ Reiknirit fyrir brúnir
+ Vinnslustillingar…
+ Hærra gildi þýðir meiri ljósnæmni (virkar mögulega ekki á sumum tækjum)
+ Settu á 0 fyrir sjálfgefna jöfnun á lýsingu
+ Veldu stillingu til að aðlaga hvítvægi (white balance)
+ Taktu ljósmynd eða myndskeið einfaldlega með því að snerta eða tvíbanka á forskoðunina
+ Setja skjáinn í bið eftir að mynd er tekin, með valkostum um að deila eða eyða myndinni
+ Valkostur varðandi næmi á styrk truflana í hljóði (hávaða)
+ Valkostur um að snúa forskoðuninni (hefur ekki áhrif á teknar myndir/myndskeið)
+\n%s
+ Birta á skjánum plássið sem eftir er í geymslurými tækis
+ Birta núverandi stefnuhorn tækis á skjánum
+ Litur á áherslulitun horns/hæðar
+ Birta stefnu áttavitans í tækinu á skjánum
+ Hætt við aðgengi geymslukerfis
+ Krafist er heimilda til að nota myndavél svo hún virki
+ Heimild til aðgangs að gagnageymslu er nauðsynleg til að vista skrár sem verða til, eins og ljósmyndir eða myndskeið
+ Heimild þarf fyrir aðgang að hljóðnema til að taka upp myndskeið með hljóði, og eins ef nota á valkosti hljóðstýringar
+ Virkja hraðar runur við HDR/mislýsingu
+ Sýna línur fyrir dýfu
+ Birta lárétta dýfulínur
+ Birta stefnulínur áttavita
+ Birta stefnulínur í áttavita
+ Mistókst að setja af stað hlustun eftir hljóði
+ Heimildir þarf fyrir skönnun/tengingu á Bluetooth til að finna og tengja Bluetooth LE (BLE) fjarstýringartæki.
+ Sé þetta valið, verða litrendur teiknaðar á skjáinn sem sýna á forskoðuninni hvar myndin verði yfirlýst.
+\n%s
+ Veldu Camera2 API til að virkja aukaeiginleika á borð við handvirka hami á lýsingu, skerpu, hvítvægi, auk RAW-mynda (ef tækið styður slíkt). Breyting á API-kerfisviðmóti hefur endurræsingu í för með sér.
+\n%s
+ Litrófsgildi til notkunar fyrir myndskeið ef myndmerkissnið er stillt á Litróf
+\n%s
+ Einungis dimma stjórnhnappa á skjá
+ Fela sýndarstjórnhnappa á skjá
+ Alfa-gegnsæisgildi fyrir draugamyndir. Lægra gildi þýðir meira gegnsæi, hærra þýðir meira ógegnsæi.
+\n%s
+ Litur sem á að nota í forgrunnsrendur þegar litrendur eru birtar.
+\n%s
+ Litur sem á að nota í bakgrunnsrendur þegar litrendur eru birtar.
+\n%s
+ Birta auðkennisnúmer núverandi myndavélar á skjánum
+ Umlykjandi hamur (immersive)
+ Í víðmyndarham, hvort eigi að fjarlægja bylgjóttu jaðrana
+\n%s
+ Taka ljósmynd/myndskeið þegar hávaði greinist. Þegar þetta er virkt, skaltu nota hljóðnematáknið á skjánum til að byrja/hætta hlustun.
+\n%s
+ Auka eða minnka jöfnun lýsingar
+ Niðurtalning með rödd
+ Taka upp hljóð með upptöku myndskeiðs
+ Upprunalegar myndir truflanasíu
+ Vistar allar stillingar myndavélar í skrá
+ Heiti á vistuðum stillingum
+ Skráasnið og kóðunarlyklar mynda og hljóðs
+\n%s
+ Stillingastjórnun
+ Birta tákn fyrir læsingu á hvítvægi
+ Birta tákn fyrir sjálfvirka lýsingu
+ Ábending: Settu sjálfgefin birtuskil á lágmarksgildi áður en myndavélarforritið er gangsett..
+ Spegla frammyndavél
+ Birta jaðar á skjánum sem gefur til kynna hvenær mynd er tekin
+ Upptaka myndskeiðs mun hætta eftir tiltekinn tíma
+\n%s
+ Tiltaktu einóma eða víðóma upptöku á hljóði (víðómur er aðeins studdur á sumum tækjum)
+ Virkjar aukaeiginleika á borð við handvirka hami á lýsingu, skerpu, hvítvægi, auk RAW-mynda (ef tækið styður slíkt), en er ekki víst að virki á öllum tækjum (hefur endurræsingu í för með sér)
+ Nota aðra aðferð fyrir leifturljós
+ Virkjaðu þetta ef leifturljós tækisins þín hegðar sér skringilega þegar notað er Camera2 API
+ Hvort eigi að spegla tekinni mynd þegar frammyndavélin er notuð
+\n%s
+ Log (Lítið)
+ Log (Miðlungs)
+ Settu staðlað eða flatt litasnið fyrir myndskeiðsham
+\n%s
+ Log (Fínt)
+ Log (Sterkt)
+ Log (Mjög sterkt)
+ Log-snið
+ Reiknirit sem hjálpa við að útrýma ljósflökti.
+\n%s
+ Leyfir töku ljósmynda á meðan upptöku myndskeiðs stendur. Gerðu þetta óvirkt ef upp koma vandamál við upptöku myndskeiða þegar Camera2 API-kerfisviðmótið er virkt á tækinu.
+ Myndum verður snúið þannig að þær séu sjálfkrafa láréttar (aðeins ljósmyndir - myndataka verður hægvirkari og gæti misheppnast á tækjum með of lítið minni)
+ Ef þetta er virkt, mun skjárinn ekki slökkva á sér á meðan aðalviðmót myndavélarinnar er í gangi
+ Hvort eigi að birta tímabundin skilaboð með upplýsingum á skjánum
+ Birta hreyfandi smámynd þegar mynd er tekin
+ Upplýsingar um forrit og villuboð
+ Hvort vista eigi myndir í bakgrunnsþræði (til að hraða aðgerðum)
+ Ef þetta er stillt, verður halli tækisins hunsaður og stefna myndar/myndskeiðs mun miðast við tilgreinda stefnu
+\n%s
+ Gefur hljóðmerki þegar niðurteljari telur niður eða við töf við endurtekna myndatöku
+ Talaðu inn niðurtalningu eða töf við endurtekna myndatöku (frá 60 sekúndum)
+ Hvort nota eigi aðgengi geymslukerfis (Storage Access Framework) til að vista ljósmyndir og myndskeið. Þetta ætti að virkja svo hægt sé að vista á utanáliggjandi SD-minniskort. Á Android 10+ verður að virkja þetta til að geta vistað í möppur utan DCIM-möppunnar.
+ Ef þetta er virkt, mun myndavélarviðmótið sjóst ofan á hverskyns læsiskjám (þú getur eftir sem áður komist í Stillingar, Myndasafn, o.s.frv.)
+ Þvinga skjáinn á hámarks birtustig, fremur en það sem sjálfgefið er í tækinu
+ Geyma staðsetningargögn í ljósmyndum/myndskeiðum (ljósmyndir gerta aðeins geymt staðsetningargögn í JPEG og DNG-sniðum)
+ Ef staðsetningargögn eru virkjuð, þá aðeins taka mynd ef staðsetningargögn eru tiltæk
+ Hvort eigi að vista upprunalegar myndir þegar verið er í truflanasíuham. Athugaðu að þetta getur gert vistun mynda mun hægvirkari.
+\n%s
+ Stöðvar upptöku myndskeiða ef mjög lítil hleðsla er á rafhlöðu. Þetta minnkar hættuna á að myndskeið skemmist ef tækið þitt slekkur skyndilega á sér þegar hleðsla er við það að klárast.
+ Hvort eigi að vista upprunalegar myndir þegar verið er í víðmyndaham. Athugaðu að þetta getur gert vistun víðmynda mun hægvirkari. Býður einnig upp á að vista XML-skrá sem getur nýst við að tilkynna vandamál varðandi víðmyndatökur.
+\n%s
+ Þessi valkostur kvarðar hreyfiskynjara tækisins, svo að sjálfvirkur halli og halla/hornmælingar á skjá virki rétt
+ Endurheimtir áður vistaðar stillingar. Þetta skrifar yfir allar fyrirliggjandi stillingar með vistuðu stillingunum!
+ Hvort eigi að sýna táknmynd á skjánum þar sem hægt er að virkja eða gera sjálfvirkan halla/stefnu mynda óvirka. Þegar sjálfvirkur halli er virkur, verður myndum snúið þannig að þær séu sjálfkrafa láréttar.
+ Hljóðneminn sem á að nota við hljóðupptökur. Athugaðu að nákvæm hegðun valkostanna fer eftir því hvernig viðkomandi eiginleikar eru útfærðir á tækinu þínu.
+\n%s
+ Ef þetta er virkt, mun vera kveikt/slökkt á leifturljósinu þegar tekið er upp myndskeið (er hægt að nota til að sjá í fjarlægð hvort myndavél sé enn að taka upp)
+ Ef þér líkar þetta forrit, ættirðu að íhuga að styrkja þróun þess. Þú getur gert það með því að kaupa gjafaforritið mitt - smelltu á þennan tengil til að opna síðuna fyrir gjafaforritið. Kærar þakkir!
+ Þegar verið er að taka upp myndskeið, verður viðmótinu læst til að koma í veg fyrir að upptakan stöðvist fyrir slysni. Strjúktu yfir skjáinn til að aflæsa. Athugaðu að upptaka myndskeiða stðvast alltaf ef forritið hverfur í bakgrunn eða ef skjárinn tæmist.
+ Stoðlínur fyrir utanskurð birtast sem fehyrningur sem sýnir hvernig tilgreind stærðarhlutföll líti út - nýtist vel ef ætlunin er að sníða til ljósmynd/myndskeið eftirá yfir í önnur stærðarhlutföll. Krefst þess að vera í WYSIWYG raunljósmyndunarham, eða vera í myndskeiðstökuham.
+\n%s
+ DNG-skrár innihalda fullar óþjappaðar og óunnar myndupplýsingar beint frá myndavélinni.
+\n
+\nAthugaðu að sum myndasafnaforrit þekkja ekki DNG-skrár. DNG-myndir er hægt að vinna með í ýmsum sérhæfðum myndvinnsluforritum.
+\n
+\nAthugaðu að ýmsar vinnsluaðferðir á borð við stimplun á myndir og sjálfvirkur halli virka ekki á DNG-myndir, heldur á önnur myndsnið (JPEG/PNG/o.s.frv.).
+ Virkjar 3840x2160 upplausn fyrir upptöku myndskeiða í bakmyndavél - þessi kostur er redding sem gæti nýst 4K tækjum í 4K myndavélum sem ekki bjóða þennan valkost til utanaðkomandi myndavélaforrita. Það er ekkert víst að þetta virki, endilega prófa áður en farið er að nota þetta.
+ Stafræn stöðugleikajöfnun myndmerkis minnkar óvæntar hreyfingar og titring bæði í forskoðun og upptöku myndskeiða. Þetta gæti verið óþarft ef tækið þitt styður optíska stöðugleikajöfnun (OIS).
+ Stillir áætlaðan bitahraða myndskeiða (hærra gildi þýðir betri gæði, en tekur líka meira geymslupláss; getur einnig valdið því að upptaka mistakist ef tækið styður ekki viðkomandi bitahraða)
+\n%s
+ Stillir áætlaða rammatíðni (FPS) myndskeiða (má vera nálgun, er ekki víst að náist, og getur einnig valdið því að upptaka mistakist ef tækið styður ekki viðkomandi rammatíðni). Skoðaðu í raunverulegum myndskeiðum hvaða endanlega rammatíðni er notuð. Athugaðu að þessi stilling hefur engin áhrif í hægmyndatöku.
+\n%s
+ Hvort eigi sjálfkrafa að endurræsa þegar hámarksstærð skráa er náð (hvort sem er skilgreindri af tækinu eða notandanum)
+ Ef myndskeið hefur stöðvast eftir að hámarkslengd er náð (ef það er stillt), lætur þessi kostur upptökuna byrja aftur, eins oft og skilgreint er
+\n%s
+ Útbýr skjátextaskrá (.SRT) sem geymir dagsetningu og tíma ásamt GPS-upplýsingar ef staðsetningar/stefnugögn eru virkjuð. (Á Android 11+ krefst þessi kostur þess að heimildir séu veittar fyrir \'Fleiri myndavélastýringar\' og \'Aðgengi geymslukerfis\'.)
+\n%s
+ Hvort birta eigi upplýsingar um nýja eiginleika og betrumbætur eftir að forritið hefur verið uppfært
+ Reikniritið sem myndavélarrekillinn ætti að nota við að bæta brúnir í myndum. Bæting brúna eykur skerpu og fínleg atriði í teknum myndum. (Þessi stilling er hunsuð í truflanasíuham.)
+\n%s
+ Reikniritið sem myndavélarrekillinn ætti að nota við að minnka truflanir og suð. Truflanasíu-útreikningurinn leitast við að bæta myndgæði með því að fjarlægja umframsuð sem verður til við myndatöku, sérstaklega þar sem birta er lítil. (Athugaðu að þetta er ekki það sem er kallað truflanasíuhamur og í rauninni er þessi stilling hunsuð í truflanasíuham.)
+\n%s
+ Birtir táknmynd til að taka ljósmyndir og myndskeið. Afmerktu þetta ef þú vilt frekar taka myndir með öðrum aðferðum, eins og t.d. ef tækið þitt er með sérstakan myndatökuhnapp, eða ef þú vilt frekar nota hljóðstyrkshnappana.
+ Kvarða þarf áttavita tækisins til að bæta nákvæmni hans. Þetta er hægt að gera með því að hreyfa tækið í feril sem líkist tölunni 8.
+\n
+\nFyrirliggjandi nákvæmni:
+ Ef þetta er virkt í HDR-tökuham, verða mislýstu grunnmyndirnar þrjár vistaðar samhliða HDR-lokamyndinni. Athugaðu að þetta gerir vistun hægvirkari, sérstaklega ef einnig er verið að nota \"Stimpla myndir\" eða sjálfvirka aðlögun halla.
+ Gerir kleift að taka hraðari HDR/mislýstar ljósmyndarunur. Gerðu þetta óvirkt ef tækið þitt á í vandræðum með að taka myndir í HDR- eða mislýsingarham (Expo).
+ Þessi valkostur gerir þér kleift að velja eina af stillingaskránum sem þú hefur vistað. Hafðu í huga að sé slík skrá valin mun hún skrifa yfir allar fyrirliggjandi stillingar!
+ Fyrir vatnsheldar myndavélahýsingar, bætir nákvæmni ef rétt gerð vatns er valin.
+ Til að taka víðmynd (panorama), skaltu halda tækinu þínu í lóðréttri stöðu (portrait) og taka mynd til að hefja víðmyndatökuna. Snúðu tækinu síðan til hægri eða vinstri þannig að hvíti hringur miðjunnar færist yfir á bláa punktinn. Eftir hverja nýja mynd er tækinu snúið áfram þar til blái punkturinn birtist aftur.
+\n
+\nÝttu á hakmerkið til að vista víðmyndina eða á krossinn til að hætta við.
+\n
+\nAthugaðu að það getur tekið nokkurn tíma að vinna víðmyndir og vista þær.
+ Upptaka myndskeiðs mun stöðvast og/eða endurræsast (sjá valkost fyrir neðan) þegar (um það bil) hámarksskráarstærð er nað. Athugaðu að mörg Android-tæki eru með hámarksstærð fyrir myndskeið (oft í kringum 2GB eða 4GB), en þessi valkostur gerir kleift að stilla tiltekið gildi. Athugaðu að þennan valkost er ekki hægt að nota til að auka innbyggða hámarksstærð tækisins.
+\n%s
+ HDR-hamur nýtist vel fyrir myndir með miklum mun á birtustigi. Það virkar þannig að teknar eru margar myndir með mismunandi lýsingu, síðan eru þær sameinaðar til að útbúa lokamyndina.
+\n
+\nAthugaðu að HDR hentar ekki fyrir viðfangsefni sem hreyfast hratt og getur að auki leitt til ónákvæmni í litum.
+\n
+\nMyndataka í HDR-ham verður hægvirkari.
+ Heimild þarf fyrir aðgang að staðsetningu til að hnattstaðsetja myndir (geyma staðsetningargögn í ljósmyndum og myndskeiðum, þar með talið í stimplum og skjátextaskrám). Heimild fyrir aðgang að staðsetningu er einnig nauðsynleg (a.m.k. á Android 11 og eldri) til að tengjast Bluetooth LE fjarstýringum.
+ DRO
+ Hvenær eigi að nota reiknirit fyrir bætingu birtuskila í HDR (Dynamic Range Optimizer - DRO). Þetta getur bætt myndir þegar þær eru teknar við aðstæður með mjög miklum breytileika í ljósmagni og gefur líka lokamyndinni meira HDR-útlit.
+\n%s
+ Hvort birta eigi táknmynd á skjánum þar sem flett er í gegnum valkosti fyrir leifturljós, í stað þess að valkostirnir birtist í valmynd. Athugaðu að ljóskastari er ekki tiltækur ef þessi valkostur er valinn.
+ Hvort RAW-valkosturinn eigi einnig að gilda við tökur á mislýstum myndaröðum (eða í HDR-ham þegar \"Vista allar myndir fyrir HDR-ham\" er virkt). Ef þetta er óvirkt, verða einungis JPEG-myndir vistaðar í þessum tökuhömum.
+ Hvort RAW-valkosturinn eigi einnig að gilda við tökur á misskerptum myndaröðum. Ef þetta er óvirkt, verða einungis JPEG-myndir vistaðar í þessum tökuham.
+ Snertu til að skerpa og ýttu á hvíta hnappinn til að taka myndir.
+\n
+\nTil að gera hámarksbirtustig skjás óvirkt, skaltu skoða Stillingar/Viðmót á skjánum/\"Þvinga hámarks birtustig\". Til að vista á SD-minniskort á Android 5+, skaltu skoða Stillingar/Fleiri myndavélarstýringar/\"Aðgengi geymslukerfis\". Til að sjá ítarlegri leiðbeiningar skaltu smella á \"Hjálp á netinu\" í stillingunum.
+ Ef þetta er virkt, skal nota aðskilda hnappa til að skipta á milli bak-/frammyndavéla og til að skipta á milli margra bak-/frammyndavéla. Ef þetta er óvirkt, mun táknið til að skipta milli myndavéla fletta í gegnum allar tiltækar myndavélar.
+ Ef slíkt er mögulegt, verður náð í heimilisfang eða staðarheiti út frá GPS-hnitum (fyrir myndastimpil eða skjátexta myndskeiðs). Athugaðu að ef þetta er virkt krefst það þess að staðsetning þín sé send um internetið yfir til utanaðkomandi aðila til að umbreyta GPS-hnitum yfir í staðarheiti/heimilisfang. Skoðaðu https://developer.android.com/reference/android/location/Geocoder . Þessi eiginleiki tryggir á engan hátt að slík gögn séu tiltæk eða nákvæm. Niðurstöðurnar eru bara bestu tiltækar ágiskanir, án ábyrgðar á því hvort þær séu marktækar.
+\n%s
+ Virkja bráðabirgðaviðgerð á töku HDR/mislýsinga
+ Prófaðu að virkja þetta ef tækið þitt á í erfiðleikum með að taka myndir í HDR- eða mislýsingarham (t.d. ef mislýstu myndirnar koma út með sömu lýsingu). Hefur enga þýðingu nema kosturinn \"Virkja hraðar runur við HDR/mislýsingu\" sé einnig virkur.
+ HDR-litatónavörpun
+ Veldisvöxtur
+ Sjálfgefið
+ Fjarlægja EXIF-gögn tækis
+ Fjarlægja EXIF-gögn tækis
+ Fjarlægja nema dagsetningu/tíma
+ Ekki fjarlægja EXIF-gögn tækis
+ Reiknirit fyrir litatónavörpun í HDR-ljósmyndaham
+\n%s
+ Einföld afmörkun (clamp)
+ Hvort eigi að fjarlægja EXIF-lýsigögn tækis úr JPEG-myndum. Þetta mun ekki fjarlægja EXIF-merki sem koma frá öðrum þeim stillingum sem nota EXIF-lýsigögn (t.d. staðsetning/hnit). Þær stillingar virka sjálfstætt og mynu taka yfir þessa stillingu. Hefur ekki áhrif á RAW/DNG og myndskeið.
+\n%s
+ Haltu myndavélinni stöðugri til að taka betri myndir.
+ Bæta við tengilið
+ QR-kóði
+ Bæta við tengilið
+ Bæta atburði við dagatal
+ Bæta þessum atburði við dagatalið
+ Opna þessa staðsetningu
+ Opna þessa staðsetningu
+ Senda nýjan tölvupóst
+ Skrifa nýjan tölvupóst á tilgreind póstföng
+ Fletta upp þessu ISBN
+ Leita að þessu ISBN á isbnsearch.org
+ Fletta upp vöru
+ Leita að strikamerki þessarar vöru
+ Senda nýtt SMS
+ Senda nýtt SMS á tilgreinda viðtakendur
+ Hringja í símanúmer
+ Hringja í símanúmerið
+ Fletta upp VIN
+ Fletta upp auðkennisnúmeri þessa farartækis (Vehicle Identification Number - VIN)
+ Tengjast við þetta Wi-Fi netkerfi
+ Bæta þessu Wi-Fi netkerfi á listann yfir þekkt netkerfi og tengja tækið við það
+ Táknmynd
+ Deila
+ Afrita á klippispjald
+ Ekkert forrit fannst sem getur meðhöndlað þessa aðgerð
+ Texti
+ Stilla þetta tæki
+ Wi-Fi Easy Connect™ (DPP)
+ Meðhöndla þennan FIDO QR-kóða
+ Nota aðgangslykil
+ Deila með
+ FRIÐHELGISROFINN ÞINN VERÐUR AÐ VERA VIRKUR
+ ÞAR SEM MYNDAVÉLIN ER EKKI TILTÆK ;-)
+ BÍDDU Í 5 SEKÚNDUR EFTIR AÐ MYNDAVÉLIN
+ HLAÐIST ÞAR SEM VERIÐ VAR AÐ VIRKJA HANA
+
\ No newline at end of file
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 1c0fac25ce95c2eaad5965a13326a6fa9d152345..31e17718f0431782ec2829006f8f1ea9cc838e63 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -1,28 +1,29 @@
-
- Open Camera
+ Fotocamera
Impostazioni
Impostazioni Popup
OK (Non mostrare più)
-
- Acceso
- Spento
-
+ Acceso
+
+ Spento
+
Scegli la posizione di salvataggio:
Pulisci la cronologia delle cartelle
Pulire la cronologia delle cartelle?
Scegli un\'altra cartella
Posizione cambiata in:
Registrazione video interrotta
- riavvii restanti
+ riavvii restanti
+
Fallita la riconnessione alla fotocamera
Errore, il video potrebbe essere danneggiato
- non supportato sul tuo dispositivo
+ non supportato sul tuo dispositivo
+
Errore sconosciuto, video interrotto
Server non raggiungibile, video interrotto
Il video ha raggiunto la durata massima
- Il video ha raggiunto la dimensione massima
+ Il file video ha raggiunto la dimensione massima
Compensazione dell\'esposizione
FPS
Distanza focus
@@ -47,31 +48,30 @@
Scatto della foto
Lo scatto della foto è fallito
Posizione GPS non disponibile
- Foto cancellata
- Nessuna app galleria disponibile
+ Foto eliminata
+ App galleria non disponibile
Lo schermo è bloccato\nTrascina il dito sullo schermo per sbloccare
Sbloccato
- Spiacente, ma l\'auto-stabilizzazione non è supportata su questo dispositivo
+ Spiacente, auto-stabilizzazione non supportata
+\nsu questo dispositivo
Audio disabilitato
Durata massima
Effetto Colore
Modalità di scena
Bilanciamento bianco
-
Angolo
Direzione
- ERRORE NELL\'APRIRE LA FOTOCAMERA.
- LA FOTOCAMERA POTREBBE GIÀ ESSERE IN USO
+ ERRORE APERTURA FOTOCAMERA.
+ LA FOTOCAMERA POTREBBE ESSERE GIA\' IN USO
DA UN\'ALTRA APPLICAZIONE?
ISO
Zoom
Libera
[BLOCCATO:
Trascina per sbloccare]
-
- Salvataggio timbro sulla foto fallito
- m
-
+ Non riesco a scrivere le informazioni sulla foto
+ m
+
Effetti fotocamera
Auto-stabilizzazione
Le immagini saranno ruotate in modo da raddrizzarle automaticamente (solo per le foto) (è più lento per fare foto e può fallire su dispositivi con poca memoria)
@@ -89,7 +89,6 @@
Se impostato, l\'orientamento del dispositivo sarà ignorato e l\'orientamento di foto e video sarà quello impostato\n%s
Riconoscimento volti
Usa il riconoscimento volti invece dell\'area di messa a fuoco
-
Controlli fotocamera
Timer
Suono timer
@@ -100,7 +99,7 @@
Intervallo foto a raffica
Più controlli fotocamera…
Tocca per acquisire
- Scatta le foto semplicemente toccando l\'anteprima oppure toccando due volte
+ Scatta una foto o registra un video toccando l\'anteprima oppure toccando due volte
Pausa dopo aver scattato la foto
Mette in pausa lo schermo dopo aver scattato la foto, permettendo inoltre di condividere o cancellare la foto
Suono otturatore
@@ -112,16 +111,16 @@
Opzione per sensibilità del livello di rumore per il controllo audio (forte rumore)
Posizione di salvataggio
Cartella in cui salvare foto e video
- Utilizza Storage Access Framework per il salvataggio di foto e video
+ Se utilizzare Storage Access Framework per il salvataggio di foto e video. Da abilitare per consentire di salvare su memorie SD esterne. A partire da Android 10, deve essere abilitato per consentire di salvare su cartelle diverse da DCIM.
Salva prefisso per foto
Prefisso da usare per il nome file di salvataggio delle foto
Salva prefisso per video
Prefisso da usare per il nome file di salvataggio dei video
Formato tempo da utilizzare nel nome file
Mostra la fotocamera quando dispositivo bloccato
- Se abilitato, Open Camera sarà mostrata sopra il blocco schermo (dovrai comunque sbloccarlo per accedere a Impostazioni, Galleria, ecc.)
+ Se abilitato, Camera sarà mostrata sopra il blocco schermo (dovrai comunque sbloccarlo per accedere a Impostazioni, Galleria, ecc.)
Autofocus all\'avvio
- Usa la messa a fuoco automatica quando Open Camera si avvia. Se il flash non dovesse attivarsi, disattiva questa opzione
+ Usa la messa a fuoco automatica quando Camera si avvia. Se il flash non dovesse attivarsi, disattiva questa opzione
Blocco schermo nella registrazione video
Quando si registra un video l\'interfaccia sarà bloccata per prevenire accidentali interruzioni. Trascina il dito sullo schermo per sbloccare. Nota che la registrazione del video sarà interrotta se l\'app andrà in background o se lo schermo è oscurato.
Ruota anteprima
@@ -153,7 +152,8 @@
Mostra batteria
Visualizza sul display il livello corrente di carica della batteria
Mostra griglia
- Griglia
+ Griglia
+
Mostra guida ritaglio
La guida al ritaglio mostra sullo schermo un rettangolo che indica le proporzioni attuali - utile se in un secondo momento si ha intenzione di ritagliare la foto o il video ad un certo rapporto di proporzioni. Richiede la modalità foto WYSIWYG, o di essere in modalità video\n%s
Visualizza messaggi su schermo
@@ -163,17 +163,17 @@
visualizza bordo su scatto foto
Visualizza bordo sul display per indicare che si sta scattando una foto
Mantieni display attivo
- Se abilitato, il display non viene spento fintanto che l\'interfaccia principale di Open Camera è attiva
+ Se abilitato, il display non viene spento fintanto che l\'interfaccia principale di Camera è attiva
Forza luminosità massima
Imposta lo schermo al massimo della luminosità, invece di usare le impostazioni predefinite
-
Impostazioni Foto e Video
Impostazioni Foto…
Impostazioni Video…
- Impostazioni posizione…
+ Impostazioni localizzazione…
Risoluzione fotocamera
Qualità immagine
- Imposta la qualità dell\'immmagine per le foto da salvare (il valore consigliato è 90%%)\n%s
+ Imposta la qualità delle foto salvate in JPEG o WebP (il valore standard è 90%%). Non ha effetto sul formato PNG.
+\n%s
RAW
Salva dati località (Geotagging)
Salva le coordinate GPS nelle foto e nei video
@@ -200,10 +200,10 @@
Forza video a 4K UHD (disponibile solo su alcuni dispositivi)
Abilita la risoluzione 3840x2160 per i video dalla fotocamera posteriore - funziona solo se il tuo dispositivo è tecnicamente in grado di registrare in 4K. In ogni caso potrebbe non funzionare, provalo prima di usarlo sul campo.
Abilita stabilizzazione video
- La stabilizzazione video riduce i tremolii durante il movimento della videocamera sia per l\'anteprima che per i video registrati. Potrebbe non essere necessario se il tuo dispositivo dispone della funzione di stabilizzazione ottica dell\'immagine (OIS)
+ La stabilizzazione video riduce i tremolii durante il movimento della videocamera sia per l\'anteprima che per i video registrati. Potrebbe non essere necessario se il tuo dispositivo dispone della funzione di stabilizzazione ottica dell\'immagine (OIS).
Video bitrate
Imposta il bitrate approssimativo per i video (più alto significa migliore qualità, ma file più grandi; inoltre la registrazione del video potrebbe fallire se un certo bitrate non è supportato dal dispositivo)\n%s
- Video frame rate (approx)
+ Frame rate Video(circa)
Imposta il frame rate (FPS) per i video (può essere approssimativo e non è garantito raggiungerlo, inoltre la registrazione potrebbe fallire se il frame rate non è supportato). Controlla i video risultanti per capire quale frame rate è stata utilizzata. Nota che questa impostazione viene ignorata per i video in slow motion.\n%s
Durata massima dei video
La registrazione del video sarà interrotta ad una durata specifica\n%s
@@ -218,13 +218,12 @@
Sorgente audio
Il microfono da usare per la registrazione dell\'audio\n%s
Canali audio
- Specifica modalità mono o stereo per la registrazione audio (modalità stereo supportata solo su alcuni modelli)\n%s
+ Specifica modalità mono o stereo per la registrazione audio (modalità stereo supportata solo su alcuni modelli)
Flash durante la registrazione video
Se abilitato, il flash sarà acceso/spento quando si registra il video (può essere usato per capire a distanza se la telecamera sta ancora registrando)
-
Varie
Aiuto online
- Apre il sito web di Open Camera nel browser
+ Apre il sito web di Camera nel browser
Dona per supportare lo sviluppo
Se questa applicazione ti piace, considera la possibilità di fare una donazione. Puoi farlo comprando la mia \"app donazione\" - cliccando su questa opzione aprirai la pagina per la donazione. Grazie!
Usa le API Camera2
@@ -232,13 +231,11 @@
Informazioni
App e informazioni di debug
Reset impostazioni
- Reimposta tutti i settaggi di Open Camera ai valori predefiniti
- Sei sicuro di voler reimpostare tutti i settaggi di Open Camera ai valori predefiniti?
-
+ Reimposta tutti i settaggi di Camera ai valori predefiniti
+ Sei sicuro di voler reimpostare tutti i settaggi di Camera ai valori predefiniti?
Disponibile
Non disponibile
Copia negli appunti
-
Scatta foto
Galleria
Esposizione
@@ -247,11 +244,10 @@
Modalità flash
Passa a camera frontale
Passa a camera posteriore
- Passa alla modalità video
- Passa alla modalità foto
+ Passa in modalità video
+ Passa in modalità foto
Cancella ultima immagine
Condividi foto
-
Cartella superiore
Nuova cartella
Non puoi scrivere in questa cartella
@@ -259,108 +255,95 @@
Inserisci il nome della nuova cartella
Creazione della cartella fallita
Questa cartella esiste già
-
Seleziona posizione di salvataggio
Storage Access Framework annullato
- Impossibile salvare in questa cartella
-
+ Non posso salvare in questa cartella
Permesso utilizzo Microfono non disponibile
- Permesso utilizzo Posizione non disponibile
-
- Inizio registrazione video
- Fine registrazione video
-
+ Permesso utilizzo localizzazione non disponibile
+ Avvia registrazione video
+ Ferma registrazione video
Dimensione massima file
- MB
- GB
-
+ MB
+
+ GB
+
Inizio registrazione audio
Termina registrazione audio
- Comando vocale \"cheese\"
+ Comando vocale \"cheese\"
+
Emetti un forte rumore
-
Livello automatico ruota automaticamente le foto per raddrizzarle.\n\nCiò comporta che le immagini risulteranno di risoluzione leggermente più bassa (a causa della rotazione e del taglio che si sono resi necessari).
I file DNG contengono le informazioni complete (non compresse e senza alcuna rielaborazione) della fotocamera.\n\nAlcune app di galleria non sono in grado di riconoscere tale formato, che invece va utilizzato con app specifiche.\n\nLe opzioni di elaborazione come \"Timbro foto\" e \"Livello automatico\" si applicano unicamente alle immagini JPEG e simili, non al formato DNG.
La modalità HDR è utile per scatti con un\'ampia variabilità nella luminosità. Funziona scattando diverse foto ciascuna con esposizione differente, e assemblandole per creare l\'immagine finale.\n\nSi noti che tale modalità non è indicata per scene che includono movimenti veloci, e possono proporre una riproduzione dei colori meno accurata.\n\nGli scatti di foto in modalità HDR potrebbe risultare più lenta.
-
Non mostrare più
-
Modalità foto
- Std
+ Std
+
Standard
- HDR
- Expo {}
+ HDR
+
+ {} Esposizione
+
Bracketing (esposizione)
Scatto rapido
- NR
+ NR
+
Riduzione rumore
Timbro Foto
Salva tutte le immagini in modalità HDR
Se abilitata, quando si usa la modalità HDR, le tre foto con esposizione base verranno salvate, così come il risultato finale dell\'elaborazione HDR. Ciò renderà l\'attività di salvataggio più lenta, specialmente se sono attive anche opzioni come \"Timbro foto\" o \"Livello automatico\".
-
PERMESSO NON DISPONIBILE
Richiesto permesso
Il permesso di utilizzo della fotocamera è necessario per abilitare la fotocamera
- Per utilizzare il geotagging è richiesto il permesso di rilevamento della posizione (Android 11 or earlier: necessario anche per collegarsi a dispositivi di controllo Bluetooth LE)
-
+ Per utilizzare il geotagging (conservare dati su foto e video compresi timbri e sottotitoli) è richiesto il permesso a geolocalizzarti. Lo stesso permesso (su Android 11 o precedenti) è richiesto per collegare telecomandi Bluetooth LE.
Opzioni di debugging
Opzioni di debugging
Usa metodo flash alternativo
Abilita questa opzione se il tuo dispositivo mostra un comportamento anomalo del flash con le API Camera2
-
Bracketing (esposizione)
Numero di immagini per la modalità bracketing (nota anche come esposizione variata a forcella)\n%s
Termina bracketing
Quanti fermi si vogliono aggiungere/sottrarre per ottenere l\'immagine più/meno luminosa\n%s
-
Riduzione rumore su immagini originali
Determina se salvare le immagini originali in modalità riduzione del rumore. Potrebbe rallentare di molto il salvataggio delle foto.\n%s
-
Non salvare le immagini originali
Salva una singola immagine originale
Salva tutte le immagini originali (lento)
-
- s
-
+ s
+
Spazio insufficiente per registrare video
Video terminato\nIl livello della batteria è eccessivamente basso
Segnala batteria scarica
Interrompe la registrazione video se il livello della batteria è eccessivamente basso. Ciò aiuta a ridurre il rischio di avere un file video corrotto se il dispositivo dovesse spegnersi improvvisamente a causa della batteria scarica.
-
- Scuro
- Luminoso
+ Scuro
+
+ Luminoso
+
Velocità otturatore
-
Errore critico della fotocamera
-
Abilita raffica veloce HDR/expo
Permette acquisizione di scatti HDR/expo più veloce. Da disabilitare se il dispositivo presenta problemi nell\'acquisizione di foto in modalità HDR o Expo.
-
Fotocamera
Registra video
Selfie
-
Specchio camera frontale
Determina se riflettere a specchio le immagini usando la fotocamera frontale\n%s
-
Calibra livello angolo
- Questa opzione calibra l\'accelerometro del dispositivo, in modo che sia il livello automatico che le opzioni livello/angolo su schermo funzionino correttamente.
+ Questa scelta calibra l\'accelerometro del dispositivo, in modo che sia il livellamento automatico che le opzioni livello/angolo su schermo funzionino correttamente
Sistema il tuo dispositivo su un piano orizzontale in modo che sia perfettamente a livello (è indifferente se con orientamento verticale o orizzontale), e poi seleziona Calibra.\n\nPremi Reset se vuoi rimuovere la calibrazione dal dispotivo.\n\nPremi il bottone Indietro per annullare.
Calibra
Reset
Livello calibrato
Reset livello calibrazione
-
- DRO
-
+ DRO
+
Mostra linee inclinazione (pitch)
Visualizza le linee di inclinazione orizzontale
Visualizza le linee direzione bussola
Visualizza le linee di direzione della bussola
Sottotitoli video
Crea un file con i sottotitoli (.SRT) contenente data e ora; ed anche le informazioni GPS se i dati di posizione/direzione sono abilitati\n%s
-
Illimitata
3 secondi
5 secondi
@@ -385,36 +368,30 @@
30 minuti
45 minuti
1 ora
-
Mostra icona Scatta Foto
Mostra le icone Scatta Foto e Registra Video. Deseleziona se preferisci usare un altro metodo per scattare foto (ad es. se il tuo dispositivo ha un bottone specifico, o se vuoi usare i tasti volume per farlo).
-
Pausa video
Riprendi video
Pausa registrazione video
Ripresa registrazione video
-
Acquisizione…
-
- Fallita inizializzazione ascolto audio
- Fallita creazione immagine HDR
-
- Auto
+ Non sono riuscito a inizializzare l\'ascolto audio
+ Non sono riuscito a creare l\'immagine HDR
+ Automatico
Nuvoloso
Luce diurna
Fluorescente
- Incandescente
+ Incandescenza
Ombra
Crepuscolo
Caldo
Manuale
-
Azione
Codice a barre
Spiaggia
Lume di candela
- Auto
- Fuochi artificio
+ Automatico
+ Fuochi d\'artificio
Paesaggio
Notte
Ritratto notturno
@@ -425,7 +402,6 @@
Stabilizzatore
Tramonto
Teatro
-
Acqua
Lavagna nera
Mono
@@ -435,10 +411,8 @@
Seppia
Solarizza
Lavagna bianca
-
Novità:
Donazioni
-
volto
volti
@@ -447,29 +421,23 @@
in alto sullo schermo
alla base dello allo schermo
al centro
-
- Alta velocità
-
+ Alta velocità
+
Default
-
Tag EXIF personalizzati
Artista
Testo da inserire nei metadati della foto per il tag \"artista\" (solo JPEG). (Lasciare vuoto per eliminarlo.)
Copyright
Testo da inserire nei metadati della foto per il tag \"copyright\" (solo JPEG). (Lasciare vuoto per eliminarlo.)
-
Elaborazione…
-
No
Standard e DNG (RAW)
Solo DNG (RAW)
-
Default
- yyyy-mm-dd (ISO 8601)
- dd/mm/yyyy
- mm/dd/yyyy
+ aaaa-mm-gg (ISO 8601)
+ gg/mm/aaaa
+ mm/gg/aaaa
Nessuno
-
Numero di foto
2
3
@@ -481,7 +449,6 @@
12
15
20
-
Numero di foto
2
3
@@ -500,12 +467,10 @@
100
150
200
-
Velocità
Normale
Slow motion abilitato
Slow motion disabilitato
-
Flash spento
Flash auto
Flash acceso
@@ -514,26 +479,21 @@
Flash schermo Auto
Flash schermo On
Torcia schermo
-
Anti-banding
Algoritmi che evitano lo sfarfallio della luce.\n%s
Auto
50Hz
60Hz
Spento
-
Immagine fantasma
Sovrappone un\'immagine, per facilitare l\'allineamento.\n%s
Spento
Ultimo scatto
Immagine selezionata
-
Scelta file non disponibile su questo dispositivo, opzione non supportata
Impossibile aprire questa immagine
-
Consenti foto durante registrazione video
Permette lo scatto di foto durante la registrazione dei video. Da disabilitare in caso di problemi con la registrazione dei video quando l\'API Camera2 è attiva.
-
Profili immagini video
Imposta un profilo immagine normale oppure piatto (poco contrasto, molte informazioni) per la modalità video\n%s
Default
@@ -543,14 +503,12 @@
Log (Forte)
Log (Extra forte)
Profilo log
-
Videocamera
Microfono esterno (se presente)
Sorgente audio di default
Ottimizzata per chiamate vocali
Ottimizzata per riconoscimento vocale
Inalterata
-
Default
100kbps
200kbps
@@ -577,43 +535,34 @@
100Mbps
150Mbps
200Mbps
-
- no raffica
-
+ no raffica
+
Mostra indicatore livello audio
Determina se mostrare l\'indicatore del livello audio sullo schermo durante la registrazione video
-
- Focus {}
+ {} Focus
+
Focus bracketing
-
Distanza origine focus bracketing
Distanza destinazione focus bracketing
-
Aggiungi distanza infinita
-
Direzione bussola
La bussola del tuo dispositivo deve essere calibrata per migliorarne l\'accuratezza. Per farlo, muovi il tuo dispositivo seguendo una forma ad 8.\n\nAccuratezza attuale:
-
Non affidabile
Bassa
Media
Alta
Sconosciuta
-
Unità di distanza
Usata per l\'altitudine GPS nella marcatura delle foto e nei sottotitoli dei video\n%s
Metri
Piedi
- ft
-
+ ft
+
Mostra le ultime novità
Determina se visualizzare informazioni sulle ultime caratteristiche e migliorie quando l\'app viene aggiornata
-
Algoritmo modalità bordi
Algoritmo da usare per migliorare i bordi. Questa funzione migliora la nitidezza e i dettagli delle foto scattate. (Impostazione ignorata quando la modalità riduzione del rumore delle foto è attiva.)\n%s
-
Impostazioni di elaborazione…
-
Algoritmo di riduzione rumore
Algoritmo da usare per applicare la riduzione del rumore. Questa funzione tenta di migliorare la qualità delle foto rimuovendo il rumore eccessivo catturato durante lo scatto, specialmente in condizioni di oscurità. (Nota che non si tratta della modalità \"Riduzione rumore\" delle foto, infatti in quella modalità questa impostazione viene disattivata.)\n%s
Default
@@ -621,18 +570,16 @@
Minimo
Veloce
Alta qualità
-
Assistenza focus
Determina se ingrandire (zoom) quando si regola la distanza manuale di messa a fuoco\n%s
Spento
2x
4x
-
Aumenta o diminuisci compensazione esposizione
-
- Precedente
- Successivo
-
+ Precedente
+
+ Successivo
+
Spento
2x
3x
@@ -647,7 +594,6 @@
200x
500x
Illimitato
-
Nessun ritardo
0.5s
1s
@@ -666,8 +612,7 @@
30m
1h
2h
-
- Default dispositivo
+ Standard del dispositivo
100MB
200MB
300MB
@@ -676,9 +621,7 @@
2GB
5GB
9GB
-
Annullato focus bracketing
-
Nessuno
1 (1:1)
1.25 (5:4)
@@ -691,7 +634,6 @@
2.33 (21:9)
2.35 (47:20)
2.4 (12:5)
-
+3 (alta sensibilità)
+2
+1
@@ -699,115 +641,99 @@
-1
-2
-3 (bassa sensibilità)
-
Migliora contrasto HDR
Determina quando usare un algoritmo di contrasto per HDR. Può migliorare l\'aspetto nei casi in cui c\'è un intervallo dinamico molto elevato nella scena, e dà anche un \"aspetto HDR\" all\'immagine risultante.\n%s
Spento
Intelligente
Sempre
-
Formato video
Formati file e codec per video e audio\n%s
-
Default
MPEG4 H264
MPEG4 HEVC
3GPP
WebM (audio non supportato)
-
Gestione impostazioni
-
Salva impostazioni
- Salva tutte le impostazioni di Open Camera in un file
+ Salva tutte le impostazioni di Camera in un file
Nome per le impostazioni salvate
-
Ripristina impostazioni
Ripristina le impostazioni salvate in precedenza. Tutte le impostazioni correnti verranno sostituite con quelle salvate!
Questa opzione permette di scegliere un file di impostazioni precedentemente salvato. Attenzione, scegliendo un file tutte le impostazioni correnti verranno sostituite con quelle salvate!
-
Impostazioni salvate
Salvataggio impostazioni fallito
Ripristino impostazioni fallito
Scelta file non disponibile su questo dispositivo, opzione non supportata
-
Formato immagine
JPEG
WebP
PNG
-
Modo NR
Normale
Luce bassa
-
Interfaccia utente mancini
Interfaccia utente destrorsi
Icone in alto
-
Mostra icona riconoscimento volti
Determina se mostrare sullo schermo l\'icona del riconoscimento volti
- Abilita riconoscimento volti
- Disabilita riconoscimento volti
+ Abilita riconoscimento volti
+
+ Disabilita riconoscimento volti
+
Riconoscimento volti abilitato
Riconoscimento volti disabilitato
-
Mostra icona livello automatico
Determina se mostrare sullo schermo l\'icona per abilitare o disabilitare il livello automatico. Quanto il livello automatico è abilitato, le foto vengono ruotate in modo da essere automaticamente a livello con l\'orizzonte.
- Abilita livello automatico
- Disabilita livello automatico
-
+ Abilita livello automatico
+
+ Disabilita livello automatico
+
Mostra icona timbro foto
Determina se mostrare sullo schermo l\'icona per abilitare o disabilitare il timbro sulle foto
- Abilita timbro foto
- Disabilita timbro foto
+ Abilita timbro foto
+
+ Disabilita timbro foto
+
Timbro foto abilitato
Timbro foto disabilitato
-
Mostra icona timbro personalizzato
Determina se mostrare sullo schermo l\'icona per specificare il testo personalizzato da timbrare sulle foto
-
Mostra icona blocco bilanciamento
Determina se mostrare sullo schermo l\'icona per bloccare o sbloccare il bianciamento automatico del bianco
Blocca bilanciamento bianco
Sblocca bilanciamento bianco
Bilanciamento bianco bloccato
Bilanciamento bianco sbloccato
-
Mostra icona blocco esposizione
Determina se mostrare sullo schermo l\'icona per bloccare o sbloccare l\'esposizione
Sblocca esposizione
-
Modalità luce bassa: tenere ferma la fotocamera
-
- Pano
+ Pano
+
Panorama
-
Controllo remoto Bluetooth LE…
Abilita controllo remoto Bluetooth LE
Abilita dispositivi di controllo remoto Bluetooth LE (BLE)
Tipo di dispositivo remoto
-
BLE non supportato
Scansione dispositivi BLE
Bluetooth non supportato.
Dispositivo sconosciuto
Riduci luminosità schermo su disconnessione
- Suggerimento: imposta la luminosità di default al minimo prima di avviare Open Camera.
+ Suggerimento: imposta la luminosità di default al minimo prima di avviare Camera.
Usa Saltwater per il calcolo della profondità
Per gli alloggiamenti subacquei, improva l\'accuratezza se viene selezionato il tipo corretto di acqua.
Dispositivo remoto collegato
-
Usa indirizzi
Mostra l\'indirizzo se possibile, oltre alle coordinate GPS
Preferisci l\'indirizzo alle coordinate GPS
Non mostrare l\'indirizzo
-
Mostra icona salva dati posizione
Determina se mostrare sullo schermo l\'icona per abilitare o disabilitare i dati di posizione (geotagging)
Salva dati posizione
Smetti di salvare i dati posizione
-
Mostra un istogramma
Determina se mostrare sullo schermo un istogramma dei colori\n%s
Spento
@@ -816,101 +742,87 @@
Valore (Massimo)
Intensità (Medio)
Luminosità (Media di min-max)
-
Mostra strisce zebra
Se questa opzione è abilitata, le strisce zebra verranno mostrate sullo schermo mostrando dove l\'anteprima dell\'immagine è sovraesposta.\n%s
Spento
- 70%
- 80%
- 90%
- 93%
- 95%
- 97%
- 98%
- 99%
- 100%
-
+ 70%
+
+ 80%
+
+ 90%
+
+ 93%
+
+ 95%
+
+ 97%
+
+ 98%
+
+ 99%
+
+ 100%
+
Focus peaking
Se questa opzione è abilitata, verranno evidenziate le aree a fuoco (contorni). Serve principalmente per la messa a fuoco manuale, e può essere usato per aiutare a determinare quali zoni dell\'immagine sono a fuoco.\n%s
Spento
Acceso
Colore del focus peaking
Quale colore usare per evidenziare i bordi a fuoco\n%s
-
- Restanti
-
+ Restanti
+
Anteprima fotocamera…
-
Commuta flash
Mostra icona flash
Determina se mostrare su schermo l\'icona per commutare tra le opzioni del flash, invece di mostrare le opzioni sul menù popup. Nota che la torcia non è utilizzabile quando questa icona è attiva.
-
Consenti RAW per expo bracketing
Determina se l\'opzione RAW va anche applicata alla modalità expo bracketing per le foto (o alla modalità HDR quando \"Salva tutte le immagini in HDR\" è attivo). Se questa opzione è disattivata, solo i formati JPEG saranno salvati in questa modalità.
-
Consenti RAW per focus bracketing
Determina se l\'opzione RAW va anche applicata alla modalità focus bracketing per le foto. Se questa opzione è disattivata, solo i formati JPEG saranno salvati in questa modalità.
-
Commuta modalità RAW
Mostra icona RAW
- Determina se mostrare su schermo l\'icona per commutare tra le modalità RAW.
-
+ Se mostrare o no sullo schermo l\'icona per commutare tra le modalità RAW
Dispositivo remoto attuale:
Scansione
-
Testo ombreggiato
Testo semplice
Testo con sfondo ombreggiato
-
Salvataggio immagini…
-
Termina panorama
Annulla panorama
Panorama annullato
Creazione immagine panorama fallita
-
Auto-ritaglia panorama
In modalità panorama, determina se rimuovere i bordi storti\n%s
-
Per scattare un\'immagine panoramica, tieni il dispositivo in orientamento verticale e clicca per scattare una foto per avviare il panorama. Poi ruota il dispositivo a sinistra o a destra per spostare il cerchio bianco centrale sul punto blu. Dopo che ogni nuova immagine è stata catturata, continua a ruotare il dispositivo per coprire ogni nuovo punto blu che appare successivamente.\n\nClicca sul segno di spunta per salvare il panorama, o sull\'icona a croce per annullare.\n\Nota che le foto panoramiche possono richiedere tempo per essere elaborate e salvate.
-
Immagini originali panorama
Determina se salvare le immagini originali in modalità panorama. Nota che questo rallenterà il salvataggio delle foto panorama. Consente anche di salvare un file XML che può essere utile per segnalare problemi con la modalità panorama.\n%s
-
Non salvare le immagini originali
Salva le immagini originali
Salva le immagini originali più il debug XML
-
- ID
-
+ ID
+
Barra per cambiare la compensazione dell\'esposizione
-
Scegli il formato file da usare per salvare le foto. Questo verrà usato per la scelta \"standard\" (non RAW). Solo JPEG supporta il salvataggio dei metadati Exif. Nota che il formato PNG non è realmente lossless, ma viene convertito da una JPEG al 100%% di qualità.\n%s
-
API fotocamera
Scegli l\'API Camera2 per abilitare funzioni extra come la modalità manuale per esposizione, messa a fuoco, bilanciamento del bianco, e RAW (se supportato dal dispositivo). Cambiare l\'API provocherà un riavvio.\n%s
API originale della fotocamera
API Camera2
-
Scatta foto/video quando viene rilevato un rumore.
Quando è abilitato, usa il pulsante del microfono sullo schermo per avviare/interrompere l\'ascolto.
\n%s
-
Se possibile, ottieni indirizzi dalle posizioni GPS (per timbro foto e sottotitoli video).
Se abilitata, ciò richiede che il tuo dispositivo trasmetta i dati di posizione attraverso Internet a terze parti
per convertire le coordinate GPS in indirizzi. Vedi https://developer.android.com/reference/android/location/Geocoder .
Ciò non fornisce garanzie sulla disponibilità o sull\'accuratezza. Non è garantito che i risultati siano significativi o corretti.
\n%s
-
Tocca per mettere a fuoco e premi il pulsante blu della fotocamera per scattare foto.
\n\nPer disabilitare la massima luminosità dello schermo, vedi Impostazioni/Interfaccia schermo/\"Forza la massima luminosità\".
Per salvare su schede SD su Android 5+, vedi Impostazioni/Altri controlli fotocamera/\"Storage Access Framework\".
Per ulteriore aiuto, clicca su \"Aiuto online\" da Impostazioni.
-
Scegli dispositivo remoto
-
REC709
sRGB
Gamma
@@ -926,56 +838,93 @@
2.4
2.6
2.8
-
Spento
Riduci solo la luminosità dei bottoni di navigazione
Nascondi i bottoni di navigazione
Nascondi l\'interfaccia
Nascondi tutto
-
Opacità immagine fantasma
Il valore alfada usare per le immagini fantasma. Un valore più basso significa più trasparente, più alto significa più opaco.\n%s
-
Colore primo piano strisce zebra
Colore da usare per le strisce zebra in primo piano quando sono attive.\n%s
Colore sfondo strisce zebra
Colore da usare per le strisce zebra sullo sfondo quando sono attive.\n%s
-
Nero
Rosso
Arancione
Trasparente
Bianco
-
Fotocamera esterna
- Ultra-wide
-
+ Grandanolo
Passa alla fotocamera esterna
Commuta fotocamera
Commuta tra fotocamere multiple
Icona fotocamere multiple
Se abilitato, usa pulsanti separati per passare dalla fotocamera anteriore a quella posteriore e per passare dalla fotocamere multiple anteriori o posteriori. Se disabilitato, l\'icona \"Commuta fotocamera\" commuta ciclicamente tra le telecamere disponibili.
-
Mostra ID fotocamera
Visualizza sullo schermo il numero ID della fotocamera attualmente in uso
-
- Allow long press actions
- Whether to allow long press actions (e.g., long press on gallery to change save location).
-
+ Permetti long press actions
+ Se permettere o meno le long press actions (ad esempio, premi a lungo su Galleria per modificare dove salvare le foto).
Apertura
-
4K UHD
Bitrate
Frame rate
- Slow motion
-
+ Rallentatore
Salva imbardata, beccheggio e rollio
Salva imbardata, beccheggio e rollio del dispositivo nei commenti utente dei metadati Exif delle foto (solo formato JPEG)
-
Barra per cambiare il valore attuale di preferenza
-
Nessuno
Rumore forte
- Comando vocale: \"cheese\"
-
-
+ Comando vocale: \"cheese\"
+
+ Salta
+ Avanti
+ Indietro
+ Termini di servizio
+ Informazioni su Camera
+ Licenza
+ Codice sorgente
+ Autori
+ Camera è un fork di Camera
+ Versione build
+ Camera utilizza le icone Material Design di Google (https://developer.android.com/design/downloads/index.html , https://design.google.com/icons/ , https://github.com/google/material-design-icons/ , https://google.github.io/material-design-icons/) sotto la licenza Apache versione 2.0. Alcune icone includono modifiche. Tocca qui per il testo completo della licenza.
+ Icone Material Design di Google
+ Camera è © 2013-2019 Mark Harman, rilasciata sotto licenza GPL v3 o successiva. Tocca qui per il testo completo della licenza.
+ Camera
+ Licenze Open Source
+ Estensione: Bellezza / Ritocco viso
+ X-Bty
+ Estensione: Bokeh
+ X-Bokeh
+ Estensione: Notte
+ X-Night
+ Estensione: HDR
+ Estenzione: Auto
+ X-HDR
+ X-Auto
+ Dispositivo sconosciuto (il consenso alla connessione bluetooth non è disponibile)
+ Il consenso alla scansione/connessione Bluetooth è necessario per rilevare e connettersi ai dispositivi di controllo remoto Bluetooth LE.
+ Abilita la cattura fittizia per correggere HDR/expo
+ Prova ad attivarlo se il dispositivo ha problemi quando si scattano foto in modalità HDR o Expo (quando le immagini expo escono con le stesse esposizioni). Rilevante solo se è attivata anche l\'opzione HDR/expo veloce di cui sotto.
+ E\' richiesto il consenso all\'utilizzo del Microfono per registrare video con audio, così come anche per usare le scelte di \"controllo Audio\"
+ E\' richiesto il permesso di leggere/scrivere file per salvare i risultati come foto o video
+ LENTI
+ Per foto migliori, tieni ferma la fotocamera.
+ Rimuovi eccetto data/ora
+ Se rimuovere o no i metadati EXIF propri del dispositivo usato dalle foto JPEG. Non verranno rimossi i tag exif applicati da altre impostazioni che scrivono metadati EXIF (es. posizione/geotagging). Tutte le altre scelte sono indipendenti e sovrascriveranno questa impostazione. Non funziona su RAW/DNG e video.
+\n%s
+ Non rimuovere i dati EXIF del dispositivo
+ Rimuovi i dati EXIF del dispositivo
+ Rimuovi i dati EXIF del dispositivo
+ Esponenziale
+ Predefinito
+ Algoritmo da utilizzare per la mappatura dei toni nelle foto con modalità HDR
+\n%s
+ Mappatura dei toni HDR
+
+ IL TUO INTERRUTTORE DELLA PRIVACY DEVE ESSERE ATTIVATO
+ POICHÉ LA TELECAMERA NON È DISPONIBILE ;-)
+
+ PER FAVORE ATTENDI 5 SECONDI PER LA TUA TELECAMERA
+ PER CARICARLA, POICHÉ È STATA APPENA ATTIVATA
+
\ No newline at end of file
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index bcb5529b72fddce82b78f371de3b60160a2d60c2..41df686f58a70bf23de88ccffbe9444231fef746 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -1,24 +1,26 @@
-
- Open Camera
+ Camera
設定
ポップアップ設定
了解しました (この内容を再度表示しない)
-
- オン
- オフ
+ オン
+
+ オフ
+
- 保存場所を選択する:
- フォルダの履歴を消去する
+ 保存場所を選択してください:
+ フォルダーの履歴を消去
履歴を消去しますか?
- その他のフォルダを選択する
+ 他のフォルダーを選択してください
変更後の保存場所:
録画を停止しました
- 繰り返します
+ 繰り返します
+
カメラへの接続に失敗しました
ビデオファイルが壊れている可能性があります
- が無効です
+ が無効です
+
不明なエラーです、ビデオを停止します
サーバーが反応しません、ビデオを停止します
最大撮影時間に達しました
@@ -57,7 +59,6 @@
カラーエフェクト
シーンモード
ホワイトバランス
-
角度
方角
カメラが開けません。
@@ -68,9 +69,9 @@
空き
[固定:
スワイプで解除]
-
スタンプの貼り付けに失敗しました
- m
+ m
+
カメラエフェクト
傾き補正
@@ -89,19 +90,19 @@
設定すると端末の向きよりも設定された向きを優先して保存します\n%s
顔認識
フォーカスエリアの代わりに顔認識を利用します
-
カメラ制御
タイマー
タイマー音
タイマー撮影やインターバル撮影のカウントダウンで音を鳴らします
音声タイマー
タイマー撮影やインターバル撮影のカウントダウンで(残り1分から)音声を流します
- 連続撮影
+ 連続撮影
+
インターバル
カメラ制御の詳細設定…
- 画面タッチで撮影する
- 画面をタッチまたはダブルタップして写真を撮影します
- 撮影の後に一時停止する
+ 画面タッチで撮影
+ 画面をタッチまたはダブルタップすると、写真を撮影、または動画を録画します
+ 撮影の後に一時停止
一時停止した画面上で写真の共有もしくは削除ができます
シャッター音
撮影時に音を再生します
@@ -111,76 +112,78 @@
音声コントロール感度
音に対する感度の設定
保存場所
- 写真/ビデオを保存するフォルダを決めます
- 写真やビデオを保存する際にStorage Accessフレームワークを使用するかどうかを選択します。外付けのSDカードに保存する場合はこの設定が必要となります。
+ 写真または動画を保存するフォルダー
+ 写真やビデオを保存する際にStorage Accessフレームワークを使用するかどうかを選択。外付けのSDカードに保存する場合はこの設定を有効にすべきです。また、Android 10以上でDCIMの外側のフォルダーーに保存したい場合は、この設定を有効にする必要があります。
保存する写真の命名ルール
- 保存する写真のファイル名の手前につける内容を設定します
+ 保存する写真のファイル名の先頭に付ける文字列
保存するビデオの命名ルール
- 保存するビデオのファイル名の手前につける内容を設定します
+ 保存する動画のファイル名の先頭に付ける文字列
ファイル名に使用する時刻フォーマット
- ロック画面上でもカメラを表示する
- 有効にするとOpen Cameraがロック画面上でも表示されます(ギャラリーを既定のアプリにしているなど、ロックの解除が必要になる場合もあります)
+ ロック画面でカメラを表示
+ 有効にするとCameraがロック画面上でも表示されます(なお、設定やギャラリーなどにアクセスするにはロックを解除する必要があります)
起動時にオートフォーカスを行う
- Open Camera の起動時にオートフォーカスを行います。もし起動時にライトが点灯する問題が起こる場合は設定をオフにしてください。
- 録画中は画面を固定する
- 録画が停止しないように画面を固定します。固定は画面をスワイプすると解除されます。アプリをバックグラウンドに移すか画面を消灯しても録画は停止します。
+ Cameraの起動時にオートフォーカスを行うかどうかの設定。起動時にライトが点灯する問題が起こる場合は、設定をオフにしてください。
+ 録画中に画面を固定
+ 録画を誤って停止しないように画面を固定します。固定は画面をスワイプすると解除されます。アプリがバックグラウンドに移るか画面が消灯した場合でも録画は停止します。
プレビューを回転
プレビューを180度回転して表示します(写真/ビデオの保存には影響しません)\n%s
画面表示設定…
プレビューサイズ
ボタン配置
全画面表示モード
- ズーム倍率を表示する
+ ズーム倍率を表示
画面上にズーム倍率を表示します(ズームインする場合)
- ズームボタンを表示する
+ ズーム倍率のコントロールを表示
画面上にズーム制御の -/+ ボタンを表示します
- ズーム制御のスライダーを表示する
+ ズーム制御のスライダーを表示
画面上にズーム制御のスライダーを表示します
- ISOを表示する
- 画面上にISO感度を表示します。自動発光モードの場合は発光するかどうかも表示します。 (Camera2 APIが必要です)
- 空きメモリを表示する
+ ISOを表示
+ 画面上にISO感度を表示します(Camera2 APIが必要です)。
+ 空きメモリーを表示
画面上に空きメモリを表示します
- 角度を表示する
+ 角度を表示
画面上に角度を表示します
- 角度を線で表示する
+ 角度を線で表示
画面上に線を表示します
角度のハイライトカラー
カメラがほぼ水平になった時のハイライトカラーを指定します
- 方角を表示する
+ 方角を表示
画面上に方角を表示します
- 時間を表示する
+ 時間を表示
画面上に現在の時間を表示します
- 電池残量を表示する
+ 電池残量を表示
画面上に電池残量を表示します
- グリッドを表示する
- グリッド
- クロップを表示する
- 画面上に切り取り用の線を表示します - 異なる比率に加工する場合に便利です。使用にはWYSIWYGでの写真モード、もしくはビデオモードを必要とします。\n%s
- トーストを表示する
+ グリッドを表示
+ グリッド
+
+ クロップ用ガイドを表示
+ 画面上に切り取り用の線を表示します - 異なる比率に加工する場合に便利です。使用にはWYSIWYGでの写真モード、もしくはビデオモードが必要となります。
+\n%s
+ 画面上にメッセージを表示
画面上のメッセージをトースト形式で表示します
- サムネイルをアニメにする
+ サムネイルを動画で表示
撮影時のサムネイルをアニメにして表示します
- 写真撮影中に枠線を表示する
+ 写真撮影中に枠線を表示
写真の撮影中に枠線を表示します
- 表示を維持する
- 有効にすると使用している間は画面が消えなくなります
- 明るさを常に最大にする
+ 画面の表示を維持
+ 有効にすると、Cameraを使用している間は画面が消灯しなくなります
+ 明るさを常に最大に設定
画面の明るさを常に最大にします
-
写真とビデオの設定…
写真の設定…
ビデオの設定…
位置情報の設定…
写真の解像度
写真の品質
- JPEG形式とWebP形式の保存品質を設定します(初期値は90%%)。PNG形式には影響しません。\n%s
+ JPEG形式とWebP形式の保存品質を設定します(初期値は90%%)。PNG形式には影響しません。\n%s
+
RAW
- 位置情報を使用する
+ 位置情報を使用
写真/ビデオにジオタグを埋め込みます(写真の場合、JPEGまたはDNGの場合のみ埋め込み可能)
- 方角情報を使用する
+ 方角情報を使用
写真にコンパスを埋め込みます(JPEG形式のみ)
- 位置情報を要求する
- 有効にすると位置情報を取得可能な場合のみ写真/ビデオの撮影が動作します
+ 位置情報を要求
+ 有効にすると、位置情報を取得可能な場合のみ写真または動画を撮影できます
スタンプを貼り付ける
写真に日付と時刻を貼り付けます。GPSが有効であれば位置情報も埋め込みます。\n%s
日付の形式
@@ -200,7 +203,8 @@
手ぶれ補正を有効にする
ビデオ撮影時の手ぶれ補正を設定します
ビデオのビットレート(目安)
- ビデオのビットレートを設定します(設定を高くすると品質は良くなりますが、より多くの保存スペースが必要になります。サポートしていないレートを設定すると録画に失敗する事があります)\n%s
+ ビデオのビットレートを設定(設定を高くすると品質は良くなりますが、より多くの保存スペースが必要になります。サポートしていないレートを設定すると録画に失敗する事があります)
+\n%s
ビデオのフレームレート
ビデオのフレームレート(FPS)を設定します(あくまで目安のため、保証はされません。サポートしていないレートを設定すると録画に失敗する事があります。)\n%s
ビデオの最大撮影時間
@@ -216,142 +220,132 @@
オーディオソース
録音に使用するマイク\n%s
オーディオチャンネル
- モノラルもしくはステレオを指定します (ステレオはサポートしている端末でのみ有効です)\n%s
+ モノラルもしくはステレオを指定します (ステレオはサポートしている端末でのみ有効です)
録画中にライトを点滅する
有効にすると撮影中にライトが点滅します (撮影中である事を相手に伝えることができます)
-
その他の内容
オンラインヘルプ
- Open Camera のWEBサイトをブラウザで開きます
+ Camera のWEBサイトをブラウザで開きます
サポートのために寄付をする
このアプリが気に入りましたら寄付をお願いします。この項目を押すと寄付への窓口が開きます。寄付権を購入する事で寄付ができます。寄付してくれたらありがとう!
Camera2 APIを使う
有効にするとCamera2 APIを使用します。この設定は試験的に提供しています (再起動が必要です)
このアプリについて
アプリとデバッグの情報を表示します
- 設定をリセットする
- Open Cameraの設定をすべてリセットします
- 本当にすべての設定をリセットしますか?
-
+ 設定をリセット
+ Cameraの設定を全てリセット
+ 本当に全ての設定をリセットしますか?
利用可能
利用不可
- クリップボードにコピーする
-
- 写真を撮影する
+ クリップボードにコピー
+ 写真を撮影
ギャラリーを開く
- 露出を設定する
- 露出を固定する
+ 露出を設定
+ 露出を固定
フォーカス切替
フラッシュ切替
フロントカメラ切替
リアカメラ切替
ビデオモードに切り替える
写真モードに切り替える
- さっきの写真を削除する
- この写真を共有する
-
- 親フォルダ
- 新規フォルダを作る
- このフォルダは使えません
- フォルダにアクセスできません
- 新規フォルダ名
- フォルダが作れません
- 存在しているフォルダです
-
- 保存先を選択する
+ 直近の写真を削除
+ 写真を共有
+ 親フォルダー
+ 新規フォルダー
+ このフォルダーは使えません
+ フォルダーにアクセスできません
+ 新規フォルダー名
+ フォルダーが作れません
+ フォルダーは既に存在しています
+ 保存先を選択してください
ストレージへのアクセスがキャンセルされました
- このフォルダには保存できません
-
+ このフォルダーには保存できません
マイクの使用が許可されていません
位置情報の使用が許可されていません
-
- ビデオ撮影を開始する
- ビデオ撮影を停止する
-
- MB
- GB
-
- 音声コントロールのリスニングを開始する
- 音声コントロールのリスニングを停止する
- \"チーズ\"と言ってください
+ 動画撮影を開始
+ 動画撮影を停止
+ MB
+
+ GB
+
+
+ 音声コントロールのリスニングを開始
+ 音声コントロールのリスニングを停止
+ \"チーズ\"と言ってください
+
何か大きな音を立ててください
-
傾き補正は写真が水平になるよう自動的に角度を調整します。\n\n注意:これには回転と切り抜きの処理が必要になるため、解像度と画角(写る範囲)が小さくなります。
HDR(ハイダイナミックレンジ)は被写体の輝度差が大きな場面で役立ちます。異なる露出で複数の撮影を行い、それらを合成して画像を生成します。\n\n注意:HDRは動きの速い場面には適さないため、色が正しく表現されない可能性があります。\n\nHDRモードは通常の撮影と比べて時間がかかります。
-
再度表示しない
-
撮影モード
- 標準
+ 標準
+
標準
- HDR
- 露出BKT
+ HDR
+
+ 露出BKT
+
露出ブラケット
ハイスピード連写
- NR
+ NR
+
ノイズリダクション撮影
スタンプ
- HDR撮影時すべての写真を保存する
+ 全ての写真をHDRモードで保存
これを有効にするとHDR撮影時に3つの異なる露出の写真がHDR写真と共に保存されます。注意:スタンプや傾き補正のようなオプションを使用している場合は保存が遅くなります。
-
カメラの権限がありません
権限が必要です
カメラを有効にするにはカメラの権限が必要です
音声付き動画の撮影と音声コントロールを使用するにはマイクの権限が必要です
ジオタギング(位置情報を写真やビデオに付加する)には位置情報の権限が必要です。
位置情報の権限はBluetooth LE リモートコントロールデバイスの接続にも必要です (Android 11 or earlier)。
-
デバッグ用オプション
デバッグ用オプション
代替のフラッシュ方式を使用
Camera2 API 使用中に端末のフラッシュの挙動が不安定な場合は有効にしてください。
-
露出ブラケット
露出ブラケットモードで撮影する枚数を指定します。\n%s
露出ブラケット幅
変化させる露出の幅を指定します\n%s
-
ノイズリダクション 元画像保存
ノイズリダクション撮影時、元の画像を保存します。注意:写真の保存には時間がかかります。\n%s
-
元画像を保存しない
- 単一の元画像を保存する
- 全ての元画像を保存する(遅い)
-
- 秒
+ 単一の元画像を保存
+ 全ての元画像を保存(遅い)
+ 秒
+
ビデオを記録するための充分な空きスペースがありません
ビデオ撮影を停止しました\nバッテリー残量が非常に少なくなりました
バッテリー残量チェック
バッテリー残量が非常に少なくなった場合に録画を停止します。これにより、端末の電源が落ちてファイルが破損するリスクを軽減します。
-
高速なHDR/露出BKT撮影
高速なHDR/露出ブラケット撮影を行います。 もしHDR/露出ブラケット撮影で問題が起こる場合はこの設定を無効にしてください。
-
ビデオ撮影
セルフィー
-
フロントカメラを反転
フロントカメラ撮影時に左右反転した画像を保存します。\n%s
-
加速度センサーの校正
このオプションは端末の加速度センサーを校正します。これにより傾き補正と角度表示が正確に動作するようになります。
- 端末を縦向きまたは横向きに平らな場所へ置いて水平になった状態で校正を選択します。\n\n設定を初期値に戻すにはリセットを選択します。\n\nキャンセルするには戻るボタンを押します。
+ 端末を縦向きまたは横向きに平らな場所へ置いて水平になった状態で校正を選択します。
+\n
+\n設定を初期値に戻すにはリセットを選択してください。
+\n
+\nキャンセルするには戻るボタンを押してください。
校正
リセット
加速度センサーを校正しました
加速度センサーを初期値に戻しました
+ DRO
+
- DRO
-
- 仰角/俯角を線で表示する
+ 仰角/俯角を線で表示
仰角/俯角を水平な線で表示します
- 方角を線で表示する
+ 方角を線で表示
方角を線で表示します
ビデオサブタイトル
日付情報と時刻情報、もしGPSが有効であればGPS情報も格納されたサブタイトル(.SRT)が作成されます。\n%s
-
制限なし
3秒
5秒
@@ -376,15 +370,11 @@
30分
45分
1時間
-
- シャッターボタンを表示する
- 撮影と録画のボタンを表示します。他の方法で撮影したい場合はチェックを外します(シャッター専用ボタンが付いている、音量ボタンを使用するなど)
-
- 撮影中…
-
+ シャッターボタンを表示
+ 撮影と録画のボタンを表示。他の方法(シャッター用ボタンが付いている場合、音量ボタンを使用するなど)で撮影したい場合はチェックを外してください。
+ 撮影しています…
リスニングの初期化に失敗しました
HDR画像の作成に失敗しました
-
オート
曇り
太陽光
@@ -394,7 +384,6 @@
トワイライト
温白色
マニュアル
-
アクション
バーコード
砂浜
@@ -410,7 +399,6 @@
スポーツ
夕焼け
シアター
-
水中
黒板
モノクロ
@@ -420,10 +408,8 @@
セピア
ソラリゼーション
ホワイトボード
-
新着情報:
寄付
-
人の顔
人の顔
@@ -432,23 +418,18 @@
が画面の上部にあります
が画面の下部にあります
が画面の中央にあります
-
デフォルト
-
- カスタムEXIFタグ
+ ユーザー定義のEXIFタグ
アーティスト
EXIFデータ内の\"Artist\"タグに記録されます。(JPEG形式のみ)(使用しない場合は空にします)
著作権表記
EXIFデータ内の\"Copyright\"タグに記録されます。(JPEG形式のみ)(使用しない場合は空にします)
-
処理中…あと
-
デフォルト
年-月-日
日/月/年
月/日/年
なし
-
HS撮影枚数
2枚
3枚
@@ -460,7 +441,6 @@
12枚
15枚
20枚
-
BKT撮影枚数
2枚
3枚
@@ -479,10 +459,8 @@
100枚
150枚
200枚
-
タイムラプス
なし
-
発光禁止
自動発光
強制発光
@@ -491,26 +469,21 @@
画面発光 自動
画面発光 オン
画面発光 常時
-
フリッカー軽減
照明器具のフリッカー(ちらつき)を軽減します。\n%s
自動
50Hz(東日本)
60Hz(西日本)
オフ
-
ゴーストを表示
撮影の位置合わせを容易にするために画像を重ねて表示します。\n%s
表示しない
最後に撮った写真を使用
選択された画像を使用
-
この端末にはファイル選択ダイアログが無いため、ゴーストの表示には非対応です
この画像は開けません
-
ビデオ撮影中の写真撮影
ビデオ撮影中の写真撮影を許可します。もし端末の Camera2 API の録画が不安定な場合はこの設定を無効にしてください。
-
ビデオのフラットプロファイル(Log)
ビデオのフラットプロファイル(Log)を有効にします\n%s
オフ
@@ -519,14 +492,12 @@
中
強
最強
-
ビデオカメラ
外部マイク(接続されている場合)
デフォルトのオーディオソース
通話用に最適化
音声認識用に最適化
音声処理を行わない
-
デフォルト
100kbps
200kbps
@@ -553,35 +524,29 @@
100Mbps
150Mbps
200Mbps
-
- オーディオレベルを表示する
+ オーディオレベルを表示
動画撮影中にオーディオレベルを表示します
-
- フォーカスBKT
+ フォーカスBKT
+
フォーカスブラケット
-
フォーカスブラケット 手前側距離
フォーカスブラケット 奥側距離
-
無限遠を追加
-
コンパスの向き
端末のコンパス精度を改善するためにキャリブレーションが必要です。これは端末を8の字に動かすことで実行できます。\n\n現在の精度:
-
距離の単位
スタンプとビデオサブタイトルのGPS高度に使用されます。\n%s
メートル
フィート
- ft
-
- お知らせを表示する
- このアプリが更新された時に新機能や改良点のお知らせを表示する
+ ft
+
+ お知らせを表示
+ このアプリが更新された時に新機能や改良点のお知らせを表示
輪郭強調アルゴリズム
- カメラが輪郭強調に使用するアルゴリズムを選択します。輪郭強調は写真の精細さを向上させます。(この設定はNR撮影時は無視されます)\n%s
-
+ カメラが輪郭強調に使用するアルゴリズムを選択。輪郭強調は写真の精細さを向上させます。(この設定はNR撮影時は無視されます)
+\n%s
プロセッシング設定…
-
ノイズリダクションアルゴリズム
カメラがノイズリダクションに使用するアルゴリズムを選択します。ノイズリダクションは特に暗い場所での撮影時に発生する多くのノイズを除去することで写真の品質を向上させます。(これはNR撮影モードとは独立しています。この設定はNR撮影モードでは無視されます。)\n%s
デフォルト
@@ -589,15 +554,15 @@
最小限
高速
高品質
-
フォーカス補助
マニュアルフォーカス操作中に画面を拡大表示します\n%s
オフ
2倍
4倍
-
- 前の値に変更
- 次の値に変更
+ 前の値に変更
+
+ 次の値に変更
+
なし
2枚
@@ -613,7 +578,6 @@
200枚
500枚
無制限
-
なし
0.5秒
1秒
@@ -632,7 +596,6 @@
30分
1時間
2時間
-
端末のデフォルト
100MB
200MB
@@ -642,7 +605,6 @@
2GB
5GB
9GB
-
なし
1 (1:1)
1.25 (5:4)
@@ -655,7 +617,6 @@
2.33 (21:9)
2.35 (47:20)
2.4 (12:5)
-
+3 (高感度)
+2
+1
@@ -663,113 +624,98 @@
-1
-2
-3 (低感度)
-
HDRコントラスト強調
HDR撮影時にコントラスト強調アルゴリズムを使用します。大きな輝度差があるようなシーンでの見た目を改善し、いわゆる「HDRルック」な写真が撮影されます。\n%s
オフ
スマート
常時
-
ビデオの保存形式
ビデオとオーディオの形式\n%s
-
デフォルト
MPEG4 H264
MPEG4 HEVC
3GPP
WebM (オーディオには非対応)
-
設定マネージャー
-
設定を保存
- Open Camera のすべての設定をファイルに保存します
+ Camera のすべての設定をファイルに保存します
保存する設定の名前
-
設定を復元
以前保存した設定を復元します。この操作を行うと現在の全ての設定が上書きされます!
このオプションは以前保存した設定ファイルのうち1つを選択できます。復元するファイルを選択すると現在の設定は全て上書きされます!
-
設定を保存しました
設定の保存に失敗しました
設定の復元に失敗しました
-
写真の保存形式
JPEG
WebP
PNG
-
NRモード
標準
ローライト
-
左利き用
右利き用
画面上部 (縦表示時)
-
- 顔認識アイコンを表示する
+ 顔認識アイコンを表示
顔認識のオンオフを切り替えるアイコンを表示します
- 顔認識を有効にする
- 顔認識を無効にする
- 顔認識オン
- 顔認識オフ
-
- 傾き補正アイコンを表示する
- 傾き補正のオンオフを切り替えるアイコンを表示します。傾き補正を有効にすると写真は水平になるよう自動的に補正されます。
- 傾き補正オン
- 傾き補正オフ
-
- スタンプアイコンを表示する
+ 顔認識を有効にする
+
+ 顔認識を無効にする
+
+ 顔認識が有効です
+ 顔認識が無効です
+ 傾き補正アイコンを表示
+ 傾き補正のオンオフを切り替えるアイコンを表示。傾き補正を有効にすると写真は水平になるよう自動的に補正されます。
+ 傾き補正オン
+
+ 傾き補正オフ
+
+
+ スタンプアイコンを表示
スタンプのオンオフを切り替えるアイコンを表示します
- スタンプを有効にする
- スタンプを無効にする
+ スタンプを有効にする
+
+ スタンプを無効にする
+
スタンプ オン
スタンプ オフ
-
- カスタムテキストスタンプアイコンを表示する
- カスタムテキストスタンプを入力するためのアイコンを表示します
-
- ホワイトバランス固定アイコンを表示する
+ ユーザー定義のテキストスタンプアイコンを表示
+ ユーザー定義のテキストスタンプを入力するアイコンを表示するか否かについての設定
+ ホワイトバランス固定アイコンを表示
ホワイトバランスを固定/固定解除するアイコンを表示します
- ホワイトバランスを固定する
- ホワイトバランスの固定を解除する
+ ホワイトバランスを固定
+ ホワイトバランスの固定を解除
ホワイトバランスを固定しました
ホワイトバランスの固定を解除しました
-
- 露出固定アイコンを表示する
- 露出を固定/固定解除するアイコンを表示します
- 露出の固定を解除する
-
+ 露出固定アイコンを表示
+ 露出を固定/固定解除するアイコンを表示
+ 露出の固定を解除
ローライトモード: 端末をしっかりと押さえてください
-
- パノラマ
+ パノラマ
+
パノラマ
-
Bluetooth LE リモートコントロール…
Bluetooth LE リモートコントロールを有効にする
Bluetooth LE (BLE) リモートコントロールデバイスを有効にする
リモートデバイスタイプ
-
BLE をサポートしていません。
BLE デバイススキャン
Bluetooth をサポートしていません。
不明なデバイス
接続先から切断された場合は画面を暗くする
- ヒント: Open Camera の起動時にデフォルトの輝度を最小輝度に設定します。
- 深度計算のために海水を使用する
+ ヒント: Camera の起動時にデフォルトの輝度を最小輝度に設定します。
+ 深度計算のために海水を使用
水中ハウジングの場合、正しい水のタイプを選択すると精度が向上します。
接続されています
-
住所の使用
- もし可能であればGPS座標だけでなく住所も表示する。
- 住所を優先して表示する(取得できない場合はGPS座標)
+ GPS座標に加えて、可能であれば住所も表示
+ 住所を優先して表示(取得できない場合はGPS座標を使用)
住所を表示しない
-
- 位置情報記録アイコンを表示する
+ 位置情報記録アイコンを表示
位置情報記録のオンオフを切り替えるアイコンを表示します(ジオタギング)
- 位置情報を記録する
+ 位置情報を記録
位置情報を記録しない
-
ヒストグラムを表示
色のヒストグラムを表示します。\n%s
オフ
@@ -778,14 +724,17 @@
Value(RGBのうち最大値)
Intensity(RGBの平均)
Lightness(RGBのうち最大値と最小値の平均)
-
ゼブラ模様を表示
このオプションを有効にすると、露出オーバーになっている部分に縞模様が表示されます。\n%s
Off
- 70%
- 80%
- 90%
- 100%
+ 70%
+
+ 80%
+
+ 90%
+
+ 100%
+
フォーカスピーキング
このオプションを有効にするとピントの合った輪郭部分がハイライト表示されます。 これは主にマニュアルフォーカス時どこにピントが合っているのか判断するのに役立ちます。\n%s
@@ -793,74 +742,68 @@
オン
フォーカスピーキングの色
ピントの合った輪郭部分のハイライト色を設定します\n%s
-
- 枚
+ 枚
+
プレビュー画面設定…
-
フラッシュ切替
- フラッシュアイコンを表示する
+ フラッシュアイコンを表示
フラッシュの切り替えをするボタンをポップアップメニューの代わりに表示します
-
現在の接続先:
スキャン
-
文字を縁取りする
普通の文字
+ ビルドバージョン
+ CameraはCameraのフォークです
+ 作者
+ ソースコード
+ 免許
+ カメラ情報
+ 利用規約
文字の背景を少し暗くする
-
- パノラマ撮影を終了する
- パノラマ撮影をキャンセルする
-
+ パノラマ撮影を終了
+ パノラマ撮影をキャンセル
パノラマ 自動切り抜き
パノラマ撮影時、波打っている端の部分を切り落とします\n%s
-
- パノラマ撮影をする場合、端末を縦に構えて撮影ボタンを押します。そして白い円が青い点と重なるように端末を左または右に動かします。新しく撮影されるたび青い点と重なるよう端末を回転させ続けます。\n\n保存するにはチェックマーク、キャンセルするには×マークを押します。\n\n注意:パノラマ撮影は処理と保存に時間がかかります。
-
+ パノラマ撮影をする場合、端末を縦に構えて撮影ボタンを押してください。そして白い円が青い点と重なるように端末を左または右に動かし、新しく撮影されるたび青い点と重なるよう端末を回転させ続けてください。
+\n
+\n保存するにはチェックマーク、キャンセルするには×マークを押してください。
+\n
+\n注意:パノラマ撮影は処理と保存に時間がかかります。
パノラマ 元画像保存
パノラマ撮影時、元の画像を保存します。注意:パノラマ写真の保存には時間がかかります。問題を報告するのに役立つXMLファイルを保存することもできます。\n%s
-
元画像を保存しない
- 元画像を保存する
- 元画像とデバッグ用XMLを保存する
-
- ID
+ 元画像を保存
+ 元画像とデバッグ用XMLを保存
+ ID
+
露出補正値変更
-
写真を保存する形式を指定します。これはRAW以外の写真に適用されます。注意:ここで指定可能なPNG形式は品質設定100%%のJPEGから変換されたもので、本当の意味で可逆ではありません。\n%s
-
カメラ用API
Camera2 API を使用すると、露出、フォーカス、ホワイトバランス、RAW(対応している場合)が利用可能になります。APIを変更するとアプリは再起動します。\n%s
従来のカメラ用API
Camera2 API
-
音に反応して撮影/録音します。
この機能をオンにした場合、画面上に表示されるマイクボタンを使用してリスニングをスタート/ストップします。
\n%s
-
もし可能であれば、GPS座標と一緒に住所もスタンプします。
注意:住所の使用が有効になっている場合、GPS座標から住所への変換をするため端末の位置情報を含むリクエストが第三者へ送信されます。
詳しくはこちら https://developer.android.com/reference/android/location/Geocoder
この機能は、可用性または正確性を保証するものではありません。 結果は最良の推測であり、意味のあるものや正しいものであるとは限りません。
\n%s
-
- フォーカスするには画面をタッチ、そして写真を撮るには青いカメラボタンを押します。
- \n\n画面の輝度が最大になるのを無効にする場合は、[設定]->[画面表示設定]->[明るさを常に最大にする]をオフにします。
- Android5以降の端末でSDカードに保存するには、[設定]->[Storage Access Framework]を設定します。
- 詳しくは、[設定]->[オンラインヘルプ]をご覧ください。
-
-
+ フォーカスするには画面をタッチして、写真を撮るには青いカメラボタンを押してください。
+\n
+\n画面の輝度が最大になるのを無効にする場合は、[設定]->[画面表示設定]->[明るさを常に最大にする]をオフにしてください。 Android5以降の端末でSDカードに保存するには、[設定]->[Storage Access Framework]を設定してください。 詳しくは、[設定]->[オンラインヘルプ]をご覧ください。
リモートデバイスの選択
-
オフ
スクリーンボタンのみ隠す
GUIを隠す
すべてを隠す
-
なし
音に反応
- 音声コマンド: \"チーズ\"
-
-
+ 音声コマンド: \"チーズ\"
+
+ファイルの最大サイズ
+
\ No newline at end of file
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index 2352d116c1d052a50ede0654e8cc8f05f3e7c067..c1ed9df5f6593b012275418bd80051c36112daa5 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -329,6 +329,14 @@
왼손잡이 사용자 인터페이스
오른손잡이 사용자 인터페이스
+ About
+ 빌드 버전
+ Camera에서 카메라 포크
+ 저자
+ 소스 코드
+ 라이센스
+ 카메라 정보
+ 서비스 약관
끄기
화면상의 가상 탐색 버튼만 숨기기
diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml
index 80bd7e8008c678a2293157830e16ddf1a8bdc48b..b0322a9325a0fae551f05f5f16c3cde883ecfcb3 100644
--- a/app/src/main/res/values-nb/strings.xml
+++ b/app/src/main/res/values-nb/strings.xml
@@ -1,178 +1,184 @@
-
- Open Camera
+ Kamera
+
Innstillinger
- Oppsprettsinnstillinger
+ Innstillinger for dialogboks
OK (Denne meldingen vil ikke bli vist igjen)
-
- På
- Av
-
- Velg lagringsplasseringen
+ På
+
+ Av
+
+ Velg lagringsplass:
Slett mappehistorikken
Vil du slette mappehistorikken?
Velg en annen mappe
- Endret lagreplasseringen til:
- Avsluttet videoopptaket.
- omspillinger igjen
- Klarte ikke å koble til kameraet igjen.
- En feil har oppstått. Videofilen din kan være korrumpert.
- støttes ikke på enheten din.
- Ukjent feil, videoen har stoppet.
- Tjeneren har kollapset, videoen har stoppet.
- Videoen har nådd maksvarigheten.
- Videoen har nådd maksfilstørrelsen.
+ Endret lagringsplass til:
+ Avsluttet videoopptak
+ omspillinger igjen
+
+ Klarte ikke å koble til kameraet igjen
+ Feil, videofilen kan være ødelagt
+ støttes ikke på enheten din
+
+ Ukjent feil, videoen har stoppet
+ Tjeneren har kollapset, videoen har stoppet
+ Videoen har nådd maks varighet
+ Videoen har nådd maksimal filstørrelse
Eksponeringskompensasjon
- bilder i sekundet
- Fokusdistanse
+ bilder per sekund
+ Fokusavstand
Uendelig
Frontkamera
Bakkamera
Foto
Video
- Eksponeringen er låst
- Eksponeringen er låst opp
- Nedtellingen er avbrutt.
- Avbrøt seriefotograferingsmodusen
- Startet nedtelling
- Klarte ikke å lagre videofilen.
- Klarte ikke å ta opp video.
- Opptak av video har begynt.
+ Eksponering låst
+ Eksponering ulåst
+ Timeren ble avbrutt
+ Seriefotograferingsmodus ble avbrutt
+ Timeren ble startet
+ Kunne ikke lagre videofil
+ Kunne ikke ta opp video
+ Opptak av video har begynt
Beklager
- Klarte ikke å lagre bildet.
- Klarte ikke å lagre RAW-bildet.
- Klarte ikke å auto-stabilisere.
- Klarte ikke å starte kameraforhåndsvisningen.
+ Kunne ikke lagre bilde
+ Kunne ikke lagre RAW-bilde
+ Kunne ikke nivåjustere automatisk
+ Kunne ikke starte kameraforhåndsvisning
Tar bilde
- Klarte ikke å ta et bilde.
- GPS-posisjonen er ikke tilgjengelig.
+ Kunne ikke ta bilde
+ GPS-lokasjon er ikke tilgjengelig
Bildet ble slettet
- Ingen galleriapper er tilgjengelige
- Skjermen er låst.\nSveip skjermen for å låse opp.
- Låst opp.
- Beklager, men auto-vater støttes\nikke på denne enheten.
- Lyd er deaktivert.
+ Ingen applikasjon for bildegalleri er tilgjengelig
+ Skjermen er låst
+\nsveip over skjermen for å låse opp
+ Låst opp
+ Beklager, automatisk nivåjustering støttes ikke
+\npå denne enheten
+ Lyd er deaktivert
Maks varighet
- Fargeffekt
+ Fargeeffekt
Scenemodus
Hvitbalanse
-
Vinkel
Retning
KLARTE IKKE Å ÅPNE KAMERAET.
ER KANSKJE KAMERAET I BRUK
- AV EN ANNEN APP?
+ AV EN ANNEN APPLIKASJON?
ISO
- Forstørr
- ledig
+ Zoom
+ Ledig
[LÅST:
Sveip for å låse opp]
-
- Klarte ikke å stemple infoen på bildet.
- m
-
+ Kunne ikke stemple informasjon til bildet
+ m
+
Kameraeffekter
- Auto-stabiliser
- Bilder vil bli rotert slik at automatisk er stabilisert (Kun bilder) (Tregere å ta bilder, og kan mislykkes på enheter med for lite lagring).
- Legg til en fargeeffekt
- Benytter den valgte fargeeffekten for bildet.
+ Automatisk nivåjustering
+ Bildene vil bli rotert slik at de automatisk er i vater (kun bilder) (tregere å ta bilder, og kan mislykkes på enheter med for lite minne)
+ Bruk en fargeeffekt
+ Bruker den valgte fargeeffekten på bildet
Bruk en scenemodus
- Optimaliser bildet til forskjellige scener.
- Bestem hvitbalansen
- Velg en innstilling for å justere hvitbalansen.
- Velg ISO-en
- En høyere verdi = mer sensitiv for lys. (Kan kanskje ikke virke på noen enheter)
- Bestem eksponeringskompensasjonen.
- Sett den til 0 for å bruke standard-eksponeringskompensasjonen.
- Lås foto-/video-roteringen
- Hvis dette er valgt, vil enhetens rotering bli ignorert, og bildets/videoens rotering vil samsvare med den bestemte roteringen\n%s
- Ansiktsoppdagelse
- Bruk ansikstsoppdagelse istedet for fokusområder.
-
+ Optimaliser bildet for ulike scener
+ Konfigurer hvitbalansen
+ Velg en innstilling for å justere hvitbalansen
+ Sett ISO
+ En høyere verdi betyr økt lysfølsomhet (fungerer kanskje ikke på enkelte enheter)
+ Sett eksponeringskompensasjonen
+ Sett til 0 for standard eksponeringskompensasjon
+ Lås foto-/videoretning
+ Hvis angitt, ignoreres enhetens retning, og retningen på bildet/videoen vil være i forhold til den angitte retningen.
+\n%s
+ Ansiktsgjenkjenning
+ Bruk ansiktsgjenkjenning istedenfor fokusområder
Kamerakontrollere
- Nedtelling
- Nedtellingsbipp
- Bipp når nedtellingen teller ned, eller under seriefotograferingsforsinkelse
- Stemmenedtelling
- Si nedtellingen eller seriefotograferingsmodusforsinkelsen (fra 60 sekunder)
- Seriefoto
+ Timer
+ Lydsignal for timer
+ Lydsignal når timeren teller ned, eller forsinkelse under seriefotograferingsmodus
+ Stemmenedtelling for timer
+ Si nedtellingen for timeren eller forsinkelse i seriefotograferingsmodus (fra 60 sekunder)
+ Seriefotograferingsmodus
+
Seriefotograferingsintervall
Flere kamerakontrollere…
Trykk for å ta bilde
- Ta et foto kun ved å trykke på dobbelt-tappe på forhåndsvisningen.
+ Ta et bilde eller ta opp en video bare ved å trykke eller dobbelttrykke på forhåndsvisningen
Pause etter å ha tatt et bilde
- Sett skjermen på pause etter å ha tatt et bilde, med valgene om å dele eller slette bildet.
+ Sett skjermen på pause etter å ha tatt et bilde, med mulighet for å dele eller slette bildet
Lukkerlyd
- Spill av en lyd når du tar et bilde.
+ Spill av en lyd når du tar et bilde
Volumknapper
Lydkontrollalternativer
Lydkontrollsensitivitet
- Innstillingen for støynivåsensitiviteten for lyd (Høy støy)
- Lagringsplasseringen
- Mappen som bildene/videoen skal lagres i.
- Hvorvidt lagringstilgangsrammeverk skal brukes til å lagre bilder og videoer.
- Forstavelsen til fotolagring
- Forstavelsen som skal brukes til lagringsfilnavnene til bildene.
- Forstavelsen til videolagring
- Forstavelsen som skal brukes til lagringsfilnavnene til bildene.
- Tidsformatet til filnavnene
- Vis kameraet når mobilen er låstShow camera when locked
- Hvis dette er aktivert, vil Open Camera fortsett vises over enhver låseskjerm (Du vil fortsatt måtte låse opp for å få tilgang til Innstillinger, Galleri, osv.).
- Utfør auto-fokusering ved oppstart
- Hvorvidt det skal auto-fokuseres når Open Camera startes opp. Hvis du har problemer med at blitsen skrur seg på ved oppstart, skru av denne innstillingen.
+ Innstilling for støynivåsensitivitet for lyd (høy lyd)
+ Lagringsplass
+ Mappe for lagring av bilde-/videofilene i
+ Hvorvidt Storage Access Framework skal brukes til lagring av bilder og videoer. Dette bør være aktivert for å tillate lagring på eksterne SD-kort. På Android 10+ må dette alternativet være aktivert hvis du vil lagre i en mappe utenfor DCIM.
+ Lagre bildeprefiks
+ Prefikset som skal brukes til å lagre filnavn for bilder
+ Lagre videoprefiks
+ Prefikset som skal brukes til å lagre filnavn for videoer
+ Tidsformat for filnavn
+ Vis kameraet når enheten er låst
+ Hvis aktivert, vil Kamera fortsatt vises på enhver låst skjerm (du må fortsatt låse opp for å få tilgang til innstillinger, galleri osv.)
+ Aktiver autofokus ved oppstart
+ Hvorvidt autofokus skal aktiveres når kameraet startes. Hvis du har problemer med at blitsen slås på når du starter kameraet, kan du deaktivere dette alternativet
Lås skjermen under videoopptak
- Under opptak av video, vil brukergrensesnitt bli låst for å unngå at opptaket blir stoppet ved et uhell. Sveip skjermen for å låse opp. Bemerk at opptak alltid vil bli stoppet dersom appen går inn i bakgrunnen eller at skjermen blir blank.
- Rotér forhåndsvisningen
- Innstilling for å rotere forhåndsvisningen (Påvirker ikke de resulterende bildene/videoene)\n%s
- Grensesnittet på skjermen…
+ Når du spiller inn video, låses brukergrensesnittet for å forhindre at du stopper opptaket ved et uhell. Sveip over skjermen for å låse opp. Vær oppmerksom på at videoopptaket alltid stoppes hvis applikasjonen går i bakgrunnen eller skjermen blir blank.
+ Roter forhåndsvisningen
+ Innstilling for å rotere forhåndsvisningen (påvirker ikke de resulterende bildene/videoene)
+\n%s
+ Brukergrensesnitt på skjermen…
Forhåndsvisningsstørrelse
- Grensesnittsplassering
+ Plassering av brukergrensesnitt
Oppslukkende modus
- Vis forstørring
- Vis det nåværende kameraforstørringsnivået på skjermen (under forstørring)
- Vis -/+—forstørringskontrollere
- Vis -/+—knappene for forstørringskontrollering.
- Vis forstørringsgliderkontrolleren
- Vis glideren for forstørringskontroll.
+ Vis zoom
+ Vis gjeldende zoomnivå for kameraet på skjermen (når det er zoomet inn)
+ Vis -/+ zoomkontrollere
+ Vis knappene -/+ for zoomkontroll
+ Vis glidebryteren for zoom
+ Vis glidebryteren for zoomkontroll
Vis ISO
- Viser det nåværende ISO-nivået. I autoblitsmodus, vil et blitssymbol også fortelle når blitsen går av (Krever Camera2-API).
- Vis ledig lagring
- Vis den gjenværende enhetslagringsplassen på skjermen.
- Vis vinkelen
- Vis den nåværende enhetsroteringsvinkelen på skjermen.
- Vis vinkellinjen
- Vis en vannrett vaterlinje.
- Vinkel/høyde-fremhevingsfarge
- Fremhevingsfarge for når kameraet er nesten i vater.
- Vis kompassretningen
- Vis kompassretningen til enheten på skjermen.
- Vis klokken
- Vis det nåværende klokkeslettet på skjermen.
+ Viser gjeldende ISO-nivå. (Krever Camera2 API.)
+ Vis ledig minne
+ Vis enhetens gjenværende lagringsplass på skjermen
+ Vis vinkel
+ Vis gjeldende orienteringsvinkel for enheten på skjermen
+ Vis vinkellinje
+ Vis en horisontal vannrett linje
+ Vinkel/høyde uthevingsfarge
+ Uthevingsfarge for når kameraet er nesten i vater
+ Vis kompassretning
+ Vis enhetens kompassretning på skjermen
+ Vis tid
+ Vis nåværende klokkeslett på skjermen
Vis batterinivå
- Vis det nåværende batterinivået på skjermen.
- Vis netting
- Netting
- Vis en klippingsveiviser
- En klippeveiviser viser et rektangel som vis hva det bestemte skjermforholdet ser ut som — Nyttig dersom du planlegger å klippe bildet/videoen etterpå til et annet skjermforhold. Krever WYSIWYG-fotomodus, eller å være i videomodus\n%s
- Vis oppsprettsbeskjeder
- Hvorvidt oppsprettsbeskjedene skal vises.
- Vis forhåndsvisningsanimasjon
- Vis en bevegende forhåndsvisningsanimasjon når du tar et bilde.
- Vis kanter når du tar et bilde
- Vis kanter på skjermen når du tar et bilde.
+ Vis gjeldende batterinivå på skjermen
+ Vis rutenett
+ Rutenett
+
+ Vis en beskjæringsguide
+ En beskjæringsguide viser et rektangel som viser hvordan det angitte størrelsesforholdet ser ut. Nyttig hvis du planlegger å beskjære bildet/videoen til et annet størrelsesforhold etterpå. Krever WYSIWYG-fotomodus eller videomodus.
+\n%s
+ Vis meldinger på skjermen
+ Hvorvidt det skal vises midlertidige infomeldinger på skjermen
+ Vis miniatyrbildeanimasjon
+ Vis animasjon av bevegelige miniatyrbilder når du tar et bilde
+ Vis kantlinje når du tar bilde
+ Vis en ramme på skjermen når du tar et bilde
Hold skjermen skrudd på
- Hvis dette er valgt, vil skjermen ikke skru seg av mens Open Cameras hovedgrensesnitt er aktivt.
+ Hvis dette er valgt, vil skjermen ikke skru seg av mens Cameras hovedgrensesnitt er aktivt.
Fremtving makslysstyrke
Tving skjermvisningen til å ha maks lysstyrke, og ikke enhetsstandarden.
-
Foto- og video-innstillinger
Fotoinnstillinger…
Videoinnstillinger…
Posisjonsinnstillinger…
Kameraoppløsning
Bildekvalitet
- Velg JPEG-kvaliteten til de lagrede bildene (Standardverdien er 90%%)\n%s
+ Velg JPEG-kvaliteten til de lagrede bildene (Standardverdien er 90%%)\n%s
+
RAW
Lagre posisjonsdata (Geotagging)
Lagre GPS-posisjonsdata i bildene/videoene.
@@ -217,27 +223,24 @@
Lydkilde
Mikrofonen som skal brukes til lydopptak\n%s
Lydkanaler
- Velg mono eller stereo for opptak av lyd (Stereo støttes kun på noen enheter).\n%s
+ Velg mono eller stereo for opptak av lyd (Stereo støttes kun på noen enheter).
Blits under videoopptak
Hvis dette er aktivert, vil blitsen skru seg av/på under videoopptak (Kan brukes til å se på avstand om kameraet fortsatt tar opp).
-
Diverse
Netthjelp
- Gå til Open Camera-nettsiden i nettleseren din.
+ Gå til Camera-nettsiden i nettleseren din.
Doner for å støtte utviklingen.
Hvis du liker denne appen, så tenk gjerne på om du vil gi meg en donasjon for å støtte utviklingen. Du kan gjøre dette ved å kjøpe min "donasjonsapp" — Klikk på denne innstillingen for å gå til siden for min donasjonsapp. Takk!
Bruk Camera2-APIen
Aktiverer Camera2-API - Den tilbyr ekstra egenskaper, men kan kanskje ikke virke riktig på alle enheter (Vil føre til en omstart).
- Om Open Camera
+ Om Camera
App- og avlusings-informasjon
Tilbakestill innstillinger
- Tilbakestill alle Open Camera-innstillinger til sine standarder.
- Er du sikker på at du vil tilbakestille alle Open Camera-innstillinger til sine standarder?
-
+ Tilbakestill alle Camera-innstillinger til sine standarder.
+ Er du sikker på at du vil tilbakestille alle Camera-innstillinger til sine standarder?
Tilgjengelig
Ikke tilgjengelig
Kopier til utklippstavlen
-
Ta bilde
Galleri
Eksponering
@@ -250,7 +253,6 @@
Bytt til bildemodus
Slett det seneste bildet
Del bilde
-
Overmappe
Ny mappe
Kan ikke skrive til denne mappen.
@@ -258,88 +260,73 @@
Skriv inn et nytt mappenavn
Klarte ikke å lage mappen.
Mappen eksisterer allerede.
-
Velg en lagreplassering
Lagringstilgangsrammeverket ble avbrutt.
Klarer ikke å lagre til denne mappen
-
Mikrofon-tillatelser er ikke tilgjengelige
Posisjonstillatelser er ikke tilgjengelige
-
Begynn videoopptak
Avslutt videoopptak
-
Maks filstørrelse
- MB
- GB
-
+ MB
+
+ GB
+
Begynn lydlytting
Avslutt lydlytting
Si \"Cheese!\"
Lag en høy lyd
-
Auto-vater vil automatisk rotere bildene dine slik at de ser ut til å være i vater. \n\nBemerk at dette betyr at bilder automatisk vil litt lavere oppløsning (på grunn av roteringen og klippingen som er påkrevd).
DNG-filer inneholder de fulle ukomprimerte og uprosesserte informasjonene fra ditt kamera.\n\nDe fleste galleriapper vil ikke kjenne igjen DNG, og de bør istedet brukes med spesialiserende apper.\n\nBemerk at diverse prosesseringsinnstillinger som "Stemple bilder" og "Auto-stabiliser" kun gjelder for JPEG-bildene, og ikke for DNG-bildene.\n\nDNG-filer tar opp veldig mye plass; en filutforsker-app kan være nyttig for å overføre eller slette dem.\n\nDNG-filer lagres kun i Standard- og DRO-fotomodusene.
HDR-modus er nyttig for takninger som har stor variasjon i lysstyrke. Det virker ved at man tar flere bilder med forskjellige eksponeringer, og kombinerer dem til å forme ett endelig bilde.\n\n Bemerk at HDR ikke er egnet for scener med raske bevegelser, og kan føre til mindre nøyaktig fargerepresentasjon.\n\nÅ ta bilder i HDR-modus vil være tregere.
-
Ikke vis igjen
-
Fotomodus
Std
HDR
Ekspo {}
Exposure Bracketing
- NR
+ NR
+
Støyreduksjon
Fotostempel
Lagre alle bilder i HDR-modus
Hvis dette er aktivert, vil det i HDR-fotomodus være tre eksponeringsgrunnbilder som vil bli lagret, i tillegg til det endelige HDR-bildet. Bemerk at dette vil gjøre lagring tregere, spesielt hvis innstillinger som \"Stemple bilder\" eller Auto-vater også er brukt.
-
TILLATELSER ER IKKE TILGJENGELIGE
Tillatelse er påkrevd
Kameratillatelse er påkrevd for å kunne bruke kameraet.
-
Avlusingsinnstillinger
Avlusingsinnstillinger
Bruk alternativ blitsmetode
Aktiver dette dersom enheten har trøbbel med blitsen i Camera2-APIen. this if your device has buggy flash behaviour with Camera2 API
-
Eksponeringsbrakett
Antall bilder i eksponeringsbrakettmodusen\n%s
Eksponeringsbrakett-stopper
Hvor mange stopp som skal legges til / fjernes fra, for det mørkeste/lyseste bildet\n%s
-
Støyreduksjon av opprinnelige bilder
Hvorvidt de opprinnelige bildene skal lagres under støyreduksjonsmodus. Bemerk at dette kan gjøre det mye tregere å lagre bilder.\n%s
-
Ikke lagre de opprinnelige bildene
Lagre ett enkelt opprinnelig bilde
Lagre alle opprinnelige bilder (Tregt)
-
- s
-
+ s
+
Ikke nok ledig plass til å ta opp video
Videoen ble stoppet.\nBatterinivået er kritisk lavt.
Sjekk for kritisk batteri
Avslutt videoopptak dersom batterinivået er kritisk lavt. Dette hjelper til med å redusere sjansen for at videoer blir korrumpert dersom enheten din plutselig skrur seg av fordi den gikk tom for strøm.
-
- Mørke
- Lys
+ Mørke
+
+ Lys
+
Lukkerhastighet
-
Stor kamerafeil
-
Aktiver rask HDR-/ekspongerings-blits
Tillater raskere takning av HDR-/eksponerings-bilder. Deaktiver dette dersom enheten din har problemer når du tar bilder med HDR- eller eksponerings-fotomodusene.
-
Kamera
Videoopptak
Selfie
-
Speil frontkameraet
Hvorvidt bilder skal speiles når frontkameraet brukes\n%s
-
Kalibrer vatervinkelen
Denne innstillingen kalibrerer din enhets akselleromenter, sånn at auto-vateren og vater-/vinkel-innstillingene på skjermen virker riktig.
Vennligst plasser din enhet på en flat vannrett overflate, sånn at den er i jevn høyde (Enten i portrett- eller landskaps-modus), og så velg Kalibrer.\n\nTrykk på Tilbakestill for å fjerne kalibreringen fra enheten din.\n\n\Trykk på Tilbake for å avbryte.
@@ -347,16 +334,13 @@
Tilbakestill
Stabiliseringen er kalibrert
Stabiliseringskalibreringen er tilbakestilt.
-
DRO
-
Vis linjer
Vis vannrette linjer
Vis kompassretnings-linjer
Vis kompassretnings-linjer.
Videoundertekster
Lag en undertekstfil (.SRT) som lagrer dato og klokkeslett; og også GPS-info dersom plasserings-/retnings-dataer er aktivert\n%s
-
Ubegrenset
3 sekunder
5 sekunder
@@ -381,20 +365,15 @@
30 minutter
45 minutter
1 time
-
Vis "Ta bilde"-ikon
Vis ikonet for å ta bilder og å ta opp videoer. Nyttig dersom enheten din har en maskinvarelukkerknapp og at du heller ville brukt den.
-
Videoen ble pauset
Video ble fortsatt
Sett videoopptak på pause
Fortsett videoopptak
-
Tar opp…
-
Klarte ikke å begynne lydlytting.
Klarte ikke å lage et HDR-bilde.
-
Auto
Overskyet
Dagslys
@@ -404,7 +383,6 @@
Skumring
Varm
Manuell
-
Action
Strekkode
Strand
@@ -421,7 +399,6 @@
Stødig foto
Solnedgang
Teater
-
Aqua
Svart tavle
Mono
@@ -431,21 +408,16 @@
Sepia
Solariser
Hvit tavle
-
Hva er nytt:
Doner
-
Standard
-
Kun JPEG
JPEG og DNG (RAW)
-
Standard
åååå-mm-dd
dd/mm/åååå
mm/dd/åååå
ingen
-
Blits av
Auto-blits
Blits på
@@ -453,12 +425,10 @@
Rødt øye
Auto-skjermblits
Skjermblits på
-
Kameraopptaker
Ekstern mikrofon (hvis det er en)
Standardlydkilden
Optimalisert for stemmer
-
Standard
100KB/s
200KB/s
@@ -483,7 +453,6 @@
80MB/s
90MB/s
100MB/s
-
Av
2x
3x
@@ -498,7 +467,6 @@
200x
500x
Ubegrenset
-
Ingen forsinkelse
1s
2s
@@ -516,14 +484,12 @@
30m
1t
2t
-
Enhetsstandard
100MB
200MB
300MB
500MB
1GB
-
Ingen
1 (1:1)
1,25 (5:4)
@@ -535,7 +501,6 @@
2,33 (21:9)
2,35 (47:20)
2,4 (12:5)
-
+3 (høy sensitivitet)
+2
+1
@@ -543,20 +508,23 @@
-1
-2
-3 (lav sensitivitet)
-
Venstrehendt grensesnitt
Høyrehendt grensesnitt
-
Skyggelagt tekst
Ren tekst
-
+ Bygg versjon
+ Kamera er gaffel fra Camera
+ Forfatter
+ Kildekode
+ lisens
+ Kamerainformasjon
+ Tjenestevilkår
Av
Skjul bare de virtuelle navigasjonsknappene
Skjul grensesnittet
Skjul alt
-
Ingen
Høy støy
- Stemmekommando: \"cheese\"
-
-
+ Stemmekommando: \"cheese\"
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3167a06b73632375f1784db225fb1293d700d356
--- /dev/null
+++ b/app/src/main/res/values-nl/strings.xml
@@ -0,0 +1,838 @@
+
+
+ Gevoeligheid audio besturing
+ Audio besturingsopties
+ Volume knoppen
+ Laat een sluiter toon horen bij het nemen van een foto
+ Sluiter geluid
+ Pauzeer het scherm na het nemen van een foto met de mogelijkheid die te delen of verwijderen
+ Pauzeer na foto-opname
+ Meer camera instellingen…
+ Interval serie opname
+ Serie opname
+ Gesproken aftellen bij de timer of tijdens vertraging bij serie opnames (vanaf 60 seconden)
+ Timer
+ Gebruik gezichtsherkenning in plaats van focus punten
+ Gezichtsherkenning
+ Indien ingesteld wordt de oriëntatie van het toestel genegeerd en is de oriëntatie van foto/video opnames zoals die is ingesteld
+\n%s
+ Vergrendel foto/video oriëntatie
+ Zet op 0 voor de standaard belichtingscompensatie
+ Belichtingscompensatie instellen
+ Een hogere waarde betekend meer lichtgevoeligheid (werkt niet op sommige toestellen)
+ ISO waarde instellen
+ Witbalans instellen
+ Optimaliseer de foto voor verschillende scènes
+ Pas een scène modus toe
+ Past het geselecteerde kleureffect toe op de foto
+ Kleureffect toepassen
+ Auto-level
+ Camera effecten
+ m
+ Opslaan van foto informatie mislukt
+ Swipe om te ontgrendelen]
+ [VERGRENDELD:
+ Vrij
+ Zoom
+ ISO
+ DOOR EEN ANDERE APPLICATIE\?
+ CAMERA KAN IN GEBRUIK ZIJN
+ FOUT TIJDENS OPENEN CAMERA.
+ Richting
+ Hoek
+ Witbalans
+ Scène modus
+ Kleur effect
+ Max tijdsduur
+ Ontgrendeld
+ Geen galerij app beschikbaar
+ Foto verwijderd
+ GPS locatie niet beschikbaar
+ Sorry
+ Video opname gestart
+ Video bestand opslaan mislukt
+ Timer gestart
+ Timer geannuleerd
+ Video
+ Foto
+ Oneindig
+ Focus afstand
+ FPS
+ Belichting compensatie
+ Video heeft maximale bestandsgrootte bereikt
+ Video heeft maximale duur bereikt
+ Server probleem, video gestopt
+ Onbekende fout, video gestopt
+ niet ondersteund op uw toestel
+ Verbinding met camera mislukt
+ Video-opname gestopt
+ Opslag locatie gewijzigd naar:
+ Kies een andere map
+ Wis map geschiedenis\?
+ Wis map geschiedenis
+ Kies opslag locatie:
+ Uit
+ Aan
+ OK (Dit bericht zal niet meer verschijnen)
+ Instellingen
+ Camera
+ HDR
+ Standaard
+ Std
+ Maak een hard geluid
+ Zeg \"cheese\"
+ GB
+ MB
+ Map bestaat al
+ Vergrendel belichting
+ Belichting
+ Galerij
+ Kopieer naar klembord
+ Niet beschikbaar
+ Beschikbaar
+ Reset instellingen
+ Over
+ Online hulp
+ Tekst stijl
+ GPS stempel formaat
+ Sla locatie data op (Geotagging)
+ RAW
+ Camera resolutie
+ Toon miniatuur animatie
+ Raster
+ Toon hoek
+ Toon ISO
+ Machtiging vereist
+ MACHTIGINGEN NIET BESCHIKBAAR
+ Sla alle foto\'s op voor HDR modus
+ Foto Stempel
+ Ruis Onderdrukking
+ RO
+ Snelle Fotoreeks
+ []]]
+ Foto Modus
+ Niet opnieuw weergeven
+ Maximale bestandsgrootte
+ Stop opnemen video
+ Start opnemen video
+ Geen machtiging voor locatie toegang
+ Geen machtiging voor microfoon toegang
+ Kan niet opslaan naar deze map
+ Storage Access Framework geannuleerd
+ Selecteer opslag locatie
+ Probleem met het aanmaken van map
+ Geef naam voor nieuwe map
+ Geen toegang tot deze map
+ Kan niet naar deze map schrijven
+ Nieuwe Map
+ Foto Delen
+ Verwijder laatste foto
+ Schakel naar foto modus
+ Schakel naar video modus
+ Wissel naar achterste camera
+ Wissel naar voorste camera
+ Flash Modus
+ Focus Modus
+ Neem foto
+ Ben je zeker dat je alle Camera instellingen wil resetten\?
+ Reset alle Camera instellingen naar de standaard waarden
+ App en debug info
+ Doneer om verdere ontwikkeling te ondersteunen
+ Surf naar de Camera website in je browser
+ Audio kanalen
+ Audio bron
+ Neem audio op tijdens video opname
+ Audio opnemen
+ Herstart op maximum bestandsgrootte
+ Maximale grootte van video
+ Maximum duur van video
+ Video bitrate (bij benadering)
+ Schakel video stabilisatie in
+ 4K UHD afdwingen (werkt enkel op sommige apparaten)
+ Video resolutie
+ Tekst kleur voor stempels op foto\'s
+\n%s
+ Tekst kleur
+ Tekst grootte voor stempels op foto\'s
+\n%s
+ Tekstgrootte
+ Voeg stempel toe aan foto\'s met een aangepaste tekst
+ Aangepaste tekst
+ Formaat tijdsaanduiding
+ Datum stempel formaat
+ Voeg aan foto\'s een stempel toe met datum en tijd; en ook met gps locatie indien locatie/richting data ingeschakeld
+\n%s
+ Voeg stempel toe op foto\'s
+ Als locatie data ingeschakeld is, neem alleen foto\'s/video\'s wanneer locatie data beschikbaar is
+ Verplicht locatie data
+ Sla GPS kompas richting op in foto\'s (alleen voor JPEG formaat)
+ Sla kompas richting op
+ Sla GPS locatie data op in foto\'s/video\'s (voor foto\'s, locatie date kan enkel opgeslagen worden in JPEG en DNG formaat)
+ Stel de beeldkwaliteit van opgeslagen JPEG of WebP afbeeldigen in (standaard waarde is 90%%). Dit heeft geen invloed op het PNG foto formaat.
+\n%s
+ Foto kwaliteit
+ Locatie instellingen…
+ Video instellingen…
+ Foto instellingen…
+ Foto en Video instellingen
+ Zet scherm helderheid op maximaal, ongeacht de instellingen van het apparaat
+ Maximale helderheid afdwingen
+ Houd scherm ingeschakeld
+ Toon rand bij het nemen van een foto
+ Toon raster hulplijnen
+ Toon het batterij niveau op het scherm
+ Toon batterij
+ Toont de huidige tijd op het scherm
+ Toon tijd
+ Toon de kompas richting van het apparaat op het scherm
+ Toon kompas richting
+ Toon horizontale level lijn
+ Toon hoek lijn
+ Toon vrij geheugen
+ Toon het zoom niveau op het scherm (wanneer ingezoomd)
+ Toon zoom
+ Voorbeeld grootte
+ Gebruikersinterface…
+ Draai voorbeeld
+ Tijdens het opnemen van video zal de gebruikersinterface geblokkeerd worden om te vermijden dat een opname per ongeluk wordt gestopt. Swipe over het scherm om te deblokkeren. Let wel dat een video-opname altijd stopt wanneer de app op de achtergrond wordt gezet of het scherm leeg is.
+ Vergrendelingsscherm actief tijdens het opnemen van video
+ Voer auto-focus uit tijdens het opstarten
+ Wanneer ingeschakeld zal Camera op het vergrendelingsscherm worden afgebeeld (Je moet wel nog deblokkeren voor toegang tot Instellingen, Galerij enz)
+ Toon camera wanneer vergrendeld
+ Tijdnotatie voor bestandsnamen
+ Het voorvoegsel voor bestandsnamen bij opgeslagen video\'s
+ Video voorvoegsel
+ Het voorvoegsel voor bestandsnamen bij opgeslagen foto\'s
+ Foto voorvoegsel
+ Gebruik Storage Access Framework
+ Map om foto/video bestanden in op te slaan
+ Opslag locatie
+ Neem een foto of video door het voorbeeld aan te raken of te dubbelklikken
+ Vastleggen bij aanraking
+ Timer met spraakgeluid
+ Geef signaal wanneer de timer aan het aftellen is of tijdens de vertraging bij serie opnames
+ Timer signaal
+ Camera Bediening
+ Kies een instelling om de witbalans aan te passen
+ Geluid uitgeschakeld
+ Sorry, auto-level wordt niet ondersteund
+\nop dit apparaat
+ Scherm is vergrendeld
+\nVeeg over het scherm om te ontgrendelen
+ Foto nemen mislukt
+ Foto genomen
+ Starten van camera voorbeeld mislukt
+ Auto-level mislukt
+ Opslaan van RAW foto is mislukt
+ Opslaan foto mislukt
+ Video opname mislukt
+ Herhaal modus geannuleerd
+ Belichting ontgrendeld
+ Belichting vergrendeld
+ Camera achter
+ Camera voor
+ Fout, het video bestand kan beschadigd zijn
+ herhalingen te gaan
+ Pop-up instellingen
+ Versie
+ Licentie
+ Auteurs
+ Servicevoorwaarden
+ Broncode
+ Diversen
+ Kies mono of stereo voor audio opnames (stereo werkt alleen op sommige toestellen)
+ Gebruikte microfoon voor audio opname
+\n%s
+ Herstart automatisch wanneer de maximum bestand grootte is bereikt
+ De video opnam zal stoppen en/of herstarten (zie volgende optie) wanneer de maximum bestand grootte is bereikt. Merk op dat vele Android toestellen zelf een maximum bestand grootte hanteren (meestal rond 2GB of 4GB), maar deze optie geeft de mogelijkheid zelf een waarde te kiezen.
+\n%s
+ Wanneer de video opname is gestopt bij het bereiken van de max tijdsduur (wanneer ingesteld), zal deze optie een nieuwe opname starten, voor een gespecificeerd aantal keer
+\n%s
+ Herstart na max tijdsduur
+ De video opname zal stoppen na de gespecificeerde tijdsduur
+\n%s
+ Stel de beeldfrequentie (FPS) van video\'s in (Dit is bij benadering en niet gegarandeerd. De opname kan mislukken als de beeldfrequentie niet wordt ondersteund). Merk op dat deze optie wordt genegeerd bij slow motion video\'s.
+\n%s
+ Video beeldfrequentie (bij benadering)
+ Stel de bitrate van video\'s in (hoger betekend betere kwaliteit, maar neemt meer opslagruimte in; video opname kan mislukken als de bitrate niet wordt ondersteund)
+\n%s
+ Video stabilisering reduceert het bewegen van de camera zowel in de preview als in de opnames.
+ Schakel 3840x2160 resolutie voor video opname in op de achterste camera - deze optie is een hack dat mogelijk toegang geeft tot 4K camera\'s op toestellen die deze optie normaal niet toestaan voor app\'s van derden. Het is niet gegarandeerd dat het werkt.
+ Foto\'s opslagen in een achtergrond-thread (Voor een snellere werking)
+ Gebruik achtergrond-thread
+ Tekst stijl voor foto stempels
+\n%s
+ Wanneer ingeschakeld zal het scherm niet uit gaan wanneer de Camera gebruikersinterface actief is
+ Geef een rand weer op het scherm om aan te geven wanneer er een foto genomen wordt
+ Toon thumbnail animatie bij het nemen van een foto
+ Weergave van pop-up, \"toast\", berichten activeren/deactiveren
+ Toon berichten op het scherm
+ Geeft een rechthoek weer om te zien hoe een andere beeldverhouding er uit kan zien - handig als je van plan bent om later de foto/video beeldverhouding aan te passen. Vereist WYSIWYG foto modus of video modus
+\n%s
+ Toon hulplijnen voor bijsnijden
+ Toon de resterende opslag ruimte van het toestel op het scherm
+ Geeft de huidige ISO waarde weer. (Vereist Camera2 API)
+ Toon de slider om de zoom te regelen
+ Toon zoom slider
+ Geeft -/+ knoppen om de zoom te regelen weer
+ Toon zoom -/+ knoppen
+ Plaatsing van gebruikersinterface
+ Optie om de voorbeeld weergave te draaien (heeft geen invloed op het resultaat van de opname)
+\n%s
+ Automatisch scherpstellen bij het opstarten van de app. Wanneer je een probleem hebt waardoor de flits ongevraagd aan gaat bij het starten, schakel je deze optie uit
+ Maak gebruik van Storage Access Framework om foto\'s en video\'s op te slaan. Vink dit aan (vanaf Android 5) om te kunnen opslaan op externe SD-cards. Vanaf android 10 moet dit ingeschakeld staan om bestanden op te slaan buiten de DCIM map.
+ Geluidniveau gevoeligheid voor harde geluiden
+ 100%
+ 40x
+ 30x
+ 20x
+ 10x
+ 5x
+ 4x
+ 3x
+ 2x
+ Volgende
+ Camera2 API
+ Originele camera API
+ Camera API
+ ID
+ Originele foto\'s opslagen plus debug XML bestand
+ Originele foto\'s opslagen
+ Originele foto\'s niet opslagen
+ Originele panorama afbeeldingen ook opslagen. Merk op dat de opslag van panorama foto\'s langzamer gaat. Het is ook mogelijk een XML bestand op te slagen wat nuttig kan zijn om problemen met panorama te rapporteren.
+\n%s
+ Panorama originele afbeeldingen
+ Panorama automatisch bijsnijden
+ Fout bij het maken van Panorama afbeelding
+ Panorama geannuleerd
+ Annuleer panorama
+ Panorama voltooien
+ Afbeeldingen aan het opslagen…
+ Scannen
+ Huidige afstandbediening:
+ Geeft een icoon weer op het scherm om de verschillende RAW modi te kunnen selecteren
+ Toon RAW icoon
+ Geeft een icoon weer op het scherm om de verschillende flash opties te kunnen selecteren, in plaats van flash opties in het pop-up menu. De zaklamp is wel niet beschikbaar wanneer je dit icoon gebruikt.
+ Toon flash icoon
+ Camera preview…
+ Resterende
+ Bepaalt de kleur waarmee scherpgestelde delen worden geaccentueerd
+\n%s
+ Focus-Peaking kleur
+ Aan
+ Uit
+ Deze optie accentueert contouren die in focus staan. Dit kan handig zijn bij manuele focus om sneller scherpgestelde delen te onderscheiden in het beeld.
+\n%s
+ Focus-Peaking
+ 99%
+ 98%
+ 97%
+ 95%
+ 93%
+ 90%
+ 80%
+ 70%
+ Uit
+ Geeft zebra strepen weer op het scherm waar de camera preview overbelicht is.
+\n%s
+ Toon zebra strepen
+ Helderheid (Gemiddelde van min.-max.)
+ Intensiteit (Gemiddeld)
+ Waarde (Maximum)
+ Helderheid
+ RGB Kleuren
+ Uit
+ Toont een kleuren histogram op het scherm
+\n%s
+ Toon een histogram
+ Locatie data opslag stoppen
+ Locatie data opslagen
+ Geeft een knop weer op het scherm om de opslag van locatie data in/uit te schakelen (geotagging)
+ Toon icoon locatie data
+ Geen adres weergeven
+ Verkies adressen voor GPS coördinaten
+ Geef adressen weer wanneer mogelijk, samen met de GPS coördinaten
+ Gebruik adressen
+ Kraken Smart Housing
+ Afstandsbediening verbonden
+ Voor onderwater behuizingen, verbetert de nauwkeurigheid als het correcte water type is geselecteerd.
+ Gebruik Zoutwater voor diepte berekeningen
+ Hint: zet de standaard helderheid van het scherm op de minimum stand voor dat je Camera start.
+ Scherm dimmen bij verbroken verbinding
+ Onbekend apparaat
+ Bluetooth wordt niet ondersteund.
+ BLE Apparaat Scan
+ BLE wordt niet ondersteund
+ Type extern apparaat
+ Inschakelen van Bluetooth LE (BLE) besturingsapparaten
+ Inschakelen van Bluetooth LE afstandsbediening
+ Bluetooth LE afstandsbediening…
+ Panorama
+ Pano
+ Witbalans ontgrendeld
+ Witbalans vergrendeld
+ Witbalans ontgrendelen
+ Witbalans vergrendelen
+ Geeft een icoon weer om automatische witbalans te vergrendelen/ontgrendelen
+ Toon auto-witbalans icoon
+ Geeft een icoon weer om specifieke tekst stempel te gebruiken
+ Toon icoon voor specifieke tekst stempel
+ Foto stempels uitgeschakeld
+ Foto stempels ingeschakeld
+ Foto stempels uitschakelen
+ Foto stempels inschakelen
+ Geeft een icoon weer om foto stempels in of uit te schakelen
+ Toon foto stempel icoon
+ Gezichtsherkenning uitgeschakeld
+ Gezichtsherkenning ingeschakeld
+ Gezichtsherkenning uitschakelen
+ Gezichtsherkenning inschakelen
+ Geeft een icoon weer om gezichtsherkenning in of uit te schakelen
+ Toon gezichtsherkenning icoon
+ Iconen aan bovenkant (portret)
+ Rechtshandige gebruikersinterface
+ Linkshandige gebruikersinterface
+ Weinig licht
+ Normaal
+ NR modus
+ PNG
+ WebP
+ JPEG
+ Afbeelding formaat
+ Fout bij laden instellingen
+ Fout bij opslagen instellingen
+ Opgeslagen instellingen
+ Deze optie maakt het mogelijk om een opgeslagen instellingen bestand te selecteren. Wees voorzichtig! Het geselecteerde bestand zal alle huidige instellingen overschrijven!
+ Herstelt de vorige opgeslagen instellingen. Alle huidige instellingen zullen overschreven worden met de opgeslagen instellingen!
+ Instellingen terugzetten
+ Naam van het instellingen bestand
+ Slaagt alle Camera instellingen op in een bestand
+ Instellingen opslaan
+ Instellingen beheer
+ WebM (Audio niet ondersteund)
+ 3GPP
+ MPEG4 HEVC
+ MPEG4 H264
+ Standaard
+ Video en audio bestandsformaat en codecs
+\n%s
+ Video formaat
+ Altijd
+ Smart
+ Uit
+ HDR contrast verbetering
+ -3 (lage gevoeligheid)
+ -2
+ -1
+ 0 (standaard)
+ +1
+ +2
+ +3 (hoge gevoeligheid)
+ 2,4 (12:5)
+ 2,35 (47:20)
+ 2,33 (21:9)
+ 2,0 (2:1)
+ 1,85 (37:20)
+ 1,78 (16:9)
+ 1,5 (3:2)
+ 1,4 (7:4)
+ 1,33 (4:3)
+ 1,25 (5:4)
+ 1 (1:1)
+ Geen
+ 9 GB
+ 5 GB
+ 2 GB
+ 1 GB
+ 500 MB
+ 300 MB
+ 200 MB
+ 100 MB
+ Standaard
+ 2 h
+ 1 h
+ 30 min
+ 20 min
+ 10 min
+ 5 min
+ 2 min
+ 1 min
+ 30 s
+ 20 s
+ 15 s
+ 10 s
+ 5 s
+ 3 s
+ 2 s
+ 1 s
+ 0,5 s
+ Geen vertraging
+ Onbegrensd
+ 500x
+ 200x
+ 100x
+ 50x
+ Uit
+ Schakeld extra mogelijkheden in zoals manuele modus voor belichting, focus, witbalans en ook RAW (Indien het ondersteund wordt door het toestel). Dit werkt mogelijk niet correct op alle toestellen
+ Gebruik Camera2 API
+ Als je tevreden bent over deze app, overweeg a.u.b. een donatie te doen om de softwareontwikkelaars te ondersteunen. Je kan dit doen door mijn donatie app te kopen - klik op deze optie om de webpagina voor de donatie app te openen. Alvast bedankt!
+ Geen bestand dialoogvenster gevonden. Deze optie wordt niet ondersteund op dit toestel
+ Vorige
+ Vermeer of verminder belichting compensatie
+ 4x
+ 2x
+ Uit
+ 200 Mbps
+ 150 Mbps
+ 100 Mbps
+ 90 Mbps
+ 80 Mbps
+ 70 Mbps
+ 500 kbps
+ 200 kbps
+ 100 kbps
+ Standaard
+ Standaard audiobron
+ Externe microfoon
+ Standaard
+ Afbeelding kan niet geopend worden
+ Uit
+ Uit
+ 60 Hz
+ 50Hz
+ Auto
+ Algoritmes tegen flikkeren.
+\n%s
+ Rode ogen reductie
+ Zaklamp
+ Flits aan
+ Automatische flits
+ Geen flits
+ Slow motion uitgeschakeld
+ Slow motion ingeschakeld
+ Normaal
+ Snelheid
+ 200
+ 150
+ 100
+ 50
+ 40
+ 30
+ 25
+ 20
+ 15
+ 12
+ 10
+ 8
+ 6
+ 5
+ 4
+ 3
+ 2
+ Aantal foto\'s
+ 20
+ 15
+ 12
+ 10
+ 8
+ 6
+ 5
+ 4
+ 3
+ 2
+ Aantal foto\'s
+ Geen
+ mm/dd/jjjj
+ dd/mm/jjjj
+ jjjj-mm-dd (ISO 8601)
+ Standaard
+ Enkel DNG (RAW)
+ Standaard en DNG (RAW)
+ Neen
+ Verwerken…
+ Tekst op te slagen in de afbeelding metadata, copyright tag (enkel JPEG formaat, laat leeg indien niet gebruikt)
+ Copyright
+ Tekst op te slagen in de afbeelding metadata, artiest tag (enkel JPEG formaat, laat leeg indien niet gebruikt)
+ Artiest
+ Specifieke EXIF-tags
+ Standaard
+ Hoge snelheid
+ in het midden
+ onder aan het scherm
+ boven aan het scherm
+ rechts van het scherm
+ links van het scherm
+ Gezichten
+ Gezicht
+ Doneer
+ Nieuwigheden:
+ Whiteboard
+ Overbelicht
+ Sepia
+ Poster
+ Geen
+ Negatief
+ Mono
+ Schoolbord
+ Water
+ Theater
+ Zonsondergang
+ Sport
+ Sneeuw
+ Portret
+ Feest
+ Nacht-portret
+ Nacht
+ Landschap
+ Vuurwerk
+ Auto
+ Kaarslicht
+ Strand
+ Barcode
+ Actie
+ Manueel
+ Warm
+ Schemering
+ Schaduw
+ Gloeilamp
+ Fluorescerend
+ Daglicht
+ Bewolkt
+ Auto
+ HDR afbeelding kon niet gemaakt worden
+ Initialisatie audio opname mislukt
+ Opname bezig…
+ Hervat video opname
+ Pauzeer video opname
+ Video hervat
+ Video gepauzeerd
+ Toon het icoon om foto\'s en video\'s op te nemen. Schakel dit uit als je liever foto\'s neemt op een andere manier (bv. als jouw toestel een sluiterknop heeft, of met de volume knoppen).
+ Toon \"Neem Foto\" icoon
+ 1 uur
+ 45 minuten
+ 30 minuten
+ 25 minuten
+ 20 minuten
+ 15 minuten
+ 12 minuten
+ 11 minuten
+ 10 minuten
+ 9 minuten
+ 8 minuten
+ 7 minuten
+ 6 minuten
+ 5 minuten
+ 4 minuten
+ 3 minuten
+ 2 minuten
+ 1 minuut
+ 30 seconden
+ 15 seconden
+ 10 seconden
+ 5 seconden
+ 3 seconden
+ Onbeperkt
+ Maak een ondertitel (.SRT) bestand dat de datum en tijd bevat; en ook GPS info indien locatie/kompas data is ingeschakeld. (Vanaf Android 11+ moet hiervoor de optie \"Meer camera instellingen/Storage Access Framework ingeschakeld zijn).
+\n%s
+ Video ondertitels
+ Toon kompas richting lijnen
+ Toon kompas richting lijnen
+ DRO
+ Reset
+ Bepaald of de afbeeldingen van de voor camera worden gespiegeld
+\n%s
+ Spiegel front camera
+ Selfie
+ Video opnemen
+ Camera
+ Maakt snellere opnames mogelijk voor HDR/expo shots. Schakel dit uit wanneer je toestel problemen heeft met HDR of Expo modus.
+ Activeer snelle HDR/expo-Burst
+ Ernstige camera fout
+ Sluitertijd
+ Licht
+ Donker
+ Stop met video opname wanneer de batterij bijna leeg is. Dit helpt het risico te verminderen dat video\'s onleesbaar worden door plotseling uitvallen van de stroom.
+ Controle batterij lading
+ Video gestopt
+\nBatterij bijna leeg
+ Niet genoeg vrije opslagruimte om video op te nemen
+ s
+ Originele afbeeldingen niet opslaan
+ Bewaar ook de originele afbeeldingen in ruisonderdrukking modus. Merk op dat foto\'s opslagen veel langzamer verloopt.
+\n%s
+ Ruisonderdrukking originele afbeeldingen
+ Gebruik alternatieve flash methode
+ Debugging opties
+ Debugging opties
+ Locatie toegang is vereist voor geotagging (Opslaan van locatie data in foto\'s en video\'s, inclusief stempel en ondertitel opties). Locatie toegang is ook vereist (voor Android 11 en oudere versies) om te verbinden met Bluetooth LE afstandsbedieningen.
+ Opslag lees/schrijf toestemming is vereist om foto\'s op te slagen
+ Camera toestemming is vereist om de camera te activeren
+ Wanneer ingeschakeld, dan zullen in HDR modus de drie basis-belichting afbeelding samen met de uiteindelijke HDR foto opgeslagen worden. Merk op dat het opslagen langer duurt, zeker in combinatie met opties zoals \"Foto Stempel\" of \"Auto-level\".
+ HDR modus is handig voor shots met een grote variatie van lichtinval. Het werkt door verschillende shots met verschillende belichtingen te nemen, en die dan samenvoegen tot de uiteindelijke foto.
+\n
+\nMerk op dat HDR is niet geschikt for scènes met snelle beweging, en kan resulteren in minder accurate kleurweergave.
+\n
+\nFoto\'s nemen in HDR modus gaat langzamer.
+ DNG bestanden bevatten de volledige informatie van je camera, zonder compressie of bewerking.
+\n
+\nMerk op dat niet elke galerij app DNG bestanden herkent. DNG afbeeldingen kunnen gebruikt worden bij gespecialiseerde foto editors.
+\n
+\nMerk op dat verschillende bewerking opties, waaronder Stempel foto\'s en Auto-level, enkel beschikbaar zijn bij niet-DNG (JPEG/enz) afbeeldingen.
+ Bovenliggende map
+ 60 Mbps
+ 50 Mbps
+ 40 Mbps
+ 30 Mbps
+ 20 Mbps
+ 15 Mbps
+ 10 Mbps
+ 9 Mbps
+ 8 Mbps
+ 7 Mbps
+ 6 Mbps
+ 5 Mbps
+ 4 Mbps
+ 3 Mbps
+ 2 Mbps
+ 1 Mbps
+ Focus ondersteuning
+ Hoge kwaliteit
+ Snel
+ Minimaal
+ Uit
+ Standaard
+ Ruisonderdrukking algoritme
+ Verwerking instellingen…
+ ft
+ Voet
+ Meter
+ Gebruikt voor GPS hoogte voor foto stempels en video ondertitels.
+\n%s
+ Afstand eenheid
+ Onbekend
+ Hoog
+ Medium
+ Laag
+ Onbetrouwbaar
+ Het kompas van je toestel moet gekalibreerd worden om de precisie te verbeteren. Dit kan je doen door je toestel te bewegen in een 8 figuur.
+\n
+\nHuidige precisie:
+ Kompas richting
+ Geeft de geluidssterkte op het scherm weer tijdens video-opnames
+ Toon audio indicatie
+ Sta foto\'s toe tijdens video opname
+ Informatie over Camera
+ Open Source licenties
+ Selecteer het bestandsformaat om foto\'s op te slagen. Dit is van toepassing op \"standaard\" (niet RAW) foto\'s. Opslag van Exif metadata wordt enkel bij JPEG bestanden ondersteund. Merk op dat het PNG niet werkelijk lossless is, maar in plaats daarvan geconverteerd vanuit JPEG aan 100%% kwaliteit.
+\n%s
+ Diafragma
+ Camera is gebaseerd op Camera
+ Camera gebruikt pictogrammen van Google\'s Material Design icons (https://developer.android.com/design/downloads/index.html , https://design.google.com/icons/ , https://github.com/google/material-design-icons/ , https://google.github.io/material-design-icons/) onder de Apache licentie versie 2.0. Sommige pictogrammen zijn aangepast. Tik hier voor de volledige licentie tekst.
+ Google Material Design pictogrammen
+ Camera is © 2013–2019 Mark Harman, uitgebracht onder de GPL v3 of later. Tik hier voor de volledige licentie tekst.
+ Camera
+ Camera maakt gebruik van de camera sensor en microfoon om te kunnen werken. De microfoon wordt ook gebruikt voor de optionele \"Audio besturing\".
+\nMachtiging voor opslagruimte is nodig om foto\'s en video\'s op te slagen op je toestel.
+\nLocatie machtiging is vereist voor de optionele geotagging functies (voor foto\'s en video\'s, inclusief stempel en ondertitel opties). Wanneer relevante optie(s) zijn ingeschakeld zal de locatie opgeslagen worden in foto/video/ondertitel bestanden. Locatie toegang is ook vereist om verbinding te maken met een Bluetooth afstandsbediening.
+\nOmdat Camera ook gebruikt maakt maakt besturingssysteem API\'s, zou je ook het bijhorende privacybeleid moeten doornemen voor, onder andere, je toestel, fabrikant, besturingssysteem en/of Google Accounts. Bijvoorbeeld:
+\n*De optionele stem besturing maakt gebruik van de Android spraak herkenning service. Wanneer ingeschakeld zal audio data waarschijnlijk verzonden worden naar externe servers om spraakherkenning uit te voeren.
+\n*De \"Addressen\" optie voor foto stempels of video ondertitels maakt gebruik van Android Geocoder API. Wanneer ingeschakeld is het nodig om locatie data over internet te versturen naar een derde partij (Dit hangt af van welke backend service geïnstalleerd zijn op je toestel).
+\n*Apps/services zoals cloud services kunnen de foto\'s en video\'s op je toestel automatisch uploaden.
+ Schakel dit in als je apparaat onvolmaakt flits gedrag heeft met Camera2 API
+ Toegang tot de microfoon is vereist om video met geluid op te nemen alsook om de \"Audio beheer\" opties te kunnen gebruiken
+ Belichting Bracketing
+ Auto-level zal automatisch foto\'s roteren, zodat ze waterpas staan.
+\n
+\nLet op dat dit betekent dat foto\'s een kleinere resolutie zullen hebben (door het roteren en bijsnijden dat benodigd is).
+ Stop beluisteren van geluid
+ Start beluisteren van geluid
+ Indien ingeschakeld zal de flitser langzaam knipperen tijdens een video opname (kan gebruikt worden als indicatie dat de camera aan het opnemen is)
+ Flits tijdens het opnemen van een video
+ Toon kleurmarkering wanneer camera ongeveer waterpas staat
+ Toon de huidige apparaat oriëntatie hoek op het scherm
+ Meeslepende modus
+ Foto\'s zullen gedraaid worden, zodat ze automatisch waterpas staan (alleen foto\'s) (langzamer om foto\'s te maken, en kan mislukken op apparaten met te weinig geheugen)
+ Hoek/hoogte markeringskleur
+ Scherm Zaklamp
+ Scherm Flits Aan
+ Scherm Flits Auto
+ Toon horizontale veldlijnen
+ Toon veldlijnen
+ Niveau kalibratie reset
+ Niveau gekalibreerd
+ Kalibreer
+ Plaats uw toestel op een plat horizontaal oppervlak zodat het waterpas ligt (in staande of liggende positie) en selecteer vervolgens Kalibreren.
+\n
+\nDruk op Reset om de kalibratie van uw toestel te verwijderen.
+\n
+\nDruk op de knop Terug om te annuleren.
+ Met deze optie wordt de versnellingsmeter van het toestel gekalibreerd, zodat de opties voor automatisch waterpas stellen en waterpas/hoek op het scherm correct werken
+ Kalibreer waterpashoek
+ Sla alle originele afbeeldingen op (langzaam)
+ Enkel originele afbeelding opslaan
+ Stabiele foto
+ Antibanding
+ Blootstelling Bracketing
+ Expo {}
+ Laatste foto genomen
+ Selecteer afstandsbediening
+ Video beeld profielen
+ Wanneer mogelijk, haal het adres op met de GPS locatie (voor foto stempel of video ondertitels). Merk op dat, wanneer ingeschakeld, het vereist is dat je toestel locatie data via het internet verstuurd naar een derde partij die GPS data omzet naar een adres. Ref: https://developer.android.com/reference/android/location/Geocoder . Deze functie voorziet geen garantie voor accuraatheid en beschikbaarheid. De resultaten zijn een schatting en niet gegarandeerd relevant of correct.
+\n%s
+ Neem een foto/video wanneer een geluid is gedetecteerd. Als dit is ingeschakeld, gebruik de microfoon knop op het scherm om te starten/stoppen detecteren.
+\n%s
+ Selecteer Camera2 API om extra functies in te schakelen zoals manuele belichting, focus, wit balans en RAW (indien ondersteund door jouw toestel). De API wijzigen zal de app doen herstarten.
+\n%s
+ Zoekbalk om belichting compensatie te wijzigen
+ Om een panorama foto te nemen, houdt uw toestel vast voor een portret opname en klik om de panorama foto te starten. Draai daarna te toestel naar links of rechts totdat de witte cirkel in het midden overlapt met de blauwe cirkel. Nadat een nieuwe afbeelding is opgenomen, draai je jouw toestel verder tot je een nieuwe blauwe cirkel overlapt.
+\n
+\nTik op het vinkje om de panorama op te slaan, of het kruisje om te annuleren.
+\n
+\nMerk op dat panorama foto\'s tijd kunnen kosten om te verwerken en op te slaan.
+ Flash modi
+ Log profiel
+ Log (Extra sterk)
+ Log (Sterk)
+ Log (Medium)
+ Log (Laag)
+ Log (Fijn)
+ Voor de panorama modus, verwijder de golvende randen
+\n%s
+ Tekst met schaduw achtergrond
+ Gewone tekst
+ Tekst met schaduw
+ Lage belichting modus: hou a.u.b. de camera zo stil mogelijk
+ Deblokkeer belichting
+ Geeft een icoon weer om de automatische belichting te vergrendelen
+ Toon auto belichting vergrendeling icoon
+ Uitschakelen auto-uitlijnen
+ Inschakelen auto-uitlijnen
+ Geeft een icoon weer om automatisch uitlijnen in/uit te schakelen. Wanneer dit is ingeschakeld, zullen foto\'s automatisch gedraaid worden om gelijk te lopen met de horizon.
+ Toon auto-uitlijn icoon
+ Focus bracketing geannuleerd
+ Zoom in wanneer de manuele focus afstand wordt aangepast
+\n%s
+ Edge mode algoritme
+ Toon informatie over nieuwe functies en verbeteringen wanneer de applicatie is bijgewerkt
+ Toon nieuwigheden
+ Voeg oneindige afstand toe
+ Focus bracketing doel afstand
+ Focus bracketing bron afstand
+ Focus Bracketing
+ Focus {}
+ Onbewerkt
+ Geoptimaliseerd voor spraakherkenning
+ Geoptimaliseerd voor spraakgesprekken
+ Camcorder
+ Staat toe foto\'s te nemen tijdens video opnames. Deactiveer dit als er problemen zijn met video opnames terwijl Camera2 API is ingeschakeld op je toestel.
+ Geselecteerde afbeelding
+ Overlap een afbeelding om te helpen met uitlijnen.
+\n%s
+ Nabeeld
+ Aantal stops die worden opgeteld/afgetrokken voor de lichtste/donkerste afbeelding
+\n%s
+ Belichtingsreeks stops
+ Aantal beelden voor belichtingsreeks
+\n%s
+ geen burst
+
\ No newline at end of file
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 57cccefcbf53fa0eaacef4a1e683909ee258317c..ed8e9847f6d051a3a3fa3a165cefb94ff986307e 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -1,6 +1,6 @@
- Open Camera
+ Camera
Ustawienia
Ustawienia wyskakujących okienek
OK (Ta wiadomość nie pokaże się ponownie)
@@ -116,7 +116,7 @@
Przedrostek używany w nazwach plików filmów
Format czasu w nazwie pliku
Pokaż aparat, gdy zablokowany
- Jeśli włączono, aplikacja Open Camera będzie widoczna ponad ekranem blokady (dostęp do opcji, galerii itp. wymaga odblokowania)
+ Jeśli włączono, aplikacja Camera będzie widoczna ponad ekranem blokady (dostęp do opcji, galerii itp. wymaga odblokowania)
Automatyczna ostrość podczas uruchamiania
Autofokus będzie uruchamiany podczas włączania aplikacji. Jeśli występuje problem z włączaniem lampy błyskowej podczas uruchamiania, wyłącz tę opcję
Blokuj ekranu podczas nagrywania filmu
@@ -161,7 +161,7 @@
Ramka
Wyświetla ramkę wokół ekranu po wykonaniu zdjęcia
Utrzymuj ekran włączony
- Ekran nie wyłączy się jeśli aplikacja Open Camera będzie aktywna
+ Ekran nie wyłączy się jeśli aplikacja Camera będzie aktywna
Wymuś maksymalną jasność
Wymusza maksymalną jasność ekranu pomijając ustawienie systemu operacyjnego urządzenia
Ustawienia zdjęć i filmów
@@ -216,12 +216,12 @@
Źródło dźwięku
Wybór mikrofonu, z którego będzie nagrywany dźwięk\n%s
Źródło dźwięku
- Wybór między dźwiękiem mono a stereo (dostępne tylko na niektórych urządzeniach)\n%s
+ Wybór między dźwiękiem mono a stereo (dostępne tylko na niektórych urządzeniach)
Błysk podczas nagrywania
Jeśli włączono, lampa błyskowa będzie się włączać i wyłączać (przydatne w przypadku gdy chcemy z większej odległości stwierdzić czy kamera wciąż nagrywa)
Różne
Pomoc on-line
- Otwiera stronę aplikacji Open Camera w przeglądarce internetowej
+ Otwiera stronę aplikacji Camera w przeglądarce internetowej
Przekaż darowiznę
Jeśli spodobała ci się ta aplikacja rozważ przekazanie darowizny, która wesprze rozwój aplikacji. Możesz to zrobić poprzez zakup specjalnej aplikacji - dotknij tutaj, aby otworzyć stronę. Dzięki!
Camera2 API
@@ -230,7 +230,7 @@
Informacje o aplikacji i debugowanie
Resetuj ustawienia
Resetuje wszystkie ustawienia do wartości domyślnych
- Na pewno chcesz przywrócić wszystkie ustawienia aplikacji Open Camera do wartości domyślnych?
+ Na pewno chcesz przywrócić wszystkie ustawienia aplikacji Camera do wartości domyślnych?
Dostępne
Niedostępne
Kopiuj do schowka
@@ -638,7 +638,7 @@
Menedżer ustawień
Zapisz ustawienia
- Zapisuje wszystkie ustawienia aplikacji Open Camera do pliku
+ Zapisuje wszystkie ustawienia aplikacji Camera do pliku
Nazwa zapisanych ustawień
Przywróć ustawienia
@@ -708,7 +708,7 @@
Bluetooth niewspierany.
Nieznane urządzenie
Przyciemnij ekran, jeśli nastąpi rozłączenie
- Wskazówka: ustaw domyślną jasność na minimalny poziom przed uruchomieniem aplikacji Open Camera.
+ Wskazówka: ustaw domyślną jasność na minimalny poziom przed uruchomieniem aplikacji Camera.
Użyj słonej wody do obliczeń głębokości
W przypadku obudów podwodnych poprawia dokładność, jeśli zostanie wybrany właściwy rodzaj wody.
Połączono zdalnie
@@ -746,7 +746,7 @@
99%
100%
-
+
Uwydatnienie ostrości
Jeśli ta opcja jest włączona, na ostrych krawędziach (konturach) zostaną pokazane podświetlenia. Jest to przydatne przede wszystkim przy ręcznym ustawianiu ostrości i może pomóc w określeniu, które obszary obrazu są ostre.\n%s
Wyłączono
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 5784f0cd81fb449b0a14ac8fff8c85c2f62ccc68..e19e83293ed5afa72eeffae8f6a94f38139fe302 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -1,7 +1,7 @@
- Open Camera
+ Camera
Configurações
Configurações rápidas
OK (Essa mensagem não será mostrada novamente)
@@ -108,7 +108,7 @@
Salvar prefixo de vídeo
O prefixo usado para salvar o nome dos arquivos de vídeo
Mostrar câmera quando travado
- Se habilitado, o Open Camera ainda será exibido acima de qualquer tela de bloqueio
+ Se habilitado, o Camera ainda será exibido acima de qualquer tela de bloqueio
Travar tela enquanto filma
Trava a tela enquanto filma para prevenir falhas acidentais na filmagem. Deslize na tela para desbloquear.
Rotação de visualização
@@ -145,7 +145,7 @@
Mostrar animação para captura de fotos
Exibe uma animação quando uma foto é tirada
Manter a tela ligada
- Se habilitada, a tela não desligará enquanto a IU do Open Camera estiver aberta
+ Se habilitada, a tela não desligará enquanto a IU do Camera estiver aberta
Forçar brilho máximo
Força a exibição da tela a ser em brilho máximo, em vez de no padrão do dispositivo
@@ -329,6 +329,14 @@
Interface para canhoto
Interface para destro
+ About
+ Versão de compilação
+ A câmera é bifurcada no Camera
+ Autor
+ Código fonte
+ Licença
+ Informações da câmera
+ Termos de serviço
Desligado
Somente esconder as teclas virtuais de navegação
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index ec539c33beb7999e3fb304de3cf6ab4477ac5f38..98b5753d00e2e44ab2d6f9e49988a1fc11d08781 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -1,7 +1,7 @@
- Open Camera
+ Camera
Definições
Definições rápidas
OK (Esta mensagem não será mostrada novamente)
@@ -118,9 +118,9 @@
O prefixo usado para guardar o nome dos ficheiros dos vídeos
Fuso horário do nome dos ficheiros
Mostrar câmara quando bloqueado
- Se ativado, o Open Camera continuará a ser mostrado acima de qualquer ecrã de bloqueio (terá na mesma de desbloquear para aceder às Definições, Galeria, etc.)
+ Se ativado, o Camera continuará a ser mostrado acima de qualquer ecrã de bloqueio (terá na mesma de desbloquear para aceder às Definições, Galeria, etc.)
Efetuar autofocagem na inicialização
- Autofocar quando o Open Camera é iniciado. Se tiver o problema de o flash ligar no início, desative esta opção
+ Autofocar quando o Camera é iniciado. Se tiver o problema de o flash ligar no início, desative esta opção
Bloquear ecrã durante a gravação de vídeo
Durante a gravação de vídeo, a interface será bloqueada para prevenir parar a gravação acidentalmente. Deslize o ecrã para desbloquear. Note que a gravação de vídeo será sempre parada se a aplicação entrar em segundo plano ou se o ecrã for desligado.
Rodar pré-visualização
@@ -162,7 +162,7 @@
Mostrar contorno quando tirada uma fotografia
Exibir contorno no ecrã para indicar que está a ser tirada uma fotografia
Manter ecrã ligado
- Se ativado, o ecrã não será desligado se a interface principal do Open Camera estiver ativa
+ Se ativado, o ecrã não será desligado se a interface principal do Camera estiver ativa
Forçar brilho máximo
Forçar o ecrã a estar com o brilho máximo, em vez da predefinição do dispositivo
@@ -217,13 +217,13 @@
Fonte de áudio
O microfone usado na gravação de áudio\n%s
Canais de áudio
- Especificar mono ou estéreo para a gravação de áudio (estéreo apenas é suportado em alguns dispositivos)\n%s
+ Especificar mono ou estéreo para a gravação de áudio (estéreo apenas é suportado em alguns dispositivos)
Flash durante a gravação de vídeo
Se ativado, o flash será ligado/desligado durante a gravação de vídeo (pode ser usado para verificar à distância se câmara ainda está a gravar)
Diversos
Ajuda online
- Abrir o website do Open Camera no seu navegador
+ Abrir o website do Camera no seu navegador
Doar para apoiar o desenvolvimento
Se gosta desta aplicação, por favor concidere fazer um donativo para apoiar o desenvolvimento. Pode fazê-lo ao comprar a minha "aplicação de donativo" - clique nesta opção para abrir a página da minha aplicação de donativo. Obrigado!
Usar API Camera2
@@ -231,8 +231,8 @@
Sobre
Informações da aplicação e de depuração
Repor definições
- Repor todas as definições do Open Camera para as predefinidas
- Tem a certeza que pretende repor todas as definições do Open Camera para as predefinidas?
+ Repor todas as definições do Camera para as predefinidas
+ Tem a certeza que pretende repor todas as definições do Camera para as predefinidas?
Disponível
Não disponível
@@ -418,6 +418,14 @@
Texto sombreado
Texto simples
+ About
+ Versão de compilação
+ A câmera é bifurcada no Camera
+ Autor
+ Código fonte
+ Licença
+ Informações da câmera
+ Termos de serviço
Desligado
Apenas ocultar os botões de navegação virtuais
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a6b3daec9354f9ae75cdf8d94a67446c6227dd96
--- /dev/null
+++ b/app/src/main/res/values-ro/strings.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index a73f3a30e4645ad875cf601fb7ed24cad3f969e9..2a34b4b92764aad935b7cdc3094ddfcb9bcf88f9 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -1,15 +1,12 @@
-
- Open Camera
+ Камера
Настройки
Настройки всплывающих окон
- Ок (Это сообщение больше не появится)
-
- Вкл
- Выкл
-
- Выберите папку для сохранения:
+ Ок (Это сообщение больше не появится.)
+ Включено
+ Выключено
+ Выберите папку сохранения:
Очистить историю папки
Очистить историю папки?
Выбрать другую папку
@@ -39,7 +36,7 @@
Не удалось сохранить видеофайл
Не удалось записать видео
Запись видео
- К сожалению
+ Извините
Не удалось сохранить фото
Не удалось сохранить фото RAW
Не удалось стабилизировать
@@ -57,10 +54,9 @@
Цветовой эффект
Сцена
Баланс белого
-
Угол
Направление
- Не удалось открыть камеру
+ Не удалось открыть камеру.
Камера может быть использована
другим приложением?
ISO
@@ -68,10 +64,8 @@
Память
[Заблокировано:
Проведите по экрану, чтобы разблокировать]
-
Не удалось добавить отметку
м
-
Эффекты
Автостабилизация
Изображение будет стабилизироваться. Не рекомендуется на слабых устройствах
@@ -89,7 +83,6 @@
Игнорирование системной ориентации экрана устройства\n%s
Распознавание лиц
Распознавание лиц в объективе для фокусировки
-
Управление
Таймер
Звук таймера
@@ -100,7 +93,7 @@
Интервал в пакетном режиме
Дополнительные настройки…
Касание для съемки
- Делать снимок по одинарному или двойному касанию области просмотра
+ Сделать снимок или записать видео по одинарному или двойному касанию области просмотра
Пауза после съёмки
Пауза после снятия фото, с возможностью поделиться или удалить фотографию
Звук затвора
@@ -112,21 +105,22 @@
Чувствительность уровня шума для управления звуком (опция \"громкий шум\")
Папка сохранения
Имя папки для сохранения фото и видео (также может быть полный путь)
- Использовать Storage Access Framework для сохранения фото и видео
+ Использовать Storage Access Framework
+ Использовать Storage Access Framework для сохранения фото и видео. Эта опция должна быть включена, чтобы разрешить сохранение на внешние SD-карты. На Android 10+ эта опция должна быть включена, если вы хотите сохранять в папке вне DCIM.
Префикс для фото
Префикс имен файлов для сохраняемых фото
Префикс для видео
Префикс имен файлов для сохраняемых видео
Формат времени для имени файла
Камера на экране блокировки
- Если включено, то Open Camera будет отображаться поверх экрана блокировки (вы можете получить доступ к настройкам, галерее и т.д.)
+ Если включено, то Camera будет отображаться поверх экрана блокировки (вы можете получить доступ к настройкам, галерее и т.д.)
Автофокус при запуске
- Включить автофокус при запуске Open Camera. Если у вас проблемы со включением вспышки при запуске, отключите эту опцию
+ Включить автофокус при запуске Camera. Если у вас проблемы со включением вспышки при запуске, отключите эту опцию
Блокировать экран при записи видео
При записи видео графический интерфейс будет заблокирован для предотвращения случайной остановки записи. Проведите по экрану, чтобы разблокировать. Обратите внимание, что запись видео остановится, если приложение перейдет в фоновый режим или погаснет экран.
Поворот предпросмотра
Возможность поворота предпросмотра (не повлияет на фото/видео)\n%s
- Настройки интерфейса…
+ Экранный интерфейс…
Размер предпросмотра
Расположение интерфейса
Режим погружения
@@ -153,20 +147,20 @@
Показать батарею
Отображение текущего уровня заряда батареи
Показать сетку
- Сетка
+ Сетка
+
Руководство по обрезке
Отображение прямоугольника, показывающего соотношение сторон - полезно, если вы планируете обрезать фото/видео. Требуется режим фотосъемки WYSIWYG или режим видео\n%s
- Всплывающие сообщения
+ Показывать всплывающие сообщения
Показывать всплывающие уведомления при работе
Показать анимацию эскиза
Отображение анимации перемещения эскиза при съемке фотографии
Показывать рамку во время фотосъемки
Показывать рамку на экране для индикации фотосъемки
Не выключать дисплей
- Если включено, экран не будет выключаться, пока Open Camera открыта
+ Если включено, экран не будет выключаться, пока Camera открыта
Максимальная яркость
Включение максимальной яркости во время съемки
-
Качество фото и видео
Настройки фото…
Настройки видео…
@@ -198,9 +192,9 @@
Сохранять фото в фоновом потоке (для ускорения работы)
Разрешение видео
Качество видео 4K UHD (экспериментально)
- При выборе разрешения (3840х2160) для записи через заднюю камеру она будет работать только, если ваше устройство поддерживает данный формат!
- Включить стабилизацию видео
- Стабилизация видео уменьшает тряску в связи с движением камеры
+ При выборе разрешения (3840х2160) для записи через заднюю камеру она будет работать только, если ваше устройство поддерживает данный формат.
+ Включить цифровую стабилизацию видео
+ Стабилизация видео уменьшает тряску в связи с движением камеры как при предварительном просмотре, так и в записанных видео. Это может быть ненужным, если ваше устройство поддерживает оптическую стабилизацию изображения (OIS).
Битрейт видео (примерно)
Выбор битрейта видео. (чем выше, тем лучше качество, но файл будет занимать больше места на диске. Неподдерживаемый битрейт может стать причиной ошибки при записи видео).\n%s
Частота кадров видео (примерно)
@@ -216,15 +210,15 @@
Запись звука
Запись звука при записи видео
Источник звука
- Микрофон для записи звука\n%s
+ Микрофон для записи звука. Обратите внимание, что точное поведение опций зависит от того, как они реализованы на вашем устройстве.
+\n%s
Число каналов
- Настройка моно или стереозвука (стерео доступно не на всех устройствах)\n%s
+ Настройка моно или стереозвука (стерео доступно не на всех устройствах)
Вспышка во время записи видео
Если включено, вспышка будет включаться/выключаться при записи видео (можно использовать, чтобы выполнить запись на расстоянии)
-
Разное
Помощь в Интернете
- Открыть веб-сайт Open Camera в вашем браузере
+ Запустить веб-сайт Camera в вашем браузере
Пожертвовать
Если вам нравится это приложение, киньте мне копейку. Вы можете сделать это, купив мое приложение. Спасибо!
Использовать Camera2 API
@@ -232,13 +226,11 @@
О программе
Информация
Сброс настроек
- Сброс всех настроек Open Camera на стандартные значения
- Сбросить все настройки Open Camera на стандартные значения?
-
+ Сброс всех настроек Camera на стандартные значения
+ Сбросить все настройки Camera на стандартные значения?
Доступно
Недоступно
Копировать в буфер
-
Сделать фото
Галерея
Экспозиция
@@ -250,8 +242,7 @@
Переключиться в режим видео
Переключиться в режим фото
Удалить последний снимок
- Поделиться
-
+ Поделиться фото
Родительская папка
Новая папка
Невозможно записать в эту папку
@@ -259,38 +250,37 @@
Введите имя новой папки
Не удалось создать папку
Папка уже существует
-
Выберите место для сохранения
Storage Access Framework отменен
Не удалось сохранить в эту папку
-
Разрешение на доступ к микрофону отсутствует
Разрешение на доступ к файлам отсутствует
-
Начать запись видео
Остановить запись видео
-
Максимальный размер файла
- Мб
- Гб
-
+ Мб
+
+ Гб
+
Включить управление звуком
Выключить управление звуком
Скажите \"cheese\"
Создайте громкий шум
-
Автоматическая стабилизация будет поворачивать фотографии для их выравнивания.\n\nВажно: разрешение полученных фото слегка уменьшится из-за поворота и обрезки.
- Файлы DNG содержат несжатую и необработанную информацию с вашей камеры.\n\nБольшинство программ для просмотра изображений не поддерживают DNG. Их нужно открывать специальными программами.\n\nВажно: различные опции наподобие "Штамп на фото" или "Автоматическая стабилизация" работают только для изображений формата JPEG, а не DNG.\n\nФайлы DNG имеют большой объем. Для их копирования или удаления может быть полезен файловый менеджер.\n\nФайлы DNG сохраняются только в режиме фото "Стандарт".
+ Файлы DNG содержат несжатую и необработанную информацию с вашей камеры.
+\n
+\nБольшинство программ для просмотра изображений не поддерживают DNG. Их нужно открывать специальными программами.
+\n
+\nВажно: различные опции наподобие Штамп на фото или Автоматическая стабилизация работают только для изображений формата JPEG, а не DNG. Файлы DNG имеют большой объем. Для их копирования или удаления может быть полезен файловый менеджер. Файлы DNG сохраняются только в режиме фото Стандарт.
Режим HDR полезен для фото с большой разницей яркости. В нем делается несколько фото с различной экспозицией, которые объединяются в окончательное фото.\n\nВажно: HDR не рекомендуется для съемки кадров с быстрым движением, это может привести к менее корректной цветопередаче.\n\nСъемка фото в режиме HDR будет гораздо медленнее, чем в обычном режиме.
-
Больше не показывать
-
Режим фото
- Std
+ Стд
+
Стандартный
HDR
- Expo {}
+ Экспо {}
Брекетинг экспозиции
Серийная съемка
NR
@@ -298,70 +288,57 @@
Штамп на фото
Сохранять все изображения в режиме HDR
Если эта опция включена, то в режиме HDR вместе с окончательным фото HDR будут сохранены три основных фото экспозиции. Важно: сохранение фото будет медленнее, особенно при включенных опциях наподобие "Штамп на фото" или "Автоматическая стабилизация".
-
- РАЗРЕШЕНИЯ НЕДОСТУПНЫ
+ РАЗРЕШЕНИЯ НЕ ДОСТУПНЫ
Требуется разрешение
Требуется разрешение на доступ к камере для ее включения
- Требуется разрешение на определение местоположения для геотеггинга (хранение информации о местоположении
- внутри фото и видео). Разрешение на определение местоположения также требуется для подключения к устройствам удаленного управления по Bluetooth LE (Android 11 or earlier).
-
+ Требуется разрешение на определение местоположения для геотеггинга (хранение информации о местоположении внутри фото и видео, включая опции штампа и субтитров). Разрешение на определение местоположения также требуется (по крайней мере, для Android 11 и более ранних версий) для подключения к устройствам удаленного управления по Bluetooth LE.
Настройки отладки
Настройки отладки
Использовать альтернативный способ вспышки
Включите, если у вашего устройства проблемы со вспышкой в Camera2 API
-
Брекетинг экспозиции
Количество изображений для режима брекетинга экспозиции\n%s
Остановки брекетинга экспозиции
Число остановок для каждого изображения\n%s
-
Снижение шума: оригинальные изображения
Сохранение оригинальных изображений в режиме снижения шума. Важно: сохранение фото может замедлиться.\n%s
-
Не сохранять оригинальные изображения
Сохранять одно оригинальное изображение
Сохранять все оригинальные изображения (медленно)
-
- сек
-
+ сек
+
Недостаточно свободного места для записи видео
Запись видео остановлена\nКритически низкий уровень заряда батареи
Проверка критического состояния батареи
Остановить запись видео, если уровень заряда батареи критически низок. Это поможет уменьшить риск повреждения видео при внезапном выключении устройства из-за нехватки заряда батареи.
-
- Темный
- Светлый
+ Темный
+
+ Светлый
+
Выдержка
-
Серьезная ошибка камеры
-
Включить быструю съемку в режиме HDR/экспозиции
Позволяет быстрее захватывать снимки в режиме HDR/экспозиции. Отключите, если у вашего устройства проблемы с фотосъемкой в режиме HDR или экспозиции (прекращение работы камеры или неправильный порядок экспозиции фотографий).
-
Камера
Записать видео
Селфи
-
Зеркалить фронтальную камеру
Отражать изображения зеркально при использовании фронтальной камеры\n%s
-
Калибровать уровень угла
- Эта настройка калибрует акселерометр вашего устройства для корректной работы автоматической стабилизации и настроек наэкранного уровня/угла.
+ Эта настройка калибрует акселерометр вашего устройства для корректной работы автоматической стабилизации и настроек наэкранного уровня/угла
Поместите ваше устройство на ровную горизонтальную поверхность для установки уровня (в портретной или ландшафтной ориентации), затем выберите "Откалибровать".\n\nНажмите "Сбросить" для удаления калибровки с вашего устройства.\n\nНажмите "Назад" для отмены.
Откалибровать
Сбросить
Уровень откалиброван
Сброс уровня калибровки
-
DRO
-
Отображать делительные линии
Отображать горизонтальные делительные линии на экране
Отображать линии направления компаса
Отображать линии направления компаса на экране
Субтитры видео
- Создавать файл субтитров (.SRT) с датой и временем записи, а также информацией GPS при включенных данных геолокации/направления\n%s
-
+ Создавать файл субтитров (.SRT) с датой и временем записи, а также информацией GPS при включенных данных геолокации/направления. На Android 11+ эта опция требует включения функции More camera controls/Storage Access Framework).
+\n%s
Без ограничений
3 секунды
5 секунд
@@ -386,20 +363,15 @@
30 минут
45 минут
1 час
-
- Показать кнопку съёмки
+ Показать кнопку съемки
Отображение кнопки фото- и видеосъемки. Полезно, если на вашем устройстве уже есть аппаратная кнопка спуска затвора.
-
Запись видео приостановлена
Запись видео продолжена
Приостановить запись видео
Приостановить запись видео
-
Захват…
-
Не удалось инициализировать прослушивание аудио
Не удалось создать изображение в режиме HDR
-
Автоматически
Облачно
Светлый день
@@ -409,7 +381,6 @@
Сумерки
Тепло
Вручную
-
Движение
Штрих-код
Пляж
@@ -426,7 +397,6 @@
Устойчивая камера
Закат
Театр
-
Аква
Черная доска
Моно
@@ -436,10 +406,8 @@
Сепия
Соляризация
Белая доска
-
Что нового:
Пожертвовать
-
лицо
лица
@@ -448,29 +416,23 @@
в верхней части экрана
в нижней части экрана
в центре
-
- Высокая скорость
-
+ Высокая скорость
+
По умолчанию
-
Пользовательские теги EXIF
Автор
Текст для хранения в метаданных изображения под меткой "автор" (только в формате JPEG). (Оставьте пустым при отсутствии.)
Авторское право
Текст для хранения в метаданных изображения под меткой "авторское право" (только в формате JPEG). (Оставьте пустым при отсутствии.)
-
Обработка…
-
Нет
Стандартное и DNG (RAW)
Только DNG (RAW)
-
По умолчанию
гггг-мм-дд
дд/мм/гггг
мм/дд/гггг
Нет
-
Количество фото
2
3
@@ -482,7 +444,6 @@
12
15
20
-
Количество фото
2
3
@@ -501,57 +462,49 @@
100
150
200
-
Скорость
Нормальная
Замедление движения включено
Замедление движения отключено
-
- Вспышка Выкл
+ Вспышка выключена
Вспышка Авто
- Вспышка Вкл
+ Вспышка включена
Фонарик
Красные глаза
Экранная вспышка: автоматически
Экранная вспышка: включено
Экранный фонарик
-
Антибэндинг
Алгоритмы для борьбы с мерцанием света.\n%s
Автоматически
50 Гц
60 Гц
Выкл.
-
Изображение-призрак
Наложение изображения поверх экрана для помощи с выравниванием.\n%s
Выкл.
Последнее фото
Выбранное изображение
-
Диалог выбора файла не найден на данном устройстве, изображение-призрак не поддерживается
Не удалось открыть данное изображение
-
Разрешать снимать фото во время записи видео
Разрешает снимать фото во время записи видео. Отключите при возникновении проблем с записью видео с включенным Camera2 API.
-
- Плоский профиль видео (log)
- Включить плоский профиль (log) для режима записи видео\n%s
- Выкл.
- Очень низкий
- Низкий
- Средний
- Высокий
- Очень высокий
- Профиль log
-
+ Профиль видеокартины
+ Установить стандартный или плоский профиль для режима записи видео
+\n%s
+ По умолчанию
+ Журналирование (Очень низкое)
+ Журналирование (Низкое)
+ Журналирование (Среднее)
+ Журналирование (Высокое)
+ Журналирование (Очень высокое)
+ Профиль журнала
Микрофон видеокамеры
Внешний микрофон (если есть)
По умолчанию
Оптимизировано для голоса
Оптимизировано для распознавания голоса
Без обработки
-
По умолчанию
100 kbps
200 kbps
@@ -578,43 +531,34 @@
100 Mbps
150 Mbps
200 Mbps
-
- no burst
-
+ Без ускорения
+
Показывать измеритель уровня звука
Показывать измеритель уровня звука на экране при записи видео
-
- Фокус {}
+ Фокус {}
+
Фокус-брэкетинг
-
Исходное расстояние фокус-брэкетинга
Целевое расстояние фокус-брэкетинга
-
Добавить бесконечное расстояние
-
Направление компаса
Необходимо откалибровать компас вашего устройства для улучшения точности. Это можно сделать, нарисовав устройством в воздухе цифру 8.\n\nТекущая точность:
-
Невозможно определить
Низкая
Средняя
Высокая
Неизвестно
-
Единицы расстояния
В них измеряется высота по GPS для штампов на фото и субтитров к видео\n%s
Метры
Футы
- фт
-
+ фт
+
Показывает диалог Что нового
Показывает информацию о новых возможностях и улучшениях при обновлении приложения
-
Алгоритм режима краев
Алгоритм, используемый драйвером камеры для улучшения краев. Улучшение краев увеличивает резкость и детализацию фото. (Данная настройка игнорируется в режиме снижения шума.)\n%s
-
Настройки обработки…
-
Алгоритм снижения шума
Алгоритм, используемый драйвером камеры для снижения шума. Алгоритм снижения шума пытается улучшить качество изображения путем удаления сильного шума, появляющегося в процессе захвате, особенно в темных условиях. (Важно: данная настройка не относится к режиму снижения шума на фото и фактически игнорируется в этом режиме.)\n%s
По умолчанию
@@ -622,18 +566,16 @@
Минимальный
Быстрый
Высокое качество
-
Помощь при фокусировке
Масштабировать при изменении фокусного расстояния вручную\n%s
Выкл.
2x
4x
-
Увеличивать или уменьшать экспокоррекцию
-
- Предыдущий
- Следующий
-
+ Предыдущий
+
+ Вперёд
+
Выкл
2x
3x
@@ -647,8 +589,8 @@
100x
200x
500x
- Навсегда
-
+ Навсегда
+
Без задержки
0.5 секунды
1 секунда
@@ -667,7 +609,6 @@
30 минут
1 час
2 часа
-
По умолчанию (зависит от устройства)
100 Мб
200 Мб
@@ -677,9 +618,7 @@
2 Гб
5 Гб
9 Гб
-
Фокус-брэкетинг отменен
-
Нет
1 (1:1)
1.25 (5:4)
@@ -692,7 +631,6 @@
2.33 (21:9)
2.35 (47:20)
2.4 (12:5)
-
+3 (высокая чувствительность)
+2
+1
@@ -700,114 +638,98 @@
-1
-2
-3 (низкая чувствительность)
-
Улучшение контрастности HDR
Использовать алгоритм улучшения контрастности для HDR. Может улучшить качество при очень высоком динамическом диапазоне в кадре, в результате чего изображение становится "похожим на HDR".\n%s
Выкл.
Умный
Всегда
-
Формат видео
- Кодеки и формат видео- и аудиофайлов\n%s
-
+ Кодеки и формат видео-и аудиофайлов\n%s
По умолчанию
MPEG4 H264
MPEG4 HEVC
3GPP
WebM (аудио не поддерживается)
-
Управление настройками
-
Сохранить настройки
- Сохраняет все настройки Open Camera в файл
+ Сохраняет все настройки Камеры в файл
Имя сохраненных настроек
-
Восстановить настройки
Восстанавливает ранее сохраненные настройки. Все текущие настройки будут перезаписаны сохраненными!
Позволяет выбрать ранее сохраненный файл настроек. Будьте осторожны: при выборе файла все текущие настройки будут перезаписаны!
-
Сохраненные настройки
Не удалось сохранить настройки
Не удалось восстановить настройки
Диалог выбора файла не найден на данном устройстве, настройка не поддерживается
-
Формат изображения
JPEG
WebP
PNG
-
- Режим NR
+ Режим снижения шума
Нормальный
Низкий уровень освещенности
-
Интерфейс для левши
Интерфейс для правши
Ярлыки в верхней части экрана (портретный режим)
-
Показывать ярлык распознавания лиц
Показывать на экране ярлык для включения или отключения распознавания лиц
- Включить распознавание лиц
- Отключить распознавание лиц
+ Включить распознавание лиц
+
+ Отключить распознавание лиц
+
Распознавание лиц включено
Распознавание лиц отключено
-
Показывать ярлык автоматического выравнивания
Показывать на экране ярлык для включения или отключения автоматического выравнивания. При включенном автоматическом выравнивании фотографии будут поворачиваться в соответствии с линией горизонта.
- Включить автоматическое выравнивание
- Отключить автоматическое выравнивание
-
+ Включить автоматическое выравнивание
+
+ Отключить автоматическое выравнивание
+
Показывать ярлык для штампа на фото
Показывать на экране ярлык для включения или отключения штампа на фото
- Включить штамп на фото
- Отключить штамп на фото
+ Включить штамп на фото
+
+ Отключить штамп на фото
+
Штамп на фото включен
Штамп на фото отключен
-
Показывать ярлык для пользовательского текстового штампа на фото
Показывать на экране ярлык ввода пользовательского текста для штампа на фото
-
Показывать ярлык для блокировки автоматического баланса белого
Показывать на экране ярлык для блокировки или разблокировки автоматического баланса белого
Заблокировать баланс белого
Разблокировать баланс белого
Баланс белого заблокирован
Баланс белого разблокирован
-
Показывать ярлык для блокировки автоматической экспозиции
Показывать на экране ярлык для блокировки или разблокировки экспозиции
Разблокировать экспозицию
-
Режим низкого уровня освещенности: пожалуйста, держите камеру в устойчивом положении
-
- Pano
+ Pano
+
Панорама
-
Удаленное управление по Bluetooth LE…
Включить удаленное управление по Bluetooth LE
Включить устройства удаленного управления по Bluetooth LE (BLE)
Тип удаленного устройства
-
BLE не поддерживается
Сканирование устройств по BLE
Bluetooth не поддерживается.
Неизвестное устройство
Выключать экран при отключении удаленного управления
- Подсказка: установите яркость по умолчанию на минимальный уровень перед запуском Open Camera.
+ Подсказка: установите яркость по умолчанию на минимальный уровень перед запуском Камеры.
Использовать Saltwater для более точных вычислений
При размещении под водой улучшает точность, если выбран правильный тип воды.
Удаленное устройство подключено
-
Использовать адреса
По возможности показывать адреса вместе с GPS-координатами
Предпочитать адреса GPS-координатам
Не показывать адреса
-
Показывать ярлык сохранения данных о местоположении
Показывать на экране ярлык для включения или отключения данных о местоположении (геотеггинг)
Сохранять данные о местоположении
Прекратить сохранять данные о местоположении
-
Показывать гистограмму
Показывать на экране гистограмму цветов\n%s
Выкл.
@@ -816,104 +738,88 @@
Значение (максимум)
Интенсивность (средняя)
Освещенность (средняя мин.-макс.)
-
Показывать полосы зебры
Если данная настройка включена, на экране будут появляться полосы зебры при чрезмерной экспозиции.\n%s
Выкл.
- 70%
- 80%
- 90%
- 93%
- 95%
- 97%
- 98%
- 99%
- 100%
-
+ 70%
+
+ 80%
+
+ 90%
+
+ 93%
+
+ 95%
+
+ 97%
+
+ 98%
+
+ 99%
+
+ 100%
+
Снижение фокусировки
Если данная настройка включена, грани (контуры) фокуса будут освещены. В основном это применяется для ручной фокусировки, также его можно использовать для определения зон изображения находящихся в фокусе.\n%s
Выкл.
Вкл.
Цвет снижения фокуса
Данный цвет будет использоваться для подсветки контуров фокуса\n%s
-
- Осталось
-
+ Осталось
+
Предпросмотр камеры…
-
Переключать вспышку
Показывать ярлык вспышки
- Показывать на экране ярлык для задания цикла вспышки вместо отображения настроек вспышки во всплывающем меню
-
+ Показывать на экране ярлык для задания цикла вспышки вместо отображения настроек вспышки во всплывающем меню. Обратите внимание, что вспышка недоступна при использовании этого значка.
Разрешать RAW для брэкетинга экспозиции
Настройка также предназначена для применения RAW для режима брэкетинга экспозиции фото (или для режима HDR, когда включена настройка \"Сохранять все изображения для режима HDR\"). Если данная настройка отключена, в данных режимах фото будут сохранены только в формате JPEG.
-
Разрешать RAW для фокус-брэкетинга
Настройка также предназначена для применения RAW для режима фокус-брэкетинга фото. Если данная настройка отключена, в режиме фокус-брэкетинга фото будут сохранены только в формате JPEG.
-
Переключать режимы RAW
Показывать ярлык RAW
Показывать на экране ярлык для переключения режимов RAW
-
Текущее удаленное устройство:
Сканировать
-
Текст с тенью
Обычный текст
Текст с тенью фона
-
Сохранение изображений…
-
Закончить панораму
Отменить панораму
Панорама отменена
Не удалось создать панораму
-
Автоматическая обрезка панорамы
Удалять волнистые края в режиме панорамы\n%s
-
Чтобы снять панораму, удерживайте ваше устройство в портретной ориентации и нажмите на кнопку снятия фото для начала формирования панорамы. Затем поворачивайте устройство влево или вправо, сдвигая белый круг в центре на синюю точку. После захвата нового изображения продолжайте поворачивать устройство, чтобы захватить следующую синюю точку.\n\nНажмите на галочку, чтобы сохранить панораму, или крестик, чтобы отменить ее.\n\nВажно: обработка и сохранение фото панорамы могут занять некоторое время.
-
Оригинальные изображения панорамы
Сохранять оригинальные изображения в режиме панорамы. Важно: фото панорам будут сохраняться медленнее. Также позволяет сохранять файл XML, который может быть полезен при сообщении об ошибках с панорамами.\n%s
-
Не сохранять оригинальные изображения
Сохранять оригинальные изображения
Сохранять оригинальные изображения и файл XML для отладки
-
- ID
-
+ ID
+
Шкала для изменения компенсации экспозиции
-
- Выберите формат файла для сохранения фото. Это влияет на \"обычные\" (не RAW) фото. Важно: формат PNG не является настоящим форматом "без потерь", вместо этого он конвертируется из JPEG со 100%% качеством.\n%s
-
+ Выберите формат файла для сохранения фото. Это влияет на \"обычные\" (не RAW) фото. Только JPEG поддерживает сохранение метаданных Exif. Важно: формат PNG не является настоящим форматом без потерь, вместо этого он конвертируется из JPEG со 100%% качеством.
+\n%s
Camera API
Выберите Camera2 API, чтобы включить дополнительные возможности, например ручные режимы экспозиции, фокус, баланс белого, вместе с форматом RAW (если поддерживается устройством). При изменении API потребуется перезапуск.\n%s
Оригинальный API камеры
Camera2 API
-
- Снимать фото/видео при обнаружении шума.
+ Снимать фото/видео при обнаружении шума или по голосовой команде.
Если включено, используйте экранную кнопку микрофона для запуска/остановки слушания.
\n%s
-
По возможности использовать адрес при штамповании геолокации по GPS.
Если включено ваше устройство будет передавать данные геолокации сторонним лицам для преобразования GPS в адрес (developer.android.com/reference/android/location/Geocoder).
Не дает никаких гарантий доступности или точности. Результаты приблизительные.
\n%s
-
Коснитесь для фокуса и нажмите синюю кнопку камеры, чтобы сделать фото.
- \n\nДля отключения максимальной яркости экрана перейдите в Настройки/Настройки интерфейса…/\"Максимальная яркость\".
- Для сохранения на SD-карту на Android 5+ перейдите в Настройки/Дополнительные настройки…/\"Storage Access Framework\".
- Для получения подробностей нажмите \"Помощь в Интернете\" в меню Настройки.
-
-
+\n
+\nДля отключения максимальной яркости экрана перейдите в Настройки/Экранный интерфейс…/\"Максимальная яркость\". Для сохранения на SD-карту на Android 5+ перейдите в Настройки/Дополнительные настройки…/\"Storage Access Framework\". Для получения подробностей нажмите \"Помощь в Интернете\" в меню Настройки.
Выбрать удаленное устройство
-
REC709
sRGB
Гамма
-
Значение гаммы видео
Значение гаммы для видео при заданном профиле \"Гамма\"\n%s
1.6
@@ -926,54 +832,88 @@
2.4
2.6
2.8
-
Выключить
Только приглушить кнопки навигации
Скрыть кнопки навигации
Скрыть интерфейс
Скрыть все
-
Непрозрачность призрачного изображения
Значение альфа для призрачных изображений. Чем ниже значение, тем более прозрачным будет изображение, чем выше - тем более непрозрачным.\n%s
-
Цвет полос зебры на переднем плане
Цвет на переднем плане при отображении полос зебры.\n%s
Цвет полос зебры на заднем плане
Цвет на заднем плане при отображении полос зебры.\n%s
-
Черный
Красный
Оранжевый
Прозрачный
Белый
-
Внешняя камера
Ультраширокая камера
-
Переключиться на внешнюю камеру
Переключить камеру
Переключаться между несколькими камерами
Значок нескольких камер
Если включено, использовать отдельные кнопки для переключения между фронтальной/задней камерами и между несколькими фронтальными/задними камерами. Если отключено, значок \"Переключить камеру\" будет циклически переключать все камеры.
-
Показать ID камеры
Показывать номер ID текущей камеры на экране
-
Разрешать действия при долгом нажатии
При возможности разрешать действия при долгом нажатии (например, долгое нажатие на галерею для изменения пути сохранения).
-
Апертура
-
4K UHD
Битрейт
Частота кадров
Замедление времени
-
Сохранять связанную систему координат
Сохранять связанную систему координат устройства в EXIF фото в комментарии пользователя (только для формата JPEG)
-
Нет
Громкий шум
- Голосовая команда: \"cheese\"
-
-
+ Голосовая команда: \"cheese\"
+
+ Камера использует набор иконок из Material Design от Google (https://developer.android.com/design/downloads/index.html , https://design.google.com/icons/ , https://github.com/google/material-design-icons/ , https://google.github.io/material-design-icons/) под лицензией Apache версии 2.0. Некоторые значки включают модификации. Нажмите здесь для получения полного текста лицензии.
+ Значки Google Material Design
+ Камера © 2013-2023 Марк Харман, выпущена под лицензией GPL v3 или более поздней. Нажмите здесь для получения полного текста лицензии.
+ Камера
+ Open Source лицензии
+ Расширение: Украшательства / Ретушь лица
+ X-Укрошательства
+ Расширение: Боке
+ X-Боке
+ Расширение: Ночь
+ X-Ночь
+ Расширение: HDR
+ X-HDR
+ Расширение: Auto
+ X-Auto
+ Неизвестное устройство (разрешение на подключение Bluetooth недоступно)
+ Разрешения на сканирование/подключение Bluetooth необходимы для обнаружения и подключения к устройствам дистанционного управления работающим по Bluetooth LE.
+ Попробуйте включить эту опцию, если у вашего устройства возникают проблемы при съемке фотографий в режимах HDR или Expo-фото (если Expo-изображения получаются с одинаковой экспозицией). Актуально только в том случае, если также включена опция быстрого HDR/Expo ниже.
+ Включить фиктивный захват HDR/expo fix
+ Панель поиска для изменения текущего значения предпочтения
+ Доступ к микрофону требуется для записи видео со звуком, а также для использования опций \"Управление звуком\"
+ Для сохранения результирующих файлов, таких как фотографии или видео, требуется разрешение на чтение/запись из хранилища
+ ОБЪЕКТИВ
+ Пропустить
+ Вперёд
+ Назад
+ Условия предоставления услуг
+ Информация о приложении Камера
+ Лицензия
+ Исходный код
+ Авторы
+ Камера является форком Camera
+ Версия сборки
+ Для получения более качественных снимков держите камеру ровно.
+ Наложение тонов в HDR
+ Алгоритм, используемый для тонового отображения в режиме HDR-фотографии
+\n%s
+ Простое крепление
+ Экспоненциальный
+ По умолчанию
+ Удалять ли метаданные EXIF устройства с фотографий JPEG. Этот параметр не удаляет теги exif, применяемые другими настройками, которые применяют метаданные EXIF (например, местоположение/геотегирование). Эти другие параметры являются независимыми и отменяют данную настройку. RAW/DNG и видео не затрагиваются.
+\n%s
+ Не удалять EXIF-данные устройства
+ Удалить EXIF-данные устройства
+ Удалить EXIF-данные устройства
+ Удалить все, кроме даты/времени
+
\ No newline at end of file
diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml
index 7e57657da79990e012e25c97a8af4dcb433404b1..408f8503d4e9224e84f7e2144aac30e8704f761c 100644
--- a/app/src/main/res/values-sl/strings.xml
+++ b/app/src/main/res/values-sl/strings.xml
@@ -1,7 +1,7 @@
- Open Camera
+ Camera
Nastavitve
Nastavitve pojavnih oken
V redu (to sporočilo se ne bo več prikazovalo)
@@ -119,7 +119,7 @@
Predpona imena datotek videoposnetkov
Oblika časa za ime datoteke
Prikaži fotoaparat, ko je zaklenjeno
- Če je omogočeno, se bo Open Camera še vedno prikazoval nad zaklenjenim zaslonom (še vedno boste morali odkleniti za dostop do nastavitev, galerije itd.)
+ Če je omogočeno, se bo Camera še vedno prikazoval nad zaklenjenim zaslonom (še vedno boste morali odkleniti za dostop do nastavitev, galerije itd.)
Izvedi samodejno ostrenje ob zagonu
Ali naj se izvede samodejno ostrenje ob zagonu Open Camere. Če imate težavo z vklopom bliskavice ob zagonu, onemogočite to možnost
Zakleni zaslon ob snemanju videoposnetkov
@@ -218,13 +218,13 @@
Vir zvoka
Kateri mikrofon naj se uporabi za snemanje zvoka. Upoštevajte, da je podrobno vedenje te možnosti odvisno od načina vdelave te možnosti v napravo.\n%s
Zvočni kanali
- Določite mono ali stereo za snemanje zvoka (stereo je podprt samo na nekaterih napravah)\n%s
+ Določite mono ali stereo za snemanje zvoka (stereo je podprt samo na nekaterih napravah)
Svetilka med snemanjem videoposnetkov
Če je omogočeno, se bo ob snemanju videoposnetkov vklopila/izklopila svetilka (se lahko uporabi za prepoznavanje delovanja kamere na razdaljo)
Razno
Spletna pomoč
- Zaženi spletno stran Open Camera v brskalniku
+ Zaženi spletno stran Camera v brskalniku
Daruj za podporo razvoju
Če vam je ta program všeč, razmislite o darovanju, da podprete razvoj. To lahko naredite z nakupom mojega "programa za darovanje" - kliknite na to možnost za odpiranje strani z mojim programom. Hvala!
Uporabi API Camera2
@@ -232,8 +232,8 @@
O programu
Program in podatki za razhroščevanje
Ponastavi nastavitve
- Ponastavi vse nastavitve Open Camera na privzete
- Ali res želite ponastaviti vse nastavitve Open Camera na privzete?
+ Ponastavi vse nastavitve Camera na privzete
+ Ali res želite ponastaviti vse nastavitve Camera na privzete?
Na voljo
Ni na voljo
@@ -440,7 +440,7 @@
Novosti:
Daruj
-
+
obraz
obrazi
@@ -449,11 +449,11 @@
na zgornji strani zaslona
na spodnji strani zaslona
na sredini
-
+
Visoka hitrost
Privzeta
-
+
Oznake EXIF po meri
Avtor
Besedilo, ki se shrani med metapodatke slike v oznako "Avtor" (samo oblika JPEG)
@@ -471,7 +471,7 @@
dd.mm.yyyy
mm/dd/yyyy
Brez
-
+
Št. fotografij
2
3
@@ -516,7 +516,7 @@
Sam. zaslonska bliskavica
Zaslonska bliskavica je vklopljena
Zaslonska svetilka
-
+
Odstranjevanje pasov
Algoritmi za pomoč pri utripanju svetlobe.\n%s
Samodejno
@@ -579,7 +579,7 @@
100 Mb/s
150Mbps
200Mbps
-
+
brez taporedja
Prikaži merilnik ravni zvoka
@@ -678,7 +678,7 @@
2 GB
5 GB
9 GB
-
+
Stopnjevanje globine ostrenja je preklicano.
Brez
@@ -701,7 +701,7 @@
-1
-2
-3 (nizka občutljivost)
-
+
Izboljšava kontrasta HDR
Kdaj naj se uporabi algoritem za izboljšavo kontrasta v načinu HDR. To lahko izboljša videz v primerih zelo visokega dinamičnega razpona prizora in rezultatom doda "HDR-videz".\n%s
Izk.
@@ -745,7 +745,7 @@
Up. vmesnik za levičarje
Up. vmesnik za desničarje
Ikone na vrhu (pokončno)
-
+
Prikaži ikono za zaznavane obrazov
Ali naj se na zaslonu prikaže ikona za omogočanje/onemogočanje zaznavanja obrazov
Omogoči zaznavanje obrazov
@@ -862,10 +862,18 @@
Osenčeno besedilo
Golo besedilo
+ About
+ Različica za izdelavo
+ Kamera je vilica Camera
+ Avtor
+ Izvorna koda
+ Licenca
+ Podatki o fotoaparatu
+ Pogoji storitve
Besedilo z osenčenim ozadjem
-
+
Shranjevanje slik …
-
+
Dokončaj panoramo
Prekliči panoramo
Panorama je preklicana.
@@ -934,7 +942,7 @@
Skrij samo zaslonske navidezne gumbe za krmarjenje
Skrij gr. up. vmsnik
Skrij vse
-
+
Prosojnost prekrivne slike
Vrednost alfa pri uporabi prekrivne slike. Nižja vrednost pomeni večjo prosojnost.\n%s
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..84d439c4f2e214b0122b436bfc0aacd393e88ab4
--- /dev/null
+++ b/app/src/main/res/values-sv/strings.xml
@@ -0,0 +1,960 @@
+
+
+ Kamera
+ Källkod
+ Inställningar
+ FPS
+ Fokuseringsavstånd
+ Oändlig
+ Främre kamera
+ Upprepa
+ Prefixet som ska användas för fotofilnamn när de sparas
+ Tala nedräkningen för självutlösare eller vid fördröjning av upprepningsläge (från 60 sekunder)
+ Intervall för upprepningsläge
+ Fler kamerakontroller …
+ Ta ett foto eller spela in video genom att trycka eller dubbeltrycka på förhandsgranskningen
+ Pausa efter att ha tagit ett foto
+ Pausa skärmen efter att ha tagit ett foto, med möjlighet att dela eller radera fotot
+ Slutarljud
+ Spela upp ett ljud när du tar ett foto
+ Volymknappar
+ Alternativ för ljudkontroll
+ Ljudkontrollens känslighet
+ Sparningsplats
+ Mapp för att spara foto-/videofiler i
+ Spara videoprefix
+ Prefixet som ska användas för videofilnamn när de sparas
+ Kameraeffekter
+ Applicera en färgeffekt
+ Applicerar vald färgeffekt på fotot
+ Applicera ett scenläge
+ Optimera fotot för olika scener
+ Ställ in vitbalansen
+ Välj en inställning för att justera vitbalansen
+ Ställ in ISO
+ Ett högre värde betyder ökad ljuskänslighet (kanske inte fungerar på vissa enheter)
+ Ställ in exponeringskompensationen
+ Lås orientering för foto och video
+ Ansiktsdetektering
+ Använd ansiktsdetektering istället för fokusområden
+ Kamerakontroller
+ Självutlösare
+ Självutlösarljud
+ Pip när självutlösaren räknar ner eller vid fördröjning i upprepningsläge
+ Röstnedräkning för självutlösare
+ Spara fotoprefix
+ Tidsformat för filnamn
+ Visa kameran när enheten är låst
+ Visa meddelanden på skärmen
+ Av
+ Välj lagringsplats:
+ Rensa mapphistorik
+ Vill du rensa mapphistoriken\?
+ Välj en annan mapp
+ Ändrade sparningsplats till:
+ Slutade spela in video
+ Misslyckades att återansluta till kameran
+ Fel, videofilen kan vara skadad
+ stöds inte på din enhet
+ Okänt fel, videon stoppades
+ Servern dog, videon stoppades
+ Videon uppnådde maximal varaktighet
+ Videon uppnådde maximal filstorlek
+ Exponeringskompensation
+ Bakre kamera
+ Foto
+ Video
+ Exponering låst
+ Exponering olåst
+ Avbröt timer
+ Avbröt upprepningsläge
+ Startade timer
+ Misslyckades att spara videofil
+ Misslyckades att spela in video
+ Startade videoinspelning
+ Tyvärr
+ Misslyckades att spara foto
+ Misslyckades att spara RAW-foto
+ Misslyckades att starta kamerans förhandsgranskning
+ Tar foto
+ Misslyckades att ta bild
+ GPS-position är inte tillgänglig
+ Foto raderat
+ Ingen galleriapp tillgänglig
+ Skärmen är låst
+\nsvep skärmen för att låsa upp
+ Olåst
+ Ljud inaktiverat
+ Maximal varaktighet
+ Färgeffekt
+ Scenläge
+ Vitbalans
+ Vinkel
+ Riktning
+ MISSLYCKADES ATT ÖPPNA KAMERAN.
+ KAMERAN KANSKE ANVÄNDS
+ AV EN ANNAN APPLIKATION\?
+ ISO
+ Zoom
+ Ledig
+ [LÅST:
+ Svep för att låsa upp]
+ Misslyckades att stämpla information till foto
+ m
+ Popup-inställningar
+ OK (Det här meddelandet visas inte igen)
+ På
+ Om den är aktiverad visas Kamera fortfarande ovanför alla låskärmar (du måste fortfarande låsa upp för att komma åt Inställningar, Galleri etc.)
+ Utför autofokus vid start
+ Lås skärm när video spelas in
+ När video spelas in kommer användargränssnittet låsas för att förhindra att inspelningen stoppas av misstag. Svep på skärmen för att låsa upp. Observera att videoinspelningen alltid stoppas om appen körs i bakgrunden eller om skärmen släcks.
+ Rotera förhandsvisning
+ Användargränssnitt på skärm …
+ Storlek på förhandsgranskning
+ Placering av användargränssnitt
+ Uppslukande läge
+ Visa zoom
+ Visa kamerans aktuella zoomnivå på skärmen (vid inzoomning)
+ Visa -/+ zoomkontroller
+ Visa knapparna -/+ för zoomkontroll
+ Visa zoomreglage
+ Visa reglaget för zoomkontroll
+ Visa ISO
+ Visa aktuell ISO-nivå. (Kräver Camera2 API.)
+ Visa ledigt minne
+ Visa vinkel
+ Visa vinkellinje
+ Markeringsfärg för vinkel/höjd
+ Visa kompassriktning
+ Visa tid
+ Visa batteri
+ Visa rutnät
+ Rutnät
+ Visa beskärningsguide
+ Om du vill autofokusera när kameran startas. Om du har problem med att blixten slås på när du startar, inaktivera detta alternativ
+ Visa enhetens återstående lagringsutrymme på skärmen
+ Visa enhetens aktuella orienteringsvinkel på skärmen
+ Visa horisontell nivålinje
+ Visa markeringsfärg när kameran nästan är i nivå
+ Visa enhetens kompassriktning på skärmen
+ Visa aktuell tid på skärmen
+ Visa aktuell batterinivå på skärmen
+ Visa miniatyranimering
+ Visa kantlinje när du tar ett foto
+ Behåll skärmen på
+ Fotoinställningar …
+ Videoinställningar …
+ Platsinställningar …
+ Kamerans upplösning
+ Bildkvalitet
+ RAW
+ Lagra platsdata (geotaggning)
+ Alternativ för att rotera förhandsgranskning (påverkar inte slutresultat för foto/video)
+\n%s
+ Om tillfälliga meddelanden ska visas på skärmen
+ Visa rörlig miniatyranimering när du tar ett foto
+ Visar en kantlinje på skärmen för att indikera att du tar ett foto
+ Upphovsmän
+ Användarvillkor
+ Programversion
+ Tvinga skärmen till maximal ljusstyrka istället för enhetens standardinställning
+ Ställ in bildkvalitéten för sparade JPEG- eller WebP-bilder (standardvärdet är 90%%). Har ingen effekt på PNG-bildformatet.
+\n%s
+ Lagra GPS-position i foton/videos (för foton kan endast position lagras i formaten JPEG och DNG)
+ Lagra kompassriktning
+ Lagra GPS-ens kompassriktning i foton (endast JPEG-formatet)
+ Format för datumstämpel
+ Format för tidsstämpel
+ Format för GPS-stämpel
+ Anpassad text
+ Stämpla foton med en anpassad text
+ Typssnittsstorlek
+ Typssnittsstorlek som används vid stämpling av text på foton
+\n%s
+ Typsnittsfärg
+ Typssnittsfärg som används vid stämpling av text på foton
+\n%s
+ Textstil
+ Stil som används vid stämpling av text på foton
+\n%s
+ Använd bakgrundstråd
+ Stämpla foton
+ Tvinga maximal ljusstyrka
+ Foto- och videoinställningar
+ Om aktiverat kommer inte skärmen att stängas av när Kameras huvudanvändargränssnitt är aktivt
+ Tryck för att ta bild
+ Ställ in till 0 för exponeringskompensationens standardvärde
+ Kräv platsdata
+ Ta endast foto/video när platsdata finns tillgängligt om platsdata är aktiverat
+ Videoupplösning
+ Tvinga 4K UHD-video (fungerar endast på vissa enheter)
+ Maximal längd för video
+ Videoinspelningen kommer stoppas efter angiven tid
+\n%s
+ Tillgänglig
+ Inte tillgänglig
+ Kopiera till urklipp
+ Galleri
+ Exponering
+ Exponeringslås
+ Fokusläge
+ Blixtläge
+ Byt till främre kameran
+ Byt till bakre kameran
+ Byt till videoläge
+ Byt till fotoläge
+ Radera senaste bild
+ Dela bild
+ Ny mapp
+ Kan inte skriva till denna mapp
+ Kommer inte åt denna mapp
+ Ange namn för ny mapp
+ Misslyckades att skapa mapp
+ Mapp finns redan
+ Välj en plats att spara på
+ Kan inte spara i denna mapp
+ 2 minuter
+ 3 minuter
+ 4 minuter
+ 5 minuter
+ 6 minuter
+ 7 minuter
+ 8 minuter
+ 9 minuter
+ 10 minuter
+ 11 minuter
+ 12 minuter
+ 15 minuter
+ 20 minuter
+ 25 minuter
+ 30 minuter
+ 45 minuter
+ 1 timme
+ Ta en bild
+ Maximal filstorlek för video
+ Spela in ljud
+ Spela in ljud när video spelas in
+ Ljudkälla
+ Mikrofon som används vid ljudinspelning. Observera att alternativets exakta beteende beror på hur alternativet implementerats på enheten.
+\n%s
+ Ljudkanaler
+ Blinka medan video spelas in
+ Om aktiverat kommer blixten att blinka medan video spelas in (kan användas för att avgöra om kameran spelar in på avstånd)
+ Diverse
+ Onlinehjälp
+ Öppna Kameras webbplats i din webbläsare
+ Donera för att stödja utvecklingen
+ Om
+ Återställ inställningar
+ Återställ alla Kamerainställningar till standardinställningar
+ Mikrofonbehörighet är inte tillgänglig
+ Platsbehörighet är inte tillgänglig
+ Starta videoinspelning
+ Stoppa videoinspelning
+ Maximal filstorlek
+ MB
+ GB
+ Starta ljuduppspelning
+ Stoppa ljuduppspelning
+ Säg \"apelsin\"
+ Gör ett högt ljud
+ Visa inte igen
+ Fotoläge
+ Standard
+ HDR
+ Exponeringsgaffling
+ Brusreducering
+ BEHÖRIGHETER INTE TILLGÄNGLIGA
+ Behörigheter krävs
+ Exponeringsgaffling
+ Antal bilder i läget exponeringsgaffling
+\n%s
+ Spara inte originalbilder
+ Spara en originalbild
+ Spara alla originalbilder (långsam)
+ s
+ Inte tillräckligt med ledigt utrymme för att spela in video
+ Video stoppades
+\nBatterinivån är kritiskt låg
+ Mörk
+ Ljus
+ Slutarhastighet
+ Allvarligt kamerafel
+ Kamera
+ Spela in video
+ Kalibrera
+ Återställ
+ Videoundertexter
+ Obegränsad
+ 3 sekunder
+ 5 sekunder
+ 10 sekunder
+ 15 sekunder
+ 30 sekunder
+ 1 minut
+ Vill du verkligen återställa Kameras inställningar till standardinställningar\?
+ upprepningar kvar
+ Stämpla foton med datum och tid, även med GPS-information om plats-/riktningsdata är aktiverat
+\n%s
+ Om foton ska sparas med en bakgrundstråd (för snabbare åtgärd)
+ Starta om video efter maximal längd
+ Om videon har stoppats efter att den har nått maximal längd (om inställt) kommer detta alternativ att starta om videon upp till angivet antal gånger
+\n%s
+ Överordnad mapp
+ DNG-filer innehåller hela den okomprimerade och obearbetade informationen från din kamera.
+\n
+\nObservera att vissa galleriappar inte kan läsa DNG-filer. DNG-filer kan användas med specialiserade fotoredigerare.
+\n
+\nObservera att vissa bearbetningsalternativ som Stämpla foto och auto-nivå endast appliceras på icke-DNG-bilder (JPEG/etc) och inte på DNG-filen.
+ Std
+ Exponering {}
+ Kamerabehörighet krävs för att kunna aktivera kameran
+ Brusreducering för originalbilder
+ Huruvida bilder ska sparas i brusreduceringsläge. Observera att detta kan göra att det går mycket långsammare att spara bilder.
+\n%s
+ Selfie
+ Video pausad
+ Video återupptagen
+ Pausa videoinspelning
+ Återuppta videoinspelning
+ Misslyckades att skapa HDR-bild
+ Molnigt
+ Dagsljus
+ Fluorescerande
+ Skugga
+ Varm
+ Manuell
+ Streckkod
+ Strand
+ Stearinljus
+ Fyrverkeri
+ Automatiskt
+ Automatiskt
+ Blixt av
+ Nej
+ 30x
+ Standard och DNG (RAW)
+ 40x
+ 50x
+ 100x
+ 200x
+ 500x
+ Endast DNG (RAW)
+ Standard
+ 500 kbps
+ 1 Mbps
+ 2 Mbps
+ 3 Mbps
+ 4 Mbps
+ 5 Mbps
+ yyyy-mm-dd (ISO 8601)
+ dd/mm/yyyy
+ mm/dd/yyyy
+ Ingen
+ 6 Mbps
+ Antal foton
+ 2
+ 3
+ 4
+ 5
+ 6
+ 8
+ 10
+ 12
+ 15
+ 20
+ Antal foton
+ 2
+ 3
+ 4
+ 7 Mbps
+ 8 Mbps
+ 9 Mbps
+ 5
+ 6
+ 8
+ 10
+ 12
+ 15
+ 20
+ 25
+ 30
+ 40
+ 50
+ 100
+ 150
+ 200
+ Hastighet
+ Normal
+ Blixt auto
+ Ficklampa
+ Röda ögon
+ Skärmficklampa
+ 50 Hz
+ 60 Hz
+ Av
+ Av
+ Senast tagna foto
+ Valda bilder
+ 10 Mbps
+ Kan inte öppna denna bild
+ Standard
+ Optimerad för röstsamtal
+ 15 Mbps
+ Optimerad för röstigenkänning
+ Obearbetad
+ Standard
+ 100 kbps
+ 5x
+ 10x
+ 200 kbps
+ 20x
+ Landskap
+ Natt
+ Nattporträtt
+ Fest
+ Porträtt
+ Snö
+ Sport
+ Solnedgång
+ teater
+ Negativ
+ Ingen
+ Vad är nytt:
+ Donera
+ ansikte
+ ansikten
+ till vänster i skärmen
+ till höger i skärmen
+ uppe i skärmen
+ nere i skärmen
+ i mitten
+ Standard
+ Anpassade EXIF-taggar
+ Upphovsrätt
+ Bearbetar …
+ 20 Mbps
+ 30 Mbps
+ 40 Mbps
+ 50 Mbps
+ 60 Mbps
+ 70 Mbps
+ 80 Mbps
+ 90 Mbps
+ 100 Mbps
+ 150 Mbps
+ 200 Mbps
+ Fokus {}
+ Fokusgaffling
+ Lägg till oändligt avstånd
+ Kompassriktning
+ Opålitlig
+ Låg
+ Medium
+ Hög
+ Okänd
+ Enhet för avstånd
+ Används för GPS-altitud till fotostämplar och videoundertexter
+\n%s
+ Meter
+ Fot
+ ft
+ Visa dialogen Vad är nytt
+ Om information ska visas för nya funktioner och förbättringar när applikationen har uppdaterats
+ Bearbetningsinställningar …
+ Brusreduceringsalgoritm
+ Standard
+ Av
+ Minimal
+ Snabb
+ Hög kvalitet
+ Fokusassistans
+ Av
+ 2x
+ 4x
+ Öka eller minska exponeringskompensation
+ Föregående
+ Nästa
+ Av
+ 2x
+ 3x
+ 4x
+ Obegränsad
+ Ingen fördröjning
+ 0,5 s
+ 1 s
+ 2 s
+ 3 s
+ 5 s
+ 10 s
+ 15 s
+ 20 s
+ 30 s
+ 1 min
+ 2 min
+ 5 min
+ 10 min
+ 20 min
+ 30 min
+ 1 tim
+ 2 tim
+ Enhetens standardinställning
+ 100 MB
+ 200 MB
+ 300 MB
+ 500 MB
+ 1 GB
+ 2 GB
+ 5 GB
+ 9 GB
+ Avbryt fokusgaffling
+ Ingen
+ +3 (hög känslighet)
+ +2
+ +1
+ 0 (standard)
+ -1
+ -2
+ -3 (låg känslighet)
+ Av
+ Smart
+ Alltid
+ Videoformat
+ Standard
+ WebM (ljud stöds ej)
+ Inställningshanterare
+ Spara inställningar
+ Återställ inställningar
+ Sparade inställningar
+ Misslyckades att spara inställningar
+ Misslyckades att återställa inställningar
+ Bildformat
+ JPEG
+ WebP
+ PNG
+ Normal
+ Vänsterhänt användargränssnitt
+ Högerhänt användargränssnitt
+ Visa ikon för ansiktsigenkänning
+ Aktivera ansiktsigenkänning
+ Avaktivera ansiktsigenkänning
+ Ansiktsigenkänning aktiverat
+ Ansiktsigenkänning avaktiverat
+ Lås vitbalans
+ Lås upp vitbalans
+ Vitbalans låst
+ Vitbalans upplåst
+ Lås upp exponering
+ Okänd enhet
+ Använd adresser
+ Automatiskt
+ Använd Camera2 API
+ Möjliggör extra funktioner så som manuella lägen för exponering, fokus och vitbalans tillsammans med RAW (om det stöds av enheten) men kanske inte fungerar korrekt på alla enheter (omstart kommer ske)
+ App- och felsökningsinformation
+ Aktivera digital videostabilisering
+ Videostabilisering minskar skakningar på grund av kamerarörelser både i förhandsvisning och i inspelade videor. Detta kan vara onödigt om din enhet stöder optisk bildstabilisering (OIS).
+ Felsökningsalternativ
+ Felsökningsalternativ
+ Kritisk batterinivåkontroll
+ Stoppa videoinspelning om batterinivån är kritiskt låg. Detta hjälper till att minska risken för att videor blir skadade om din enhet plötsligt stängs av på grund av att den blir utan ström.
+ 1 (1:1)
+ 1,25 (5:4)
+ 1,33 (4:3)
+ 1,4 (7:4)
+ 1,5 (3:2)
+ 1,78 (16:9)
+ 1,85 (37:20)
+ 2 (2:1)
+ 2,33 (21:9)
+ 2,35 (47:20)
+ 2,4 (12:5)
+ HDR kontrastförstärkning
+ När kontrastförstärkningsalgoritm ska användas för HDR. Detta kan förbättra utseendet i de fall det är högt dynamiskt omfång i bilden, ger även en HDR-stil på resultatet.
+\n%s
+ Video - och ljudformat och kodeks
+\n%s
+ MPEG4 H264
+ MPEG4 HEVC
+ 3GPP
+ Visa histogram
+ Om historgram ska visas för färgerna som finns på skärmen
+\n%s
+ Av
+ RGB-färger
+ Värde (Maximalt)
+ Intensitet (Medel)
+ Ljushet (Medel av min-max)
+ Visa zebraränder
+ Röd
+ Orange
+ Genomskinlig
+ Vit
+ Extern kamera
+ Göm allt
+ Visa kamera-ID
+ Visa den aktuella siffran för kamera-ID på skärmen
+ Tillåt åtgärder vid långtryck
+ Bländare
+ 4K UHD
+ Bithastighet
+ Bildhastighet
+ Öppen källkodslicens
+ Camera is © 2013–2023 Mark Harman, publicerad under GPL v3 eller senare. Tryck här för hela licenstexten.
+ Googles Material Design-ikoner
+ Kamera är avgrenad från Camera
+ Licens
+ Information om Kamera
+ Bakåt
+ Nästa
+ Hoppa över
+ OBJ.
+ Kamera
+ Svart
+ Luminans
+ Ingen
+ Högt ljud
+ Om åtgärder vid långtryck ska tillåtas (t.ex. långtryck på galleriet för att ändra lagringsplats).
+ Sparar alla Kameras inställningar till en fil
+ Namn på sparade inställningar
+ Återställ tidigare sparade inställningar. Detta kommer skriva över alla nuvarande inställningar med dom sparade inställningarna!
+ Av
+ 70%
+ 80%
+ 90%
+ 93%
+ 95%
+ 97%
+ 98%
+ 99%
+ 100%
+ Visa adress om möjligt som tillägg till GPS-koordinater
+ Föredra adress framför GPS-koordinater
+ Visa inte adress
+ Visa lagra platsdataikon
+ Lagra platsdata
+ Sluta lagra platsdata
+ Sparar bilder …
+ Slutför panorama
+ Avbryt panorama
+ Panorama avbruten
+ Automatisk beskärning av panorama
+ Huruvida vågiga kanter ska tas bort i panoramaläget
+\n%s
+ Spara inte originalbilder
+ Spara originalbilder
+ ID
+ Av
+ På
+ Skanna
+ Skuggad text
+ Vanlig text
+ Kvarstår
+ Visa blixtikon
+ Av
+ 1,6
+ 1,8
+ 1,9
+ 2,0
+ 2,1
+ 2,2
+ 2,3
+ 2,4
+ 2,6
+ 2,8
+ Byt till extern kamera
+ Byt kamera
+ Byt mellan flera kameror
+ REC709
+ sRGB
+ Gamma
+ Camera2 API
+ Göm användargränssnitt
+ Zebraränders förgrundsfärg
+ Zerbraränders bakgrundsfärg
+ Färg som används för bakgrundsränder när zebraränder visas.
+\n%s
+ Färg som används för förgrundsränder när zebraränder visas.
+\n%s
+ Spara originalbilder plus felsöknings-XML
+ Text med skuggad bakgrund
+ Misslyckades att skapa panoramabild
+ Alternativ för ljudnivåkänslighet för ljud (högt ljud)
+ Misslyckades att nivåjustera automatiskt
+ Tyvärr, automatisk nivåjustering stöds inte
+\npå denna enhet
+ Automatisk nivå
+ Bilder kommer att roteras så att de är automatiskt i nivå (endast foton) (långsammare att ta foton och kanske misslyckas på enheter med för lite minne)
+ Om inställt kommer enhetens orientering att ignoreras och bildens/videons orientering kommer vara i förhållande till angiven orientering
+\n%s
+ En beskärningsguide där en rektangel visas som anger hur det angivna bildförhållandet ser ut - användbart om du planerar att beskära fotot/videon i efterhand till ett annat bildförhållande. Kräver WYSIWYG-fotoläge eller att vara i videoläge.
+\n%s
+ Videobildhastighet (uppskattning)
+ Aktivera upplösningen 3840x2160 för videoinspelning på bakre kamera - detta alternativ är ett hack som kanske tillåter 4K-enheter på 4K-kameror som inte exponerar alternativet till tredjepartskameraappar. Detta är inte garanterat att fungera, testa innan du börjar arbeta.
+ Videobithastighet (uppskattad)
+ Ställ in den uppskattade bithastigheten för videor (högre betyder bättre kvalitet men tar upp mer lagringsutrymme, kan få videoinspelning att misslyckas om bithastighet inte stöds)
+\n%s
+ Ställ in bildhastigheten (FPS) för videor (kan vara uppskattad, inte garanterat att det uppnås, och kan få videoinspelning att misslyckas om bildhastighet inte stöds. Kontrollera videoresultatet för att se den faktiska bildhastigheten som användes. Observera att denna inställning ignoreras för slow motion-videor.
+\n%s
+ Starta om vid maximal filstorlek
+ Huruvida automatisk omstart ska ske när maximal filstorlek nås (antingen enhetens maximala standardfilstorlek eller angivet av användaren)
+ Videoinspelningen stoppas och/eller startas om (se alternativ nedan) när den (uppskattade) maximala filstorleken är nådd. Observera att många Androidenheter har en maximal filstorlek för videor (vanligen runt 2 GB eller 4 GB), men detta alternativ tillåter att ställa in ett specifikt värde. Observera att detta alternativ inte kan användas för att öka enhetens inbyggda maximala värde.
+\n%s
+ Specificera mono eller stereo för ljudinspelning (på vissa enheter stöds endast stereo)
+ Om du gillar denna app, vänligen fundera på att göra en donation för att stödja utvecklingen. Du kan göra detta genom att köpa min donationsapp - klicka på detta alternativ för att öppna sidan för min donationsapp. Tack!
+ Storage Access Framework avbruten
+ Visa \"Ta foto\"-ikon
+ Visa ikonen för att ta foton eller spela in videor. Avmarkera om du hellre tar foton på ett annat sätt (t.ex. om enheten har en fysisk slutarknapp eller använder volymknapparna).
+ Tar foto …
+ Glödlampa
+ Skymning
+ Action
+ Stadigt foto
+ Text som lagras i bildens metadata i upphovsrättstaggen (endast JPEG-format). (Lämna tomt för ingen.)
+ Slow motion aktiverad
+ Slow motion avaktiverades
+ Blixt på
+ Automatisk skärmblixt
+ Skärmblixt på
+ Tillåt foton medan inspelning av video
+ Tillåter att ta foton medan video spelas in. Avaktivera detta om det är problem med videoinspelning med Camera2 API aktiverad på enheten.
+ Bildprofiler för video
+ Ställ in standard eller platt bildprofil för videoläge
+\n%s
+ Log (Fin)
+ Log (Låg)
+ Log (Medium)
+ Log (Stark)
+ Log (Extra stark)
+ Log-profil
+ Videokamera
+ Extern mick (om den finns)
+ Standardljudkälla
+ Auto-nivå kommer automatiskt rotera foton så att de framstår vara i nivå.
+\n
+\nObservera att detta innebär att bilder kommer få en något lägra upplösning (på grund av den rotation och beskärning som krävs).
+ HDR-läge är användbart för foton med stor variation i ljushet. Det fungerar genom att ta flera foton med olika exponeringar, och kombinerar dom sedan för att skapa den slutgiltiga bilden.
+\n
+\nObservera att HDR inte är lämpligt för motiv med snabba rörelser, och kan resultera i något sämre färgåtergivning.
+\n
+\nAtt ta foton i HDR-läge är långsammare.
+ BR
+ Fotostämpel
+ Spara alla bilder för HDR-läge
+ Om aktiverat, när HDR-fotoläge används, kommer de tre basbilderna sparas precis som det slutgiltiga HDR-fotot. Observera att detta kommer att göra det långsammare att spara, speciellt om alternativ som \"Stämpla foton\" eller Auto-nivå också används.
+ Läs- och skrivbehörighet till filer och media krävs för att spara filer så som foton och videor
+ Mikrofonbehörighet krävs för att spela in video med ljud och för att kunna använda \"Ljudkontroll\"-alternativen
+ Platsbehörighet krävs för geotagging (lagra platsdata i foton och videor, inklusive stämpel och undertexters alternativ). Platsbehörighet krävs också (åtminstone för Android 11 och tidigare) för att ansluta till Bluetooth LE fjärrkontrollsenheter.
+ Kalibrera nivåvinkel
+ Detta alternativ kalibrerar enhetens accelerometer så att auto-nivå och nivå-/vinkelalternativen på skärmen fungerar korrekt
+ Placera enheten på en platt horisontell yta så att den är i nivå (antingen i porträtt- eller landskapsläge), välj sedan Kalibrera.
+\n
+\nTryck på Återställ för att ta bort kalibreringen från din enhet.
+\n
+\nTryck på bakåtknappen för att avbryta.
+ Nivå kalibrerad
+ Nivåkalibrering återställd
+ Visa kompassens riktningslinjer
+ Visa kompassriktningslinjer
+ Om Storage Access Framework ska användas för att spara foton och videor. Detta bör aktiveras för att tillåta att spara till externa SD-kort. I Android 10+ måste detta alternativ vara aktiverat om du vill spara i en mapp utanför DCIM.
+ Snabb serie
+ Använd alternativ blixtmetod
+ Aktivera detta om enheten har programfel i blixtbeteendet med Camera2 API
+ Exponeringsgafflingssteg
+ Hur många steg som ska dras bort/läggas till för den mörkaste/ljusaste bilden
+\n%s
+ Aktivera snabb HDR-/exposerie
+ Tillåter snabbare fångst av HDR-/expofoton. Avaktivera detta om enheten har problem med att ta foton i HDR- eller Expofotoläge.
+ Spegla främre kameran
+ Huruvida bilder tagna med främre kameran ska spegelvändas
+\n%s
+ DRO
+ Visa stigningslinjer
+ Visa horisontella stigningslinjer
+ Skapa en fil med undertexter (.SRT) som lagrar datum och tid, och även GPS-info om plats-/riktningsdata är aktiverat. (I Android 11+, detta alternativ kräver att Fler kamerakontroller/Storage Access Framework aktiveras.)
+\n%s
+ Misslyckades att starta ljudavlyssning
+ Aqua
+ Svart tavla
+ Mono
+ Affischera
+ Sepia
+ Solarisera
+ Whiteboard
+ Hög fart
+ Antiränder
+ Algoritmer som hjälper mot ljusflimmer.
+\n%s
+ Spökbild
+ Lägg över en bild för att hjälpa med placering.
+\n%s
+ Ingen fildialog hittades på denna enhet, alternativet spökbild stöds ej
+ ingen serie
+ Visa ljudnivåmätare
+ Hurruvida ljudnivå ska visas på skärmen när video spelas in
+ Enhetens kompass behöver kalibreras för att förbättra noggrannheten. Detta kan göras genom att röra din enheten i ett mönster som liknar en 8.
+\n
+\nAktuell noggrannhet:
+ Huruvida inzoomning ska ske när fokusavstånd justeras manuellt
+\n%s
+ Detta alternativ tillåter att du väljer en av inställningsfilerna som sparats tidigare. Tag varning om att inläsning av vald fil skriver över alla nuvarande inställningar!
+ Ingen fildialog hittades på denna enhet, alternativet stöds ej
+ Algoritmer för kantläge
+ Algoritm som kameradrivrutinen bör använda för att applicera kantförbättring. Kantförbättring förbättrar skärpan och detaljerna i den tagna bilden. (Denna inställning ignoreras i BR-fotoläge.)
+\n%s
+ Algoritm som kamerans drivrutin bör använda för att applicera brusreducering. Brusreduceringsalgoritmen försöker förbättra bildkvaliteten genom att ta bort överdrivet brus som tillkommit i bildtagningsprocessen, speciellt i mörka förhållanden. (Observera att detta inte är relaterat till Brucreduseringsfotoläget, och denna inställning kommer att ignoreras i BR-fotoläget.)
+\n%s
+ Panorama
+ BR-läge
+ Svagt ljus
+ Ikoner längst upp (porträtt)
+ Huruvida ikon ska visas på skärmen för att aktivera eller avaktivera ansiktsigenkänning
+ Visa ikon för auto-nivå
+ Huruvida ikon ska visas på skärmen för att aktivera eller avaktivera auto-nivå. När auto-nivå är aktiverat kommer foton roteras så att de automatiskt är i nivå med horisonten.
+ Aktivera auto-nivå
+ Avaktivera auto-nivå
+ Visa ikon för fotostämpel
+ Huruvida ikon ska visas på skärmen för att aktivera eller avaktivera fotostämpel
+ Aktivera fotostämpel
+ Avaktivera fotostämpel
+ Fotostämpel aktiverad
+ Fotostämpel avaktiverad
+ Huruvida ikon ska visas på skärmen för att ange anpassad text som ska stämplas på fotot
+ Visa ikon för fotostämpel med anpassad text
+ Visa låsikon för automatisk vitbalans
+ Huruvida ikon ska visas på skärmen för att låsa eller låsa upp automatisk vitbalans
+ Visa låsikon för automatisk exponering
+ Huruvida ikon ska visas på skärmen för att låsa eller låsa upp exponering
+ Svagt ljus-läge: Håll kameran stadigt
+ Pano
+ Bluetooth LE fjärrkontroll …
+ Aktivera Bluetooth LE fjärrkontroll
+ Aktivera Bluetooth LE (BLE) fjärrkontrollenheter
+ Fjärrenhetstyp
+ BLE stöds ej
+ BLE enhetesskanning
+ Bluetooth stöds ej.
+ Dämpa skärmen om anslutning bryts till fjärr
+ Tips: Ställ in standardljusstyrkan till lägsta nivån innan Kamera startas.
+ Använd Saltvatten för beräkning av djup
+ För undervattenshus, förbättrar noggrannheten om korrekt vattentyp är valt.
+ Fjärr ansluten
+ Huruvida ikon ska visas på skärmen för att aktivera eller avaktivera platsdata (geotaggning)
+ Om detta alternativ är aktiverat kommer zebraränder visas på skärmen som visar var kamerans förhandsvisning är överexponerad.
+\n%s
+ Om detta alternativ är aktiverat kommer markeringar att visas på kanter som är i fokus (konturer). Detta är primärt användbart för manuell fokus, och kan användas för att hjälpa till att avgöra vilka områden i en bild som är i fokus.
+\n%s
+ Fokusmarkering
+ Fokusmarkeringsfärg
+ Kameraförhandsvisning …
+ Bläddra blixt
+ Panorama originalbilder
+ Huruvida ikon ska visas på skärmen för att bläddra igenom alla blixtalternativ istället för att visa blixtalternativ i popup-menyn. Observera att ficklampan inte är tillgänglig när denna ikon visas.
+ Tillåt RAW vid exponeringsgaffling
+ Visa RAW-ikon
+ Bläddra RAW-läge
+ Huruvida ikon ska visas på skärmen för att bläddra igenom RAW-lägen
+ Aktuell fjärr:
+ För att ta en panoramabild, håll enheten i porträttläge och tryck ta bild för att starta panorama. Vrid sedan enheten antingen åt vänster eller åt höger för att flytta den centrerade vita cirkeln över den blåa punkten. Efter att varje ny bild är tagen, fortsätt vrida enheten för att täcka varje ny blå punkt som visas i tur och ordning.
+\n
+\nTryck på bockikonen för att spara panoramat eller krysset för att avbryta.
+\n
+\nObservera att panoramabilder kan ta tid att bearbeta och spara.
+ Huruvida originalbilderna ska sparas i panoramaläge. Observera att detta kommer göra det långsammare att spara panoramabilder. Tillåter även alternativet att spara en XML-fil vilket kan vara användbart när problem med panorama rapporteras.
+\n%s
+ Vilken färg som ska användas för att markera kanterna som är i fokus
+\n%s
+ Huruvida RAW-alternativet även ska appliceras för exponeringsgafflingsläget (eller för HDR-läge när Spara alla bilder för HDR-läge är aktiverat). Endast JPEG kommer sparas i dessa fotolägen om detta alternativ är avaktiverat.
+ Tillåt RAW vid fokusgaffling
+ Huruvida RAW-alternativet även ska gälla för fokusgafflingsläget. Endast JPEG kommer sparas i fokusgafflingslägen om detta alternativ är avaktiverat.
+ Kamera API
+ Välj Camera2 API för att tillgängliggöra extra funktioner så som manuella lägen för exponering, fokus, vitbalans tillsammans med RAW (om det stöds av enheten). Ändring av API kommer tvinga en omstart.
+\n%s
+ Camera API original
+ Sökfält för att ändra exponeringskompensation
+ Ta foto/video när ett ljud upptäcks. När detta är aktiverat, använd mikrofonknappen på skärmen för att starta/stoppa lyssning.
+\n%s
+ Välj fjärrenhet
+ Videogammavärde
+ Gamma värde som ska användas för video om videobildprofilen är inställd på Gamma
+\n%s
+ Göm virtuella navigationsknappar på skärmen
+ Spökbilds ogenomskinlighet
+ Alfavärde som ska används för spökbilder. Ett lägre värde ger mer genomskinlighet, högre betyder mer ogenomskinlighet.
+\n%s
+ Tryck för att fokusera och tryck på den vita kameraknappen för att ta foto.
+\n
+\nFör att avaktivera maximal skärmljusstyrka, se Inställningar/På skärmens användargränssnitt/\"Tvinga maximal ljusstyrka\". För att spara till SD-kort i Android 5+, se Inställningar/Mer kamerakontroller/\"storage Access Framework\". För mer hjälp, tryck på \"Onlinehjälp\" i inställningarna.
+ Dämpa endast de virtuella navigationsknapparna på skärmen
+ Ultrabred
+ Flera kameraikoner
+ Om detta är aktiverat används separata knappar för att byta mellan främre och bakre kameror och för att byta mellan flera framåt-/bakåtriktade kameror. Om detta är avaktiverat kommer Byt kameraikonen att bläddra igenom alla kameror.
+ Slowmotion
+ Lagra gir, stigning och rullning
+ Lagra gir, stigning och rullning för enheten i fotots Exif-användarkommentar (endast JPEG-format)
+ Röstkommando: \"cheese\"
+ Aktivera ta bild-dummy för HDR/exponeringsfix
+ Bluetooth skanna/anslut-behörigheter krävs för att kunna upptäcka och ansluta till Bluetooth LE fjärrkontrollenheter.
+ Okänd enhet (Bluetooth anslutbehörighet inte tillgänglig)
+ Tillägg: Auto
+ X-HDR
+ Tillägg: HDR
+ X-Natt
+ Tillägg: Natt
+ X-Bokeh
+ Tillägg: Bokeh
+ X-Bty
+ Tillägg: Vacker / Ansiktsretuschering
+ Sökfält för att ändra aktuellt inställt värde
+ X-Auto
+ Kamera använder ikoner från Googles Material Design-ikoner (https://developer.android.com/design/downloads/index.html , https://design.google.com/icons/ , https://github.com/google/material-design-icons/ , https://google.github.io/material-design-icons/) med Apache-licens version 2.0. Vissa ikoner har modifieringar inkluderade. Tryck här för att se licenstexten i sin helhet.
+ Välj filformat som ska användas när foton sparas. Detta påverkar \"standard\"-foton (inte RAW). Endast JPEG stödjer att Exif-metadata sparas. Observera att formatet PNG inte är helt förlustlöst, istället konverteras det från en JPEG med kvaliteten 100%%.
+\n%s
+ Artist
+ Text att lagra i bildens metadata i artisttaggen (endast JPEG-format). (Lämna tomt för att ange ingen.)
+ Fokusgafflings källavstånd
+ Fokusgafflings målavstånd
+ Om möjligt, hämta adress från GPS-plats (för fotostämpel eller videoundertexter). Observera att om detta är aktiverat kräver detta att enheten skickar platsdata över internet till en tredje part för att konvertera GPS-koordinater till en adress. Se https://developer.android.com/reference/android/location/Geocoder . Denna funktion ger inga garantier på tillgänglighet eller noggrannhet. Resultatet är en bästa gissning och garanterar inte att den kommer vara meningsfull eller korrekt.
+\n%s
+ Försök att aktivera detta om din enhet har problem vid tagning av foto med HDR- eller exponeringsfotoläge (om exponeringsbilder genererar samma exponeringar). Endast relevant om snabb HDR-/exponeringsalternativet nedan också är aktiverat.
+ Ta bort enhetens EXIF-data
+ Ta inte bort enhetens EXIF-data
+ Ta bort enhetens EXIF-data
+ Ta bort förutom datum/tid
+ HDR-tonmappning
+ Algoritm som används för tonmappning i HDR-fotoläge
+\n%s
+ Enkel klämning
+ Exponentiell
+ Standard
+ Huruvida enhetens EXIF-metadata ska tas bort från JPEG-bilder. Detta kommer inte ta bort exif-taggar för andra inställningar som applicerar EXIF-metadata (t.ex. plats/geotaggning). Dessa andra alternativ är fristående och kommer åsidosätta denna inställning. RAW/DNG och videor påverkas inte.
+\n%s
+ Håll kamera stadigt för bättre foton.
+ Lägg till kontakt
+ Lägg till händelse i kalendern
+ Lägg till denna händelse i kalendern
+ Öppna denna plats
+ Öppna denna plats
+ Skicka nytt mejl
+ Kolla upp detta ISBN
+ Sök efter detta ISBN på isbnsearch.org
+ Kolla upp produkt
+ Kolla upp denna produkts streckkods-ID
+ Skicka ett nytt SMS
+ Lägg till kontakt
+ Komponera ett nytt mejl till den angivna adressen
+ QR-kod
+ Skicka ett nytt SMS till de angivna mottagarna
+ Ring telefonnummer
+ Ring telefonnumret
+ Kolla upp VIN
+ Anslut till detta trådlösa nätverk
+ Lägg till detta trådlösa nätverk till kända nätverk och anslut enheten till det
+ Ikon
+ Dela
+ Kopiera till urklipp
+ Ingen app tillgänglig för att hantera denna åtgärd
+ Text
+ Konfigurera denna enhet
+ Wi-Fi Easy Connect™ (DPP)
+ Dela med
+
\ No newline at end of file
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index bca0101e435018f4c80bf986e9d0f736523310f1..a5be97c785c70a125ad15aa5e3fd0dea2aed669a 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -1,13 +1,13 @@
-
- Open Camera
+ Open (Açık kaynaklı) kamera
Ayarlar
Popup Ayarları
TAMAM (Bu mesaj tekrar gösterilmeyecektir.)
-
- Açık
- Kapalı
+ Açık
+
+ Kapalı
+
Kayıt yerini seç:
Klasör geçmişini temizle
@@ -15,10 +15,12 @@
Başka bir klasör seç
Değiştirilen kayıt konumu:
Vidyo kaydı durduruldu
- repeats to go
+ repeats to go
+
Kameraya tekrar bağlanma hatası
Hata oluştu, vidyo dosyası bozulmuş olabilir
- cihazınız desteklemiyor
+ cihazınız desteklemiyor
+
Bilinmeyen hata oluştu, vidyo duraklatıldı
Server durdu, vidyo duraklatıldı
Vidyo maksimum süreye ulaştı
@@ -56,7 +58,6 @@
Renk efekti
Sahne modu
Beyaz dengesi
-
Açı
Yön
KAMERA AÇMA HATASI.
@@ -67,9 +68,9 @@
Boş
[KİLİTLENDİ:
Açmak için kaydırın]
-
Fotoğrafa tarih bilgisi ekleme hatası
- m
+ m
+
Kamera Efektleri
Otomatik-stabilize
@@ -88,7 +89,6 @@
Eğer ayarlanırsa, cihazın yönlendirmesi geçilecektir ve fotoğraf/vidyo yönlendirmesi daha önce belirlenen yönlendirme ayarına uyacaktır\n%s
Yüz tanıma
Odak alanları yerine yüz tanımayı kullan
-
Kamera Kontrolleri
Zamanlayıcı
Zamanlayıcı ayarla
@@ -105,17 +105,15 @@
Fotoğraf çekme sesi
Fotoğraf çekerken ses çal
Ses seviyesi tuşları
-
Kaydetme yeri
Fotoğraf/vidyo dosyaları için kayıt klasörü
- Fotoğraf ve vidyoları kaydetmek için Storage Access Framework kullan
+ Fotoğrafları ve videoları kaydetmek için Depolama Erişim Çerçevesi\'nin kullanılıp kullanılmayacağı. Harici SD kartlara kaydetmeye izin vermek için bu etkinleştirilmelidir. Android 10+\'da DCIM dışındaki bir klasöre kaydetmek istiyorsanız bu seçenek etkinleştirilmelidir.
Fotoğraf adlandırma öneki kaydet
Fotoğraflarda dosya adlarını kaydetmede kullanılacak önek
vidyo adlandırma öneki kaydet
Vidyolarda dosya adlarını kaydetmede kullanılacak önek
Kilitlendiğinde kamerayı göster
- Etkinleştirilirse, Open Camera yukarıda kilit ekranı göstermeye devam edecektir(Sizin\' ayarlara, galeriye vb. erişmek için yine de ekranı açamanız gerekir)
-
+ Etkinleştirilirse, Kamera herhangi bir kilit ekranının üzerinde gösterilmeye devam eder (Ayarlar, Galeri vb.\'ye erişmek için kilidi açmanız gerekir)
Vidyo kaydederken ekranı kilitle
Vidyo kaydederken, GUI kazara kaydı durdurmayı önlemek için kilitlenecek. Kilidi açmak için ekranı kaydırın. Vidyo kaydederken eğer uygulama arkaplana giderse ya da ekran boşsa kayıt daima durdurulacaktır.
Önzilemeyi döndür
@@ -131,7 +129,7 @@
Zoom kaydırma kontrolünü göster
Zoom kontrolü için kaydırma barını göster
ISO yu göster
- Şu anki ISO seviyesini göster(Camera2 API si gerekir)
+ Geçerli ISO seviyesini görüntüler. (Camera2 API gerektirir.)
Boş bellek alanını göster
Ekranda kalan boş cihaz alanını göster
Açıyı göster
@@ -149,15 +147,14 @@
Çerçeve göster
Kırpma yardımcısını göster
Kırpma yardımcısı -eğer daha sonra fotoğraf/vidyoları farklı görüntü oranlarında kırpmayı planlıyorsanız kullanışlıdır- özel görüntü oranlarının nasıl göründüğünü dikdörtgen şeklinde gösterir. WYSIWYG fotoğraf modu ya da vidyo modunda olmak gerekir\n%s
- \"ileti\" mesajları göster
- \"ileti\" mesajlarını açılır pencere şeklinde göster
+ Ekran üstü mesajları göster
+ Ekranda geçici bilgi mesajlarının görüntülenip görüntülenmeyeceği
Önizleme animasyonunu göster
Fotoğraf çekerken önizleme animasyon hareketini göster
Ekranı açık tut
- Etkinleştirilirse, Open Camera kullanıcı arayüzü aktifken ekran kapanmayacaktır
+ Etkinleştirilirse, Kamera arayüzü aktifken ekran kapanmayacaktır
Maksimum parlaklık için zorla
Cihazın öntanımlı ayarına bakmaksızın ekran görüntüsünü maksimum parlaklık için zorlar
-
Fotoğraf ve Vidyo Ayarları
Fotoğraf ayarları…
Vidyo ayarları…
@@ -187,26 +184,26 @@
Vidyo çözünürlüğü
4K UHD vidyo için zorla(deneysel)
3840x2160 çözünürlüğünü arka kameradan vidyo kaydederken etkinleştir- bu ayar sadece cihazınız destekliyorsa çalışacaktır, desteklemiyorsa cihazınız çökebilir!
- Vidyo stabilizasyonunu etkinleştir
- Vidyo stabilizasyonu, önizleme yaparken ve kaydedilmiş vidyolarda kamera hareketine bağlı olarak sarsıntıyı azaltır
+ Dijital video sabitlemeyi etkinleştirin
+ Video sabitleme, hem önizlemede hem de kaydedilen videolarda kameranın hareketinden kaynaklanan titremeyi azaltır. Cihazınız optik görüntü sabitlemeyi (OIS) destekliyorsa bu gereksiz olabilir.
Vidyo bitrate (ortalama)
Vidyoların ortalama bitoranlarını ayarla(değerler yükseldikçe kalite yükselir fakat dosyalar daha fazla alan kaplar; eğer bitoranı desteklenmezse vidyo kaydederken hatalar oluşabilir)\n%s
Vidyo kare oranı (ortalama)
- Vidyoların kare oranını(FPS) ayarla(ortalama olabilir, tamamlanacağının garantisi yoktur ve kare oranı desteklenmezse hatalar oluşabilir)\n%s
+ Videoların kare hızını (FPS) ayarlayın (yaklaşık olabilir, elde edileceği garanti edilmez ve kare hızı desteklenmiyorsa video kaydının başarısız olmasına neden olabilir). Kullanılan gerçek kare hızını bulmak için lütfen sonuç videolarını kontrol edin. Bu ayarın ağır çekim videolar için göz ardı edildiğini unutmayın.
+\n%s
Vidyoların maksimum süresi
Vidyo kaydı belirlenen süreden sonra durdurulacaktır\n%s
Maksimum süreye ulaşıldığında vidyoyu yeniden başlat
Vidyo maksimum süreye(ayarlandı ise) ulaşdığında, bu seçenek vidyoyu belirli bir sayıya ulaşana dek yeniden başlatacaktır\n%s
-
Sesleri kaydet
Vidyo kaydederken sesleri de kaydet
Sesin Kaynağı
- Ses kaydetmede kullanılacak mikrofon\n%s
+ Ses kaydı için kullanılacak mikrofon. Seçeneklerin tam davranışının, seçeneğin cihazınızda nasıl uygulandığına bağlı olduğunu unutmayın.
+\n%s
Ses kanalları
- Ses kaydetmede kullanılacak kanalları mono ya da stereo özelleştir(stereo sadece bazı cihazlarda desteklenir)\n%s
+ Ses kaydetmede kullanılacak kanalları mono ya da stereo özelleştir(stereo sadece bazı cihazlarda desteklenir)
vidyo kaydederken Flaşı aç
Etkinleştirildiğinde, flaş vidyo kaydederken yanıp sönecektir(kameranın hala uzak bir yerde kayıt yaptığını anlamak için kullanılabilir)
-
Karışık
Online yardım
Geliştirmeyi desteklemek için bağışta bulunun
@@ -216,13 +213,11 @@
Hakkında
Uygulama ve eksiklik bilgisi
Ayarları temizle
- Tüm Open Camera ayarlarını öntanımlı ayarlara döndür
- Tüm Open Camera ayarlarını öntanımlı ayarlara döndürmek istediğinize emin misiniz?
-
+ Tüm Kamera ayarlarını varsayılana sıfırla
+ Tüm Camera ayarlarını öntanımlı ayarlara döndürmek istediğinize emin misiniz?
Etkinleştir
Etkin değil
Clipboarda kopyala
-
Fotoğraf çek
Galeri
Pozlama
@@ -231,7 +226,6 @@
Flaş Modu
Son Resmi Sil
Fotoğraf Paylaş
-
Ana Klasör
Yeni Klasör
Bu klasöre kaydetme izniniz yok
@@ -239,14 +233,11 @@
Yeni bir klasör adı girin
Klasör oluşturma hatası
Bu adda bir klasör zaten var
-
Kaydedilecek konumu seçin
Storage Access Framework iptal edildi
-
Mikrofon izni etkin değil
Konum izni etkin değil
-
Sınırsız
3 saniye
5 saniye
@@ -272,24 +263,20 @@
45 dakika
1 saat
Öntanımlı ayar
-
Öntanımlı ayar
yyyy-aa-gg
gg/aa/yyyy
aa/gg/yyyy
Tarih bilgisi yok
-
Flaş Kapalı
Flaş Otomatik
Flaş Açık
Flaş Işığı
Kırmızı Göz
-
Camcorder
Harici mikrofon (varsa)
Öntanımlı ses kaynağı
Kişi sesine optimize et
-
Öntanımlı ayar
100kbps
200kbps
@@ -314,7 +301,6 @@
80Mbps
90Mbps
100Mbps
-
Kapalı
2x
3x
@@ -329,7 +315,6 @@
200x
500x
Sınırsız
-
Gecikmesiz
1sn
2sn
@@ -347,7 +332,6 @@
30da
1sa
2sa
-
Yok
1 (1:1)
1.25 (5:4)
@@ -359,15 +343,79 @@
2.33 (21:9)
2.35 (47:20)
2.4 (12:5)
-
Solak kullanıcı arayüzü
Sağ el kullanıcı arayüzü
-
Gölgeli yazı
Düz yazı
-
+ About
+ Derleme sürümü
+ Kamera Camera\'dan çatallandı
+ Yapımcılar
+ Kaynak kodu
+ lisans
+ Kamera bilgileri
+ Kullanım koşulları
Kapalı
Sadece sanal ekran navigasyon butonlarını gizle
GUI(Grafik arayüz) gizle
Herşeyi gizle
-
+ Ses kontrol hassasiyeti
+ Fotoğraf çekildiğini belirtmek için ekranda bir kenarlık görüntüleyin
+ Fotoğrafların bir arka plan iş parçacığına kaydedilip kaydedilmeyeceği (daha hızlı çalışma için)
+ Arkaplan kayıt uygulaması kullan
+ Maksimum dosya boyutuna ulaşınca çekimi yeniden başlat
+ Ön kameraya geç
+ Yüksek bir ses çıkarın
+ Tekrar gösterme
+ Gürültü Azaltma
+ Coğrafi etiketleme (damga ve altyazı seçenekleri de dahil olmak üzere fotoğraf ve videolarda konum verilerinin saklanması) için konum izni gereklidir. Konum izni ayrıca (en azından Android 11 ve öncesi için) Bluetooth LE uzaktan kumanda cihazlarına bağlanmak için de gereklidir.
+ Gürültü Azaltma orijinal görüntüler
+ RAW
+ Alternatif flaş yöntemi kullan
+ Video moduna geç
+ Video kaydına başla
+ GB
+ Standart
+ Taramalı Çekim
+ GA
+ Tüm fotoğrafları HDR olarak kaydet
+ Hata ayıklama seçenekleri
+ Kamerayı kullanmak için kamera izni gerekli
+ HDR
+ Sesli video kaydetmek ve \"Ses kontrolü\" seçeneklerini kullanmak için mikrofon izni gereklidir
+ Tarayıcınızda Kamera web sitesini başlatın
+ Kamera başlatıldığında otomatik odaklama yapılıp yapılmayacağı. Başlatma sırasında flaşın açılması sorunu yaşıyorsanız, bu seçeneği devre dışı bırakın
+ Pozlama Parantezleme
+ Std
+ Maksimum dosya boyutuna ulaşıldığında otomatik olarak yeniden başlatılıp başlatılmayacağı (cihaz varsayılan maksimum dosya boyutu veya kullanıcı tarafından belirtilen)
+ Pzlm {}
+ Fotoğraf moduna geç
+ Arka kameraya geç
+ (Yaklaşık) maksimum dosya boyutuna ulaşıldığında video kaydı duracak ve/veya yeniden başlayacaktır (aşağıdaki seçeneğe bakın). Birçok Android cihazın videolar için maksimum dosya boyutuna sahip olduğunu unutmayın (genellikle 2GB veya 4GB civarında), ancak bu seçenek belirli bir değerin ayarlanmasına izin verir. Bu seçeneğin bir cihazın yerleşik maksimum değerini artırmak için kullanılamayacağını unutmayın.
+\n%s
+ Video için maksimum dosya boyutu
+ Fotoğraf çekerken kenarlığı göster
+ Izgara
+ Başlangıçta otomatik odaklama gerçekleştirin
+ Dosya adı için zaman formatı
+ Ses (yüksek gürültü) seçeneği için gürültü seviyesi hassasiyeti
+ Ses kontrol ayarları
+ Pozlama Parantezleme
+ Cihazınız Camera2 API ile hatalı flaş davranışına sahipse bunu etkinleştirin
+ Fotoğraf veya video gibi sonuç dosyalarını kaydetmek için depolama okuma/yazma izni gereklidir
+ Hata ayıklama seçenekleri
+ IZINLER MEVCUT DEĞIL
+ İzin gerekli
+ Etkinleştirilirse, HDR fotoğraf modu kullanılırken, üç temel pozlama görüntüsünün yanı sıra son HDR fotoğrafı da kaydedilir. Bunun, özellikle \"Fotoğrafları damgala\" veya Otomatik seviye gibi seçenekler de kullanılıyorsa, kaydetmeyi yavaşlatacağını unutmayın.
+ Fotoğraf Damgası
+ Fotoğraf modu
+ Ses dinlemesi durdur
+ \"Cheese\" diyin
+ Maksimum dosya boyutu
+ MB
+ Ses dinlemesi başlat
+ Video kaydını durdur
+ Bu klasöre kayıt edilemiyor
+ RAW fotoğraf kaydı başarısız
+ Sıradaki
+
\ No newline at end of file
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 6c9db92d5c3ce6a213d8c8f3ed3efd20b5d6dd4e..8f353b0fb42ba5fcaa489ec2fee2c4e5dccd3890 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -1,24 +1,25 @@
-
- Open Camera
+ Камера
Налаштування
Налаштування зринаючих вікон
"Гаразд (Більше це повідомлення не з'явиться.)"
-
- Увімк
- Вимк
-
+ Увімк
+
+ Вимк
+
Виберіть теку для збереження:
Очистити історію теки
Очистити історію теки?
Вибрати іншу теку
Теку для збереження змінено на:
Запис зупинено
- повторів залишилось
+ повторів залишилось
+
"Не вдалося з'єднатися з камерою"
Помилка, відеофайл може бути пошкоджено
- Не підтримується на вашому пристрою
+ Не підтримується на вашому пристрою
+
Невідома помилка, відео зупинено
Сервер впав, відео зупинено
Відео досягло максимальної тривалості
@@ -57,7 +58,6 @@
Кольоровий ефект
Сцена
Баланс білого
-
Кут
Напрямок
Не вділося відкрити камеру.
@@ -68,10 +68,8 @@
"Пам'ять"
[Заблоковано:
Проведіть по екрану, аби розблокувати]
-
Не вдалося додати відмітку
м
-
Ефекти
Авто-стабілізація
Зображення буде стабілізуватися. Не рекомендується на слабких пристроях
@@ -89,7 +87,6 @@
Ігнорування системної орієнтації екрану пристрою\n%s
Розпізнавання облич
"Розпізнавання облич в об'єктиві для фокусування"
-
Керування
Таймер
Звук таймеру
@@ -107,21 +104,18 @@
Відтворення звуку під час знімку фотографії
Кнопки гучності
Налаштування керування звуком
-
Чутливість керування
-
Тека збереження
"Ім'я теки для збереження фото та відео (також може бути повний шлях)"
- Використовувати Storage Access Framework для збереження фото та відео
+ Чи використовувати Storage Access Framework для збереження фотографій і відео. Це потрібно ввімкнути, щоб дозволити збереження на зовнішні SD-карти. На Android 10+ цю опцію слід увімкнути, якщо ви хочете зберігати в папку за межами DCIM.
Префікс для фото
Префікс імен файлів для знімків
Префікс для відео
Префікс імен файлів для відео
Формат часу для імені файлу
Камера на екрані блокування
- Якщо увімкнуто, то Open Camera все одно буде показуватись над будь-яким екраном блокування (ви можете отримати доступ до налаштувань, галереї и т.п.)
+ Якщо увімкнено, Камера все одно відображатиметься над будь-яким екраном блокування (вам все одно доведеться розблокувати, щоб отримати доступ до Налаштувань, Галереї тощо)
Автофокус під час запуску
-
Блокувати екран під час запису відео
Під час запису відео, графічний інтерфейс буде заблоковано, аби запобігати випадковому припиненню запису. Проведіть по екрану, аби розблокувати. Зверніть увагу, що запис відео припиниться, якщо додаток перейде у фоновий режим або ж згасне екран.
Поворот попереднього перегляду
@@ -153,20 +147,20 @@
Показувати батарею
Показувати поточний рівень заряду батареї
Показати сітку
- Сітка
+ Сітка
+
Порадник по обрізанню фото
Показ прямокутника, який показуватиме відношення сторін - корисно, якщо ви плануєте обрізати фото/відео. Потребує WYSIWYG режим фотознімку чи режим відео\n%s
- Зринаючі повідомлення
- Показувати зринаючі повідомлення під час роботи
+ Показувати екранні повідомлення
+ Чи відображати тимчасові інформаційні повідомлення на екрані
Показувати ескіз анімації
Показ пересування ескізу анімації під час знімку фотографії
Показувати рамку під час фотографування
Показувати рамку на екрані для індикації режиму фотографування
Не вимикати екран
- Якщо увімкнуто, екран не буде вимикатися, доки активний інтерфейс Open Camera
+ Якщо увімкнено, екран не вимикається, поки активний основний інтерфейс камери
Максимальна яскравість
Встановлення максимальної яскравості під час зйомки
-
Якість фото та відео
Налаштування фото…
Налаштування відео…
@@ -200,31 +194,28 @@
Якість відео 4K UHD (експериментально)
При виборі розширення (3840х2160) для запису через задню камеру, це буде працювати лише тоді, якщо ваш пристрій підтримує вказаний формат!
Увімкнути стабілізацію відео
- Стабілізація відео зменшує тряску, через рух камерою
+ Стабілізація відео зменшує тремтіння, спричинене рухом камери, як у попередньому перегляді, так і в записаному відео. Це може бути непотрібним, якщо ваш пристрій підтримує оптичну стабілізацію зображення (OIS).
Відео бітрейт (приблизно)
Вибір бітрейту відео (чим вище, тим краще якість, але файл буде займати більше місця на флеш-картці. Якщо бітрейт не підтримується, це може викликати помилку під час запису відео)\n%s
Частота кадрів відео (приблизно)
- Кількість кадрів на секунду (FPS) у відео (може викликати помилку під час запису, якщо частота не підтримується)\n%s
+ Встановіть частоту кадрів (FPS) для відео (може бути приблизною, не гарантується, що буде досягнуто, і може призвести до збою запису відео, якщо частота кадрів не підтримується). Будь ласка, перевірте отримані відео, щоб дізнатися фактичну частоту кадрів. Зверніть увагу, що цей параметр ігнорується для сповільнених відео.
+\n%s
Максимальна тривалість відео
Відеозапис припиниться, через вказаний час\n%s
Записати нове відео, коли буде досягнуто ліміту
При досягненні ліміту тривалості, буде записано нове відео. (стільки разів, скільки ви вказали)\n%s
Максимальний розмір файлу відео
-
-
-
Запис звуку
Запис звуку під час запису відео
Джерело звуку
Мікрофон для запису звуку\n%s
Число каналів
- Налаштування моно чи стереозвуку (стерео доступно не для всіх пристроїв)\n%s
+ Налаштування моно чи стереозвуку (стерео доступно не для всіх пристроїв)
Спалах під час запису відео
Якщо увімкнуто, спалах буде вмикатися/вимикатися під час запису відео (можна використовувати, аби виконувати запис на відстані)
-
Різне
Онлайн допомога
- Відкрити сайт Open Camera в веб браузері
+ Відкрити сайт Camera в веб браузері
Подякувати
Якщо вам сподобався цей додаток, киньте монетку. Ви можете зробити це, придбавши мій додаток. Дякую!
Використовувати Camera2 API
@@ -232,13 +223,11 @@
Про додаток
Інформація
Скидання налаштувань
- Скинути всі налаштування Open Camera на стандартні значення
- Ви дійсно бажаєте скинути всі налаштування Open Camera на стандартні значення?
-
+ Скинути всі налаштування Camera на стандартні значення
+ Ви дійсно бажаєте скинути всі налаштування Camera на стандартні значення?
Доступно
Не доступно
Копіювати до буферу
-
Зробити фото
Галерея
Експозиція
@@ -247,11 +236,10 @@
Спалах
Перейти на фронтальну камеру
Перейти на основну камеру
- >Перейти до відео-режиму
- >Перейти до фото-режиму
+ >Перейти до відео-режиму
+ >Перейти до фото-режиму
Видалити останній знімок
Поділитися
-
Батьківська тека
Нова тека
Неможливо записати до даної теки
@@ -259,99 +247,52 @@
"Введіть ім'я нової теки"
Не вдалося створити теку
Тека вже існує
-
Оберіть місце для збереження
Storage Access Framework скасовано
-
Доступ до мікрофона не надано
Доступ до місця-розташування не надано
-
Почати запис відео
Зупинити запис відео
-
Максимальний розмір файлу
- МБ
- ГБ
-
+ МБ
+
+ ГБ
+
Увімкнути керування звуком
Вимкнути керування звуком
Скажіть \"сир\"
Створіть сильний шум
-
-
-
-
-
Надалі не показувати
-
Режим фото
- Std
+ Std
+
Стандартний
HDR
Expo {}
-
Штамп на фото
Зберішати всі зображення в режимі HDR
-
-
-
-
-
-
-
-
-
Налаштування відлагодження
Налаштування відлагодження
-
-
-
-
-
-
-
-
- с
-
+ с
+
Недостатньо вільного міця для запису відео
Запис відео зупинено\nКритично низький рівень заряду батареї
-
-
-
- Темніше
- Світліше
+ Темніше
+
+ Світліше
+
Витримка
-
Суттєва помилка камери
-
-
-
-
Камера
Записати відео
Селфі
-
-
-
-
Калібрувати рівень кута
-
-
Калібрувати
Скинути
Рівень відкалібровано
Скидання калібровки рівня
-
DRO
-
-
-
-
-
-
-
-
Без обмеження
3 секунди
5 секунд
@@ -376,30 +317,20 @@
30 хвилин
45 хвилин
Година
-
-
-
-
Запис відео призупинено
Запис відео продовжено
Призупинити запис відео
Продовжити запис відео
-
Захоплення…
-
Не вдалося ініціалізувати прослуховування аудіо
-
Типово
-
ЛишеJPEG
JPEG та DNG (RAW)
-
Типово
рррр-мм-дд
дд/мм/рррр
мм/дд/рррр
Відсутня
-
Спалах Вимк.
Спалах Авто
Спалах Увімк.
@@ -407,12 +338,10 @@
Червоні очі
Спалах екрану Авто
Спалах екрану Увімк.
-
Відеокамера
Зовнішній мікрофон (якщо є)
Типово
Внутрішній мікрофон
-
Типово
100kbps
200kbps
@@ -437,7 +366,6 @@
80Mbps
90Mbps
100Mbps
-
Вимкнуто
2x
3x
@@ -452,7 +380,6 @@
200x
500x
Постійно
-
Без затримки
Секунда
2 секунди
@@ -470,14 +397,12 @@
30 хвилин
Година
2 години
-
Типово для пристрою
100МБ
200МБ
300МБ
500МБ
1ГБ
-
Немає
1 (1:1)
1.25 (5:4)
@@ -489,7 +414,6 @@
2.33 (21:9)
2.35 (47:20)
2.4 (12:5)
-
+3 (висока чутливість)
+2
+1
@@ -497,20 +421,26 @@
-1
-2
-3 (низька чутливість)
-
Інтерфейс для лівші
Інтерфейс для правші
-
Текст с тінью
Звичайний текст
-
+ About
+ Збірка версії
+ Камера роздвоєна від Camera
+ Автори
+ Вихідний код
+ Ліцензія
+ Інформація про камеру
+ Умови користування послугами
Вимкнути
Приховати кнопки навігації
Приховати GUI
Приховати все
-
Немає
Низький шум
- Голосова команда: \"сир\"
-
-
+ Голосова команда: \"сир\"
+
+ Чи виконувати автофокусування під час запуску камери. Якщо у вас виникла проблема ввімкнення спалаху під час запуску, вимкніть цю опцію
+ Чутливість до рівня шуму для опції аудіо (гучний шум)
+
\ No newline at end of file
diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml
index b4c98faa163f3343f79da31ae19a941859809763..7e1189a4244971fef2681d7b397431630f965618 100644
--- a/app/src/main/res/values-v21/styles.xml
+++ b/app/src/main/res/values-v21/styles.xml
@@ -8,9 +8,14 @@
+
diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml
index 935011d8a5d842f5116d5479db7ead43230ea012..28ac6ecdd7c323d442aa2fc0848adc122780ce91 100644
--- a/app/src/main/res/values-vi/strings.xml
+++ b/app/src/main/res/values-vi/strings.xml
@@ -1,7 +1,7 @@
- Open Camera
+ Camera
Cài đặt
Cài đặt cửa sổ bật lên
OK (Thông báo này không hiển thị nữa)
@@ -118,9 +118,9 @@
Đặt tiền tố trong tên tệp khi lưu video
Định dạng thời gian tên tệp
Hiển thị máy ảnh khi đã khóa
- Nếu kích hoạt, Open Camera vẫn hiển thị trên bất kỳ màn hình khóa nào (bạn vẫn phải mở khóa để truy cập Cài đặt, Thư viện, v.v…)
+ Nếu kích hoạt, Camera vẫn hiển thị trên bất kỳ màn hình khóa nào (bạn vẫn phải mở khóa để truy cập Cài đặt, Thư viện, v.v…)
Tự động lấy nét khi khởi động
- Tự động lấy nét khi Open Camera được khởi động. Nếu bạn gặp sự cố bật đèn flash khi khởi động, hãy tắt tùy chọn này.
+ Tự động lấy nét khi Camera được khởi động. Nếu bạn gặp sự cố bật đèn flash khi khởi động, hãy tắt tùy chọn này.
Khóa màn hình khi quay video
Khi quay video, giao diện người dùng sẽ bị khóa để ngăn việc vô tình dừng quay. Trượt màn hình để mở khóa. Lưu ý video sẽ dừng quay nếu ứng dụng chạy dưới nền hoặc màn hình bị trống.
Xoay xem trước
@@ -162,7 +162,7 @@
Hiển thị đường viền
Hiện đường viền trên màn hình khi chụp ảnh
Giữ màn hình bật
- Nếu kích hoạt, màn hình sẽ không tắt khi Giao diện người dùng chính của Open Camera đang hoạt động
+ Nếu kích hoạt, màn hình sẽ không tắt khi Giao diện người dùng chính của Camera đang hoạt động
Buộc độ sáng tối đa
Bắt buộc màn hình hiển thị ở độ sáng tối đa, thay vì mặc định của thiết bị
@@ -217,13 +217,13 @@
Nguồn âm thanh
Micrô được sử dụng để ghi âm\n%s
Kênh âm thanh
- Thiết lập âm thanh đơn hoặc nổi (chỉ hỗ trợ âm thanh nổi trên một số thiết bị)\n%s
+ Thiết lập âm thanh đơn hoặc nổi (chỉ hỗ trợ âm thanh nổi trên một số thiết bị)
Nháy đèn flash khi quay video
Nếu kích hoạt, đèn flash sẽ nháy khi quay video (có thể được sử dụng để cảnh báo camera vẫn đang quay ở khoảng cách xa)
Xem thêm
Trợ giúp trực tuyến
- Truy cập trang chủ Open Camera bằng trình duyệt của bạn
+ Truy cập trang chủ Camera bằng trình duyệt của bạn
Hỗ trợ phát triển
Nếu bạn thích ứng dụng này, vui lòng cân nhắc việc quyên góp để hỗ trợ phát triển. Bạn có thể quyên góp bằng cách mua ứng dụng quyên góp của tôi - nhấn vào đây để mở trang ứng dụng. Xin cảm ơn!
Sử dụng Camera2 API
@@ -231,8 +231,8 @@
Giới thiệu
Thông tin ứng dụng và gỡ lỗi
Khôi phục cài đặt
- Khôi phục cài đặt Open Camera về mặc định ban đầu
- Bạn có chắc muốn khôi phục cài đặt Open Camera về mặc định ban đầu không?
+ Khôi phục cài đặt Camera về mặc định ban đầu
+ Bạn có chắc muốn khôi phục cài đặt Camera về mặc định ban đầu không?
Khả dụng
Không khả dụng
@@ -717,7 +717,7 @@
Quản lý cài đặt
Sao lưu thiết lập
- Lưu tất cả thiết lập của Open Camera vào một tệp
+ Lưu tất cả thiết lập của Camera vào một tệp
Tên tệp thiết lập
Khôi phục thiết lập
@@ -779,6 +779,14 @@
Đổ bóng
Thuần túy
+ About
+ Phiên bản xây dựng
+ Máy ảnh được rẽ nhánh từ Camera
+ Tác giả
+ Mã nguồn
+ Giấy phép
+ Thông tin camera
+ Điều khoản dịch vụ
Tắt
Chỉ ẩn các nút điều hướng
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 45499ca1c1bc84fa24fbc9b636ecd0056517e5e4..da570207ef9b21a3b8b6eb3d638314a5dcc387dc 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -1,7 +1,7 @@
- Open Camera
+ Camera
设置
弹出设置
好 (此消息将不再显示)
@@ -33,9 +33,9 @@
视频
曝光锁定
曝光解锁
- 已取消倒计时
+ 已取消定时器
已取消连拍模式
- 开始倒计时
+ 已开始定时器
保存视频文件失败
录制视频失败
已开始录制视频
@@ -90,13 +90,13 @@
通过识别人脸完成对焦
相机控制
- 倒计时
- 倒计时蜂鸣器
- 倒计时、连拍间隔时发出蜂鸣器声
+ 定时器
+ 定时器蜂鸣
+ 当计时器倒数或连拍模式延迟时蜂鸣
语音定时器倒计时
- 语音播报倒计时或连拍延时(从60秒开始倒数)
+ 说出定时器倒计时或连拍模式延时(从60秒开始)
连拍模式
- 连拍间隔时长
+ 连拍模式间隔
更多相机控制…
触摸快门
拍照只需通过触摸预览
@@ -105,7 +105,7 @@
快门声音
拍照时播放声音
音量键功能
- 声控拍照
+ 语音识别
麦克风灵敏度
使用语音识别时麦克风过滤噪声的阈值
保存位置
@@ -116,9 +116,9 @@
保存视频前缀
用于保存视频文件名的前缀
锁定时显示相机
- 如果开启,Open Camera 将仍然在任何锁屏之上显示 (你仍然必须解锁来访问设置,图库等)
+ 如果开启,Camera 将仍然在任何锁屏之上显示 (你仍然必须解锁来访问设置,图库等)
启动时执行自动对焦
- Open Camera 启动时是否执行自动对焦。如果启动时开启闪光灯有问题,禁用此选项
+ Camera 启动时是否执行自动对焦。如果启动时开启闪光灯有问题,禁用此选项
录像时锁定屏幕
当录制视频时,图形用户界面将被锁定以防止意外的停止录像。滑动屏幕以解锁。注意,如果程序转到后台或屏幕是空白,视频录制总是会停止。
旋转预览
@@ -140,7 +140,7 @@
显示角度
在屏幕上显示当前的设备与铅垂线的夹角
显示角度线
- 显示水平基准线
+ 显示水平线
角度高亮颜色
当相机几乎是水平时的高亮颜色
显示罗盘方向
@@ -153,12 +153,12 @@
网格
显示裁剪框
屏幕上显示一个预设比例的矩形框体。\n如果你拍照后会裁剪照片/视频为不同长宽比的照片,这就很有用了。\n%s
- 显示toast消息
- 是否显示弹出的toast消息
+ 显示 \"toast\" 消息
+ 是否显示弹出的 \"toast\" 消息
显示缩略图动画
当拍照时显示移动缩略图动画
保持屏幕常亮
- 如果开启,当 Open Camera 的主界面激活时,屏幕将不会关闭。
+ 如果开启,当 Camera 的主界面激活时,屏幕将不会关闭。
强制最大亮度
强制屏幕以最大亮度显示,而不是设备默认值
@@ -168,7 +168,7 @@
位置设置…
相机分辨率
照片质量
- 设置保存照片的质量(推荐值90%%)\n%s
+ 设置保存的照片质量(建议值是90%%)\n%s
存储位置数据 (地理标记)
在照片/视频中存储 GPS 位置数据
存储罗盘方向
@@ -209,8 +209,8 @@
录像时录音
音频源
麦克风用于录制音频\n%s
- 录音通道数
- 规定使用单声道或者立体声进行录音(仅部分设备支持立体声)\n%s
+ 音频声道
+ 规定使用单声道或者立体声进行录音(仅部分设备支持立体声)。
录像时闪光
如果启用,录像时闪光将开启/关闭 (在一段距离外可以用来告诉相机仍然在录制)。
@@ -223,8 +223,8 @@
关于
应用程序和调试信息
复位设置
- 重设所有 Open Camera 设置为默认
- 你确定要重设所有 Open Camera 设置为默认值吗?
+ 重设所有 Camera 设置为默认
+ 你确定要重设所有 Camera 设置为默认值吗?
可用
不可用
@@ -262,7 +262,7 @@
开始音频监听
停止音频监听
- 说 \"cheese\"
+ 说 \"cheese\"
发出大的声音
无限
@@ -339,7 +339,7 @@
RAW
使用后台线程
使用后台线程保存照片(操作更流畅)
- 在浏览器中打开Open Camera网站
+ 在浏览器中打开Camera网站
切换到前摄像头
切换到后摄像头
切换到摄像模式
@@ -424,13 +424,13 @@
显示罗盘方向线
暂停录像
继续录像
- 显示拍照按钮
+ 显示“拍照按钮”
显示拍照、录像按钮。除非你有其他方法(比如硬件快门、使用音量键),否则不应该取消勾选
包围曝光的图片数量\n%s
- 开启降噪模式后仍然保存原图。注意这会让保存照片变慢很多。\n%s
+ 在降噪模式中保存原图。注意这会让保存照片慢很多。\n%s
停止录像\n电量严重不足
检查电池报警
@@ -456,7 +456,7 @@
快速HDR/包围曝光
允许更快地完成HDR/包围拍照。如果您的设备在使用HDR/包围模式拍照时出现了问题,请禁用此功能。
- 没有在设备上找到文件选择器,所以不能使用辅助图像功能。
+ 在设备上没有找到文件选择器,所以不能使用辅助图像功能。
无法打开文件
允许在录像时拍照
@@ -625,15 +625,11 @@
降噪(NR)
照片水印
保存HDR模式采集的所有原图
- 启用后使用HDR模式拍照会保存三个基本曝光图像以及最终的HDR照片。注意这会使保存速度变慢,尤其是同时启用了“照片水印”或“自动水平”等功能时。
+ 启用后使用HDR模式拍照会保存三个基本曝光图像以及最终的HDR照片。注意这会使保存速度变慢,尤其是启用了“照片水印”或自动水平等功能时。
没有获得授权
需要授权
操作相机需要相机权限
- 启用虚拟捕捉修复HDR/包围曝光
- 如果您的设备在使用HDR或包围曝光模式拍摄照片时出现问题(比如包围曝光模式的图像的曝光度相同),请尝试启用此选项。只有同时启用了下面的快速HDR/包围曝光选项时才会有效。
- 发现和连接BLE远程控制设备需蓝牙扫描/连接权限。
- 未知设备(蓝牙连接权限不可用)
录像和语音控制需要麦克风权限
自动开启屏幕补光
@@ -652,12 +648,12 @@
配置管理器
保存配置
- 保存Open Camera所有选项的至文件中
+ 保存Camera所有选项的至文件中
保存的文件名
恢复配置
- 恢复配置文件到Open Camera。注意这会覆盖现在的所有设定值!
- 这个选项允许你选择一个先前保存的配置文件并恢复到Open Camera中。需要注意这个文件载入后会覆盖当前所有选项的设定值!
+ 恢复配置文件到Camera。注意这会覆盖现在的所有设定值!
+ 这个选项允许你选择一个先前保存的配置文件并恢复到Camera中。需要注意这个文件载入后会覆盖当前所有选项的设定值!
视频格式
录像的编码和格式\n%s
@@ -749,7 +745,7 @@
不支持蓝牙
未知设备
断开控制时熄屏
- 提示:打开Open Camera前,请把默认亮度调到最低
+ 提示:打开Camera前,请把默认亮度调到最低
使用盐水计算深度
设置正确的水下兔笼的类型,可以提高水下拍摄时深度计算的准确性
控制器已连接
@@ -799,7 +795,7 @@
循环闪光灯的模式
显示闪光灯按钮
- 按下按钮后切换闪光灯模式,而不是弹出选项菜单。
+ 按下按钮后循环切换闪光灯模式,而不是弹出菜单选项。
允许RAW包围曝光
@@ -834,7 +830,15 @@
保存原图
保存原图和debug XML
- ID
+ ID
+ About
+ 内部版本
+ 相机是从Camera分叉的
+ 作者
+ 源代码
+ 牌照
+ 相机信息
+ 服务条款
关闭
只隐藏屏幕上的虚拟导航按钮
@@ -918,8 +922,8 @@
2.4
2.6
2.8
- 辅助图像透明度
- 设置辅助图像的透明度值。值越低越透明,值越高越不透明。\n%s
+ 辅助图片透明度
+ 用于辅助图片的透明度值。较低的值代表更透明,较高的值代表更不透明。\n%s
外部相机
超广角
切换至外部相机
@@ -946,21 +950,13 @@
保存三轴运动信息
在照片的 Exit 用户备注字段保存设备的三轴运动信息(仅适用于JPEG格式)
- 启用此功能后,可以点击屏幕上的麦克风按钮来启动监听。麦克风检测到声音后,自动拍照或者录像。
+ 根据噪点拍照。
+ 当启用后,使用屏幕上的麦克风按钮来启动监听。
\n%s
点击来对焦,然后按下蓝色相机按钮以拍照。要禁用最大屏幕亮度,查阅设置/屏幕GUI/\"强制最大亮度\"选项。要在 Android 5 之后的设备上保存至 SD 卡,查阅设置/更多相机控制/\"Storage Access Framework\"。如需更多帮助,在设置中点击“在线帮助”。
- 不使用
+ 无
大的声音
语音命令: \"cheese\"
- 需要存储读/写权限才能保存照片或视频文件
- 地理标记需要位置权限(将位置数据存储在照片和视频,包括水印和)。还需要位置权限(至少对于 Android 11 及更早版本)才能连接到BLE远程控制设备。
- HDR映射
- 在HDR模式中使用的色调映射算法\n%s
- 删除设备 EXIF 信息
- 是否删除 JPEG 照片中的设备 EXIF 信息。其他 EXIF 信息(如坐标/海拔)不受影响,RAW/DNG 和视频也不受影响。\n%s
- 不删除设备 EXIF 信息
- 删除设备 EXIF 信息
- 删除日期/时间以外的信息
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index d010b400c29a917adf03296ed4db8383d4f5c201..263fd7db1559117750ce0caec56acde0cf6392d1 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -1,7 +1,7 @@
- Open Camera
+ Camera
設定
彈出設定
好 (此訊息將不再顯示)
@@ -119,9 +119,9 @@
用於儲存影片檔名的前置字串
檔案名稱的時間格式
鎖定時顯示相機
- 如果開啟,Open Camera 將在任何鎖定畫面上顯示 (您仍然必須解鎖來存取設定、相簿等)
+ 如果開啟,Camera 將在任何鎖定畫面上顯示 (您仍然必須解鎖來存取設定、相簿等)
啟動時自動對焦
- Open Camera 啟動時是否要自動對焦。如果您有啟動時閃光燈開啟的問題,請停用此選項
+ Camera 啟動時是否要自動對焦。如果您有啟動時閃光燈開啟的問題,請停用此選項
錄影時鎖定螢幕
當錄製影片時,圖形化使用者介面將被鎖定以防止意外的停止錄影。滑動螢幕以解鎖。注意,如果程式進入背景或螢幕關閉,影片錄製會停止。
旋轉預覽
@@ -163,7 +163,7 @@
拍照時顯示邊緣
在螢幕上顯示邊緣來表示拍照
保持螢幕常亮
- 如果開啟,當 Open Camera 的使用者介面啟動時,螢幕將不會關閉。
+ 如果開啟,當 Camera 的使用者介面啟動時,螢幕將不會關閉。
強制最大亮度
強制螢幕以最大亮度顯示,而不是裝置預設值
@@ -218,13 +218,13 @@
音源
用於錄製音訊的麥克風。請注意,這個選項真正的行為取決於您的裝置如何實作這個選項。\n%s
音源頻道
- 指定使用單聲道或立體聲來錄音 (立體聲只支援某些裝置)\n%s
+ 指定使用單聲道或立體聲來錄音 (立體聲只支援某些裝置)
錄影時閃光
如果啟用,錄影時閃光將開啟/關閉 (在一段距離外可以用來判斷相機仍然在錄製)
其他
線上說明
- 在瀏覽器中開啟 Open Camera 網站
+ 在瀏覽器中開啟 Camera 網站
捐贈以支援開發
如果您喜歡這個程式,請考慮捐助。您可以透過購買我的“捐助 app”來進行捐助 - 點擊此選項將打開我的捐助 app 頁面。謝謝!
使用 Camera2 API
@@ -232,8 +232,8 @@
關於
應用程式和除錯資訊
重設設定
- 重設所有 Open Camera 設定為預設值
- 您確定要重設所有 Open Camera 設定為預設值嗎?
+ 重設所有 Camera 設定為預設值
+ 您確定要重設所有 Camera 設定為預設值嗎?
可用
不可用
@@ -720,7 +720,7 @@
設定管理員
儲存設定
- 將所有 Open Camera 的設定儲存在一個檔案中
+ 將所有 Camera 的設定儲存在一個檔案中
儲存的檔案名稱
還原設定
@@ -793,7 +793,7 @@
不支援藍牙。
未知裝置
遠端中斷連線時螢幕變暗
- 提示:啟動 Open Camera 前,請把預設亮度調到最低。
+ 提示:啟動 Camera 前,請把預設亮度調到最低。
使用鹽水計算深度
使用水下防水盒時,如果選擇正確的水的類型,可以提高拍攝的準確性。
遠端已連線
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index bdf9a4307e19660f83400f5d33a665c1574b7e2a..dddf2a973c45a80e6e956190cf0a5df4acde8704 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -1,10 +1,10 @@
- - drawable/focus_mode_auto
- - drawable/focus_mode_infinity
- - drawable/baseline_filter_vintage_white_48
- - drawable/focus_mode_locked
+ - drawable/ic_focus_mode_auto
+ - drawable/ic_focus_mode_infinity
+ - drawable/ic_focus_mode_macro
+ - drawable/ic_focus_mode_locked
- drawable/focus_mode_manual
- drawable/focus_mode_fixed
- drawable/focus_mode_edof
@@ -500,14 +500,14 @@
- 200
- - drawable/flash_off
- - drawable/flash_auto
- - drawable/flash_on
- - drawable/baseline_highlight_white_48
- - drawable/baseline_remove_red_eye_white_48
- - drawable/flash_auto
- - drawable/flash_on
- - drawable/baseline_highlight_white_48
+ - drawable/ic_camera_flash_off
+ - drawable/ic_camera_flash_auto
+ - drawable/ic_camera_flash_on
+ - drawable/ic_camera_highlight
+ - drawable/ic_camera_remove_red_eye
+ - drawable/ic_camera_flash_auto
+ - drawable/ic_camera_flash_on
+ - drawable/ic_camera_highlight
- @string/flash_off
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bdfc2b1e810861e1e082a81f660b203ab7cf4fb3
--- /dev/null
+++ b/app/src/main/res/values/attrs.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index af1ff9b20a13d5f794f2b920901630d86dd91a47..e6a4a2564ad68b6d8e4b7e8594c4418c5c739bc7 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -6,4 +6,24 @@
#2F9CF2
#40C4FF
#F44336
+
+
+ #FFFFFF
+ #E5000000
+ #8BC34A
+ #3F51B5
+ #CB000000
+
+ @android:color/white
+ @color/e_floating_background_dark
+ @color/e_accent_dark
+ #4F000000
+ @color/e_background_dark
+ @android:color/white
+ @color/e_primary_text_color_dark
+ @color/e_secondary_text_color_dark
+
+ @color/e_disabled_color_light
+ @color/e_disabled_color_dark
+ #E5000000
diff --git a/app/src/main/res/values/config.xml b/app/src/main/res/values/config.xml
new file mode 100644
index 0000000000000000000000000000000000000000..13ff57447cc01b15122e7758a687c48fdf3a7614
--- /dev/null
+++ b/app/src/main/res/values/config.xml
@@ -0,0 +1,30 @@
+
+
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 296bca7be66c1dc26d1ca7b7be383be7d4e8525a..0fe4a6a1aeb13eff5b143390619df70b4a23bc36 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -5,5 +5,10 @@
16dp
- 60dp
+ 56dp
+ 16dp
+ 36dp
+ 48dp
+ 70dp
+ 195dp
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c98c88e01e0b1de12cc28a428759e9e86d9f4efb..32101a90c7e374d418301068786630f7cf71329f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,7 +1,7 @@
- Open Camera
+ Camera
Settings
Popup settings
OK (This message won\'t show again)
@@ -120,9 +120,9 @@
The prefix to use for the save filenames for videos
Time format for filename
Show camera when locked
- If enabled, Open Camera will still show above any lockscreen (you\'ll still have to unlock to access Settings, Gallery etc)
+ If enabled, Camera will still show above any lockscreen (you\'ll still have to unlock to access Settings, Gallery etc)
Perform auto-focus on startup
- Whether to auto-focus when Open Camera is started. If you have the problem of flash turning on when starting, disable this option
+ Whether to auto-focus when Camera is started. If you have the problem of flash turning on when starting, disable this option
Lock screen when recording video
When recording video, the GUI will be locked to prevent accidentally stopping recording. Swipe the screen to unlock. Note that video recording will always stop if the app goes into background or the screen is blanked.
Rotate preview
@@ -164,7 +164,7 @@
Show border when taking photo
Display a border on the display to indicate taking a photo
Keep display on
- If enabled, the screen won\'t switch off while the main Open Camera UI is active
+ If enabled, the screen won\'t switch off while the main Camera UI is active
Force maximum brightness
Force screen display to be at maximum brightness, rather than device default
@@ -219,13 +219,13 @@
Audio source
Microphone to use for recording audio. Note that the exact behaviour of the options depends on how the option is implemented on your device.\n%s
Audio channels
- Specify mono or stereo for recording audio (stereo only supported on some devices)\n%s
+ Specify mono or stereo for recording audio (stereo only supported on some devices)
Flash while recording video
If enabled, flash will switch on/off when recording video (can be used to tell camera is still recording at a distance)
Misc
Online help
- Launch the Open Camera website in your browser
+ Launch the Camera website in your browser
Donate to support development
If you like this app, please consider making a donation to support development. You can do this by purchasing my "donation app" - click this option to open up the page for my donation app. Thanks!
Use Camera2 API
@@ -233,14 +233,14 @@
About
App and debug information
Reset settings
- Reset all Open Camera settings to default
- Are you sure you want to reset all Open Camera settings to default?
+ Reset all Camera settings to default
+ Are you sure you want to reset all Camera settings to default?
Available
Not available
Copy to clipboard
- Take Photo
+ Take photo
Gallery
Exposure
Lock exposure
@@ -528,7 +528,7 @@
Off
Ghost image
- Display an image over the preview, to help with alignment.\n%s
+ Overlay an image, to help with alignment.\n%s
Off
Last photo taken
Selected image
@@ -723,7 +723,7 @@
Settings manager
Save settings
- Saves all of Open Camera\'s settings to a file
+ Saves all of Camera\'s settings to a file
Saved settings name
Restore settings
@@ -783,6 +783,7 @@
Unlock exposure
Low light mode: please hold the camera steady
+ Please hold the camera steady for better photos.
Pano
Panorama
@@ -797,7 +798,7 @@
Bluetooth not supported.
Unknown device
Dim screen if remote disconnects
- Hint: set default brightness to minimum level before starting Open Camera.
+ Hint: set default brightness to minimum level before starting Camera.
Use Saltwater for depth calculations
For underwater housings, improves accuracy if correct water type is selected.
Remote connected
@@ -910,7 +911,7 @@
This feature provides no guarantees on availability or accuracy. Results are a best guess, and not guaranteed to be meaningful or correct.
\n%s
- Touch to focus, and press the circular blue shutter button to take photos.
+ Touch to focus, and press the white camera button to take photos.
\n\nTo disable maximum screen brightness, see Settings/On screen GUI/\"Force maximum brightness\".
To save to SD cards on Android 5+, see Settings/More camera controls/\"Storage Access Framework\".
For more help, click \"Online help\" from Settings.
@@ -1033,58 +1034,118 @@
- Open Camera is developed by Mark Harman.
- <br/>Open Camera accesses camera sensor and microphone data to fulfil its purpose as a camera.
+ Camera is developed by Mark Harman.
+ \nCamera accesses camera sensor and microphone data to fulfil its purpose as a camera.
Microphone is also used for the optional \"Audio control\".
- <br/>Access to files is needed (at least for Android 9 and earlier) to save resultant files such as photos and videos to your device.
- <br/>Location permission is requested in order to deliver the optional geotagging features (for photos and videos,
+ \nAccess to files is needed (at least for Android 9 and earlier) to save resultant files such as photos and videos to your device.
+ \nLocation permission is requested in order to deliver the optional geotagging features (for photos and videos,
including stamp and subtitles options).
When relevant option(s) are enabled, your device location will be stored in photo/video/subtitle files.
- <br/>Bluetooth permissions are used to allow the optional feature to discover and connect to Bluetooth LE remote control devices;
+ \nBluetooth permissions are used to allow the optional feature to discover and connect to Bluetooth LE remote control devices;
the Bluetooth remote control feature also requires location permission (on Android 11 or earlier) or
Nearby Devices permission (on Android 12 or later).
- <br/>Resultant data such as photos or videos can be shared with
- other apps if you use the share option in Open Camera, or when Open Camera is called by
+ \nResultant data such as photos or videos can be shared with
+ other apps if you use the share option in Camera, or when Camera is called by
another app on your device, or when you use the Storage Access Framework option to save
to another app or service.
- <br/>Data handling procedures, data retention and deletion policies: Open Camera
+ \nData handling procedures, data retention and deletion policies: Camera
does not transmit personal or sensitive information to me.
- <br/>Since Open Camera also uses operating system APIs, you should review relevant privacy policies
+ \nSince Camera also uses operating system APIs, you should review relevant privacy policies
such as for your device, manufacturer, operating system and/or Google accounts. For example:
- <br/>*Apps/services such as cloud services on your device may auto-upload photos and videos that are saved on your device.
- <br/>If you have inquiries about my privacy policy, please contact me by email at
+ \n*Apps/services such as cloud services on your device may auto-upload photos and videos that are saved on your device.
+ \nIf you have inquiries about my privacy policy, please contact me by email at
<a href=\"mailto:mark.harman.apps@gmail.com?subject=Open%20Camera%20privacy%20policy\">mark.harman.apps@gmail.com</a>.
- Open Source licences
- Open Camera
- Open Camera is © 2013–2024 Mark Harman, released under the GPL v3 or later. Tap here for full licence text and terms of service.
+ Open Source licences
+ Camera
+ Camera is © 2013–2023 Mark Harman, released under the GPL v3 or later. Tap here for full licence text.
AndroidX libraries
- Open Camera uses the AndroidX/Jetpack libraries
+ Camera uses the AndroidX/Jetpack libraries
under the Apache license version 2.0. Tap here for full licence text.
- Google\'s Material Design icons
- Open Camera uses icons from Google\'s Material Design icons
+ Google\'s Material Design icons
+ Camera uses icons from Google\'s Material Design icons
(https://developer.android.com/design/downloads/index.html ,
https://design.google.com/icons/ ,
https://github.com/google/material-design-icons/ ,
- https://google.github.io/material-design-icons/ ,
- https://fonts.google.com/icons)
+ https://google.github.io/material-design-icons/)
under the Apache license version 2.0. Some icons include modifications. Tap here for full licence text.
Online licences
Please tap here for full online licensing information (opens in your browser).
-
+
- [This dialog is shown when Open Camera is updated. You can disable it under
+ [This dialog is shown when Camera is updated. You can disable it under
Settings/On screen GUI/Show What\'s New dialog.]
- \n\nv1.53:\n
+ \n\nv1.52:\n
- - Improved user interface icons.\n
- - Smoother zoom for Camera2 API.\n
- - Camera vendor extensions show percentage progress on supported Android 14 devices.\n
- - New option for on-screen icon to enable/disable focus peaking.\n
- - Support for themed/monochrome application icon.\n
+ - Improvements for pinch zooming.\n
+ - Fixes for split-screen and multi-window mode.\n
+ - Support for zoom and on-screen ISO/exposure display when using camera vendor extensions (for supported Android 13+ devices).\n
+ - \"Touch to capture\" option now supports starting and stopping video.\n
+ - Applied a 2s timeout for focusing with original camera API.\n
+ - Improved performance for NR photo mode.\n
+ - No longer cancel panorama when rotating device too far in wrong direction.\n
- Various other improvements and bug fixes.\n
+
+
+ Build version
+ Camera is forked from Camera
+ Authors
+ Source code
+ Licence
+ Camera information
+
+ - Option to auto-stabilise\n
+ - Support for scene modes, color effects, white balance, ISO etc.\n
+ - Timer (with optional voice countdown), auto-repeat mode\n
+ - Configurable volume keys and user interface\n
+ - Support for Camera2 API\n
+ - Panorama, including for front camera.
+ Terms of service
+
+ Back
+ Next
+ Skip
+
+ LENS
+ QRCode
+ Add contact
+ Add contact
+ Add event to calendar
+ Add this event to the calendar
+ Open this location
+ Open this location
+ Send a new email
+ Compose a new email to the specified emails
+ Lookup this ISBN
+ Search this ISBN on isbnsearch.org
+ Lookup product
+ Lookup this product ID barcode
+ Send a new SMS
+ Send a new SMS to the specified recipients
+ Call phone number
+ Call the phone number
+ Lookup VIN
+ Lookup this Vehicle Identification Number (VIN)
+ Connect to this Wi-Fi network
+ Add this Wi-Fi network to the list of known networks and connect the device to it
+ Icon
+ Share
+ Copy to clipboard
+ No app available to handle this action
+ Text
+ Configure this device
+ Wi-Fi Easy Connect™ (DPP)
+ Handle this FIDO QR code
+ Use passkey
+ Share with
+
+ "YOUR PRIVACY SWITCH MUST BE ACTIVATED"
+ "AS THE CAMERA IS NOT AVAILABLE ;-)"
+
+ "PLEASE WAIT 5 SECONDS FOR YOUR CAMERA"
+ "TO LOAD AS IT'S JUST BEEN ENABLED"
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 7564b5ba190a6353f264cdba73b1fc966e1a77a4..292017f7d268af48c01dc2cd28ab538d6a9d9117 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -80,7 +80,7 @@
android:key="preference_timer"
android:title="@string/preference_timer"
android:summary="%s"
- android:icon="@drawable/ic_timer_white_48dp"
+ android:icon="@drawable/ic_preference_timer"
android:entries="@array/preference_timer_entries"
android:entryValues="@array/preference_timer_values"
android:defaultValue="0"
@@ -107,7 +107,7 @@
@@ -115,7 +115,7 @@
@@ -123,7 +123,7 @@
@@ -137,7 +137,7 @@
@@ -145,7 +145,7 @@
@@ -153,7 +153,7 @@
@@ -161,7 +161,7 @@
@@ -177,7 +177,7 @@
android:key="preference_online_help"
android:title="@string/preference_online_help"
android:summary="@string/preference_online_help_summary"
- android:icon="@drawable/ic_help_outline_white_48dp"
+ android:icon="@drawable/ic_preference_help"
/>
@@ -187,24 +187,89 @@
android:summary="@string/preference_camera_api_summary"
/>
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -212,7 +277,7 @@
diff --git a/app/src/main/res/xml/preferences_sub_camera_controls_more.xml b/app/src/main/res/xml/preferences_sub_camera_controls_more.xml
index ee572a1cdde4ff8e1ed6f667cecfdbb2f97dfee4..3642753f84c2574a0f23e11a4b409d40b559d9b8 100644
--- a/app/src/main/res/xml/preferences_sub_camera_controls_more.xml
+++ b/app/src/main/res/xml/preferences_sub_camera_controls_more.xml
@@ -6,7 +6,7 @@
android:key="preference_touch_capture"
android:title="@string/preference_touch_capture"
android:summary="@string/preference_touch_capture_summary"
- android:icon="@drawable/ic_touch_app_white_48dp"
+ android:icon="@drawable/ic_preference_touch_app"
android:entries="@array/preference_touch_capture_entries"
android:entryValues="@array/preference_touch_capture_values"
android:defaultValue="none"
@@ -54,7 +54,7 @@
android:key="preference_audio_control"
android:title="@string/preference_audio_control"
android:summary="@string/preference_audio_control_summary"
- android:icon="@drawable/ic_mic_white_48dp"
+ android:icon="@drawable/ic_preference_mic"
android:entries="@array/preference_audio_control_entries"
android:entryValues="@array/preference_audio_control_values"
android:defaultValue="none"
@@ -73,7 +73,7 @@
@@ -91,11 +91,11 @@
android:key="preference_save_location"
android:title="@string/preference_save_location"
android:summary="@string/preference_save_location_summary"
- android:icon="@drawable/ic_save_white_48dp"
+ android:icon="@drawable/ic_preference_save"
android:dialogTitle="@string/preference_save_location"
android:dialogMessage="@string/preference_save_location_summary"
android:inputType="text"
- android:defaultValue="OpenCamera"
+ android:defaultValue="Camera"
/>
diff --git a/app/src/main/res/xml/preferences_sub_gui.xml b/app/src/main/res/xml/preferences_sub_gui.xml
index 3408287103bf7e01feffb70f0264356cf2a07850..04cabc999b608d78585f1541162a1bcd95045dd6 100644
--- a/app/src/main/res/xml/preferences_sub_gui.xml
+++ b/app/src/main/res/xml/preferences_sub_gui.xml
@@ -2,31 +2,31 @@
-
+ /> -->
-
+ android:defaultValue="immersive_mode_off"
+ /> -->
@@ -35,7 +35,7 @@
android:key="preference_show_cycle_flash"
android:title="@string/preference_show_cycle_flash"
android:summary="@string/preference_show_cycle_flash_summary"
- android:icon="@drawable/flash_on"
+ android:icon="@drawable/ic_camera_flash_on"
android:defaultValue="false"
/>
@@ -44,7 +44,7 @@
android:key="preference_show_focus_peaking"
android:title="@string/preference_show_focus_peaking"
android:summary="@string/preference_show_focus_peaking_summary"
- android:icon="@drawable/key_visualizer"
+ android:icon="@drawable/ic_preference_focus_peaking"
android:defaultValue="false"
/>
@@ -53,7 +53,7 @@
android:key="preference_show_auto_level"
android:title="@string/preference_show_auto_level"
android:summary="@string/preference_show_auto_level_summary"
- android:icon="@drawable/auto_stabilise_icon"
+ android:icon="@drawable/ic_preference_auto_stabilise"
android:defaultValue="false"
/>
@@ -61,7 +61,7 @@
android:key="preference_show_stamp"
android:title="@string/preference_show_stamp"
android:summary="@string/preference_show_stamp_summary"
- android:icon="@drawable/ic_text_format_white_48dp"
+ android:icon="@drawable/ic_preference_text_format"
android:defaultValue="false"
/>
@@ -69,7 +69,7 @@
android:key="preference_show_textstamp"
android:title="@string/preference_show_textstamp"
android:summary="@string/preference_show_textstamp_summary"
- android:icon="@drawable/baseline_text_fields_white_48"
+ android:icon="@drawable/ic_preference_text_stamp"
android:defaultValue="false"
/>
@@ -77,7 +77,7 @@
android:key="preference_show_store_location"
android:title="@string/preference_show_store_location"
android:summary="@string/preference_show_store_location_summary"
- android:icon="@drawable/ic_gps_fixed_white_48dp"
+ android:icon="@drawable/ic_preference_location"
android:defaultValue="false"
/>
@@ -86,7 +86,7 @@
android:key="preference_show_cycle_raw"
android:title="@string/preference_show_cycle_raw"
android:summary="@string/preference_show_cycle_raw_summary"
- android:icon="@drawable/raw_icon"
+ android:icon="@drawable/ic_raw"
android:defaultValue="false"
/>
@@ -95,7 +95,7 @@
android:key="preference_show_white_balance_lock"
android:title="@string/preference_show_white_balance_lock"
android:summary="@string/preference_show_white_balance_lock_summary"
- android:icon="@drawable/white_balance_unlocked"
+ android:icon="@drawable/ic_white_balance_unlocked"
android:defaultValue="false"
/>
@@ -104,7 +104,7 @@
android:key="preference_show_exposure_lock"
android:title="@string/preference_show_exposure_lock"
android:summary="@string/preference_show_exposure_lock_summary"
- android:icon="@drawable/exposure_unlocked"
+ android:icon="@drawable/ic_camera_exposure_unlocked"
android:defaultValue="true"
/>
@@ -119,7 +119,7 @@
android:key="preference_show_zoom_slider_controls"
android:title="@string/preference_show_zoom_slider_controls"
android:summary="@string/preference_show_zoom_slider_controls_summary"
- android:defaultValue="true"
+ android:defaultValue="false"
/>
diff --git a/app/src/main/res/xml/preferences_sub_location.xml b/app/src/main/res/xml/preferences_sub_location.xml
index c4f5071610d6388852ad2612990bca749fb10d39..c6be172866d52acd13e94222d70025d0fa9edb05 100644
--- a/app/src/main/res/xml/preferences_sub_location.xml
+++ b/app/src/main/res/xml/preferences_sub_location.xml
@@ -6,7 +6,7 @@
android:key="preference_location"
android:title="@string/preference_location"
android:summary="@string/preference_location_summary"
- android:icon="@drawable/ic_gps_fixed_white_48dp"
+ android:icon="@drawable/ic_preference_location"
android:defaultValue="false"
/>
diff --git a/app/src/main/res/xml/preferences_sub_photo.xml b/app/src/main/res/xml/preferences_sub_photo.xml
index 899b9abfc808b519518d99aaabb9f4be16974c59..1aa9fd6a29230eb9d31e96f3624f52cb298a875d 100644
--- a/app/src/main/res/xml/preferences_sub_photo.xml
+++ b/app/src/main/res/xml/preferences_sub_photo.xml
@@ -7,7 +7,7 @@
android:key="preference_resolution"
android:title="@string/preference_resolution"
android:summary="%s"
- android:icon="@drawable/ic_photo_size_select_large_white_48dp"
+ android:icon="@drawable/ic_preference_photo_size_select"
/>
diff --git a/build.gradle b/build.gradle
index 80d9757285a7ea66488187fe319ba5586ffc25ee..d8593c698f2621f67a88de9e200b4636561b5a1f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,6 +6,7 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:8.2.1'
+ classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10'
}
}
@@ -13,5 +14,6 @@ allprojects {
repositories {
google()
mavenCentral()
+ maven { url 'https://gitlab.e.foundation/api/v4/groups/9/-/packages/maven' }
}
}