diff --git a/app/src/main/kotlin/de/markusfisch/android/binaryeye/activity/CameraActivity.kt b/app/src/main/kotlin/de/markusfisch/android/binaryeye/activity/CameraActivity.kt index fd4f3a0d..8b2d62e0 100644 --- a/app/src/main/kotlin/de/markusfisch/android/binaryeye/activity/CameraActivity.kt +++ b/app/src/main/kotlin/de/markusfisch/android/binaryeye/activity/CameraActivity.kt @@ -20,7 +20,6 @@ import android.widget.SeekBar import android.widget.Spinner import androidx.appcompat.app.AppCompatActivity import androidx.camera.core.Camera -import androidx.camera.core.CameraSelector import androidx.camera.core.FocusMeteringAction import androidx.camera.core.ImageAnalysis import androidx.camera.core.ImageProxy @@ -47,6 +46,8 @@ import de.markusfisch.android.binaryeye.app.hasCameraPermission import de.markusfisch.android.binaryeye.app.prefs import de.markusfisch.android.binaryeye.automation.runAutomatedActions import de.markusfisch.android.binaryeye.bluetooth.sendBluetoothAsync +import de.markusfisch.android.binaryeye.camera.availableDefaultCameras +import de.markusfisch.android.binaryeye.camera.cameraSelector import de.markusfisch.android.binaryeye.content.copyToClipboard import de.markusfisch.android.binaryeye.content.startIntentOrToast import de.markusfisch.android.binaryeye.database.toScan @@ -112,7 +113,7 @@ class CameraActivity : AppCompatActivity() { private var returnResult = false private var returnUrlTemplate: String? = null private var finishAfterShowingResult = false - private var frontFacing = false + private var selectedCamera = prefs.defaultCamera private var bulkMode = prefs.bulkMode private var restrictFormat: String? = null private var searchTerm: Regex? = null @@ -343,7 +344,7 @@ class CameraActivity : AppCompatActivity() { override fun onRestoreInstanceState(savedState: Bundle) { super.onRestoreInstanceState(savedState) zoomBar.progress = savedState.getInt(ZOOM_LEVEL) - frontFacing = savedState.getBoolean(FRONT_FACING) + selectedCamera = savedState.getString(SELECTED_CAMERA, selectedCamera) bulkMode = savedState.getBoolean(BULK_MODE) restrictFormat = savedState.getString(RESTRICT_FORMAT) searchTerm = savedState.getString(SEARCH_TERM)?.toRegex() @@ -351,7 +352,7 @@ class CameraActivity : AppCompatActivity() { override fun onSaveInstanceState(outState: Bundle) { outState.putInt(ZOOM_LEVEL, zoomBar.progress) - outState.putBoolean(FRONT_FACING, frontFacing) + outState.putString(SELECTED_CAMERA, selectedCamera) outState.putBoolean(BULK_MODE, bulkMode) outState.putString(RESTRICT_FORMAT, restrictFormat) outState.putString(SEARCH_TERM, searchTerm?.toString()) @@ -450,7 +451,10 @@ class CameraActivity : AppCompatActivity() { } private fun switchCamera() { - frontFacing = frontFacing xor true + val cameras = availableDefaultCameras(this) + selectedCamera = cameras[ + (cameras.indexOf(selectedCamera) + 1).mod(cameras.size) + ] bindCameraUseCases() } @@ -738,15 +742,17 @@ class CameraActivity : AppCompatActivity() { analyzeImage(image) } - val cameraSelector = CameraSelector.Builder() - .requireLensFacing( - if (frontFacing) { - CameraSelector.LENS_FACING_FRONT - } else { - CameraSelector.LENS_FACING_BACK - } - ) - .build() + var cameraSelector = cameraSelector(selectedCamera) + if (!provider.hasCamera(cameraSelector)) { + selectedCamera = prefs.defaultCamera + cameraSelector = cameraSelector(selectedCamera) + } + if (!provider.hasCamera(cameraSelector)) { + selectedCamera = availableDefaultCameras(this) + .firstOrNull { provider.hasCamera(cameraSelector(it)) } + ?: selectedCamera + cameraSelector = cameraSelector(selectedCamera) + } try { provider.unbindAll() @@ -1017,7 +1023,7 @@ class CameraActivity : AppCompatActivity() { private const val PICK_FILE_RESULT_CODE = 1 private const val INITIAL_ZOOM = 0 private const val ZOOM_LEVEL = "zoom" - private const val FRONT_FACING = "front_facing" + private const val SELECTED_CAMERA = "selected_camera" private const val BULK_MODE = "bulk_mode" private const val RESTRICT_FORMAT = "restrict_format" private const val SEARCH_TERM = "search_term" diff --git a/app/src/main/kotlin/de/markusfisch/android/binaryeye/camera/Cameras.kt b/app/src/main/kotlin/de/markusfisch/android/binaryeye/camera/Cameras.kt new file mode 100644 index 00000000..af35179d --- /dev/null +++ b/app/src/main/kotlin/de/markusfisch/android/binaryeye/camera/Cameras.kt @@ -0,0 +1,59 @@ +package de.markusfisch.android.binaryeye.camera + +import android.annotation.SuppressLint +import android.content.Context +import android.hardware.camera2.CameraCharacteristics +import android.hardware.camera2.CameraManager +import androidx.camera.core.CameraSelector +import de.markusfisch.android.binaryeye.R + +const val DEFAULT_CAMERA_BACK = "back" +const val DEFAULT_CAMERA_FRONT = "front" +const val DEFAULT_CAMERA_OTHER = "other" + +fun availableDefaultCameras(context: Context): List { + val lensFacings = try { + (context.getSystemService(Context.CAMERA_SERVICE) as CameraManager) + .run { + cameraIdList.mapNotNull { id -> + getCameraCharacteristics(id) + .get(CameraCharacteristics.LENS_FACING) + } + }.toSet() + } catch (_: Exception) { + emptySet() + } + return buildList { + if (lensFacings.isEmpty() || + lensFacings.contains(CameraCharacteristics.LENS_FACING_BACK) + ) { + add(DEFAULT_CAMERA_BACK) + } + if (lensFacings.contains(CameraCharacteristics.LENS_FACING_FRONT)) { + add(DEFAULT_CAMERA_FRONT) + } + if (lensFacings.contains(CameraCharacteristics.LENS_FACING_EXTERNAL)) { + add(DEFAULT_CAMERA_OTHER) + } + } +} + +fun defaultCameraEntries(context: Context, values: List) = + values.map { + when (it) { + DEFAULT_CAMERA_FRONT -> context.getString(R.string.default_camera_front) + DEFAULT_CAMERA_OTHER -> context.getString(R.string.default_camera_other) + else -> context.getString(R.string.default_camera_back) + } + }.toTypedArray() + +@SuppressLint("UnsafeOptInUsageError") +fun cameraSelector(camera: String) = CameraSelector.Builder() + .requireLensFacing( + when (camera) { + DEFAULT_CAMERA_FRONT -> CameraSelector.LENS_FACING_FRONT + DEFAULT_CAMERA_OTHER -> CameraSelector.LENS_FACING_EXTERNAL + else -> CameraSelector.LENS_FACING_BACK + } + ) + .build() diff --git a/app/src/main/kotlin/de/markusfisch/android/binaryeye/fragment/PreferencesFragment.kt b/app/src/main/kotlin/de/markusfisch/android/binaryeye/fragment/PreferencesFragment.kt index b8ff55d4..083be1f9 100644 --- a/app/src/main/kotlin/de/markusfisch/android/binaryeye/fragment/PreferencesFragment.kt +++ b/app/src/main/kotlin/de/markusfisch/android/binaryeye/fragment/PreferencesFragment.kt @@ -31,6 +31,8 @@ import de.markusfisch.android.binaryeye.adapter.prettifyFormatName import de.markusfisch.android.binaryeye.app.hasBluetoothPermission import de.markusfisch.android.binaryeye.app.prefs import de.markusfisch.android.binaryeye.bluetooth.setBluetoothHosts +import de.markusfisch.android.binaryeye.camera.availableDefaultCameras +import de.markusfisch.android.binaryeye.camera.defaultCameraEntries import de.markusfisch.android.binaryeye.media.beepConfirm import de.markusfisch.android.binaryeye.preference.Preferences import de.markusfisch.android.binaryeye.preference.UrlPreference @@ -101,6 +103,7 @@ class PreferencesFragment : PreferenceFragmentCompat() { setIcons() wireBeepTonePicker() + setDefaultCameras() wireProfiles() wireAutomatedActions() wireIgnoreCodes() @@ -142,6 +145,19 @@ class PreferencesFragment : PreferenceFragmentCompat() { } } + private fun setDefaultCameras() { + findPreference(DEFAULT_CAMERA)?.apply { + val values = availableDefaultCameras(requireContext()) + entries = defaultCameraEntries(requireContext(), values) + entryValues = values.toTypedArray() + if (!values.contains(value)) { + value = values.firstOrNull() + } + isVisible = values.size > 1 + setSummary(this) + } + } + private fun wireAutomatedActions() { findPreference(AUTOMATED_ACTIONS)?.apply { updateAutomatedActionsSummary(this) @@ -340,6 +356,7 @@ class PreferencesFragment : PreferenceFragmentCompat() { setIcon("auto_rotate", R.drawable.ic_action_down) setIcon("try_harder", R.drawable.ic_action_search) setIcon("bulk_mode", R.drawable.ic_action_bulk_mode) + setIcon(DEFAULT_CAMERA, R.drawable.ic_action_switch_camera) setIcon("bulk_mode_delay", R.drawable.ic_action_delay) setIcon("show_toast_in_bulk_mode", R.drawable.ic_action_toast) setIcon("vibrate", R.drawable.ic_action_vibrate) @@ -482,6 +499,7 @@ class PreferencesFragment : PreferenceFragmentCompat() { private const val CLEAR_NETWORK_SUGGESTIONS = "clear_network_suggestions" private const val CUSTOM_LOCALE = "custom_locale" private const val DYNAMIC_COLORS = "dynamic_colors" + private const val DEFAULT_CAMERA = "default_camera" private const val IGNORE_CODES = "ignore_codes" private const val SEND_SCAN_BLUETOOTH = "send_scan_bluetooth" private const val SEND_SCAN_BLUETOOTH_HOST = "send_scan_bluetooth_host" diff --git a/app/src/main/kotlin/de/markusfisch/android/binaryeye/preference/Preferences.kt b/app/src/main/kotlin/de/markusfisch/android/binaryeye/preference/Preferences.kt index 2b5a89c1..65c75b36 100644 --- a/app/src/main/kotlin/de/markusfisch/android/binaryeye/preference/Preferences.kt +++ b/app/src/main/kotlin/de/markusfisch/android/binaryeye/preference/Preferences.kt @@ -99,6 +99,11 @@ class Preferences { apply(BULK_MODE, value) field = value } + var defaultCamera = "back" + set(value) { + apply(DEFAULT_CAMERA, value) + field = value + } var bulkModeDelay = "500" set(value) { apply(BULK_MODE_DELAY, value) @@ -372,6 +377,7 @@ class Preferences { json.put(AUTO_ROTATE, p, defaults.autoRotate) json.put(TRY_HARDER, p, defaults.tryHarder) json.put(BULK_MODE, p, defaults.bulkMode) + json.put(DEFAULT_CAMERA, p, defaults.defaultCamera) json.put(BULK_MODE_DELAY, p, defaults.bulkModeDelay) json.put(SHOW_TOAST_IN_BULK_MODE, p, defaults.showToastInBulkMode) json.put(VIBRATE, p, defaults.vibrate) @@ -471,6 +477,7 @@ class Preferences { putBoolean(AUTO_ROTATE, json) putBoolean(TRY_HARDER, json) putBoolean(BULK_MODE, json) + putString(DEFAULT_CAMERA, json) putString(BULK_MODE_DELAY, json) putBoolean(SHOW_TOAST_IN_BULK_MODE, json) putBoolean(VIBRATE, json) @@ -553,6 +560,9 @@ class Preferences { autoRotate = preferences.getBoolean(AUTO_ROTATE, autoRotate) tryHarder = preferences.getBoolean(TRY_HARDER, tryHarder) bulkMode = preferences.getBoolean(BULK_MODE, bulkMode) + preferences.getString(DEFAULT_CAMERA, defaultCamera)?.also { + defaultCamera = it + } bulkModeDelay = preferences.getString( BULK_MODE_DELAY, bulkModeDelay @@ -796,6 +806,7 @@ class Preferences { putBoolean(AUTO_ROTATE, defaults.autoRotate) putBoolean(TRY_HARDER, defaults.tryHarder) putBoolean(BULK_MODE, defaults.bulkMode) + putString(DEFAULT_CAMERA, defaults.defaultCamera) putString(BULK_MODE_DELAY, defaults.bulkModeDelay) putBoolean(SHOW_TOAST_IN_BULK_MODE, defaults.showToastInBulkMode) putBoolean(VIBRATE, defaults.vibrate) @@ -903,6 +914,7 @@ class Preferences { private const val AUTO_ROTATE = "auto_rotate" private const val TRY_HARDER = "try_harder" private const val BULK_MODE = "bulk_mode" + private const val DEFAULT_CAMERA = "default_camera" private const val BULK_MODE_DELAY = "bulk_mode_delay" private const val SHOW_TOAST_IN_BULK_MODE = "show_toast_in_bulk_mode" private const val VIBRATE = "vibrate" diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index e8d6f01a..24ba04d0 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -66,6 +66,10 @@ عرض رمز Barcode معلومات تبديل الكاميرا + الكاميرا الافتراضية + الكاميرا الخلفية (الافتراضية) + الكاميرا الأمامية + كاميرا أخرى المسح بشكل مستمر ابدأ المسح دائمًا بشكل مستمر. الفارق الزمني بين عمليات المسح المستمرة diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 442120fd..3c6202d6 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -62,6 +62,10 @@ Вижте баркода Информация Превключване на камерата + Камера по подразбиране + Задна камера (по подразбиране) + Предна камера + Друга камера Сканирайте непрекъснато Винаги започвай непрекъснато сканиране. Забавяне между непрекъснатите сканирания diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index e659a357..640cabe5 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -62,6 +62,10 @@ বারকোড দেখো তথ্য ক্যামেরা পাল্টাও + ডিফল্ট ক্যামেরা + পেছনের ক্যামেরা (ডিফল্ট) + সামনের ক্যামেরা + অন্য ক্যামেরা ধারাবাহিকভাবে খুঁজো শুরুতে সবসময় ধারাবাহিকভাবে খুঁজো একটি অবিরত স্ক্যান মধ্যে বিলম্ব diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 5466f3e1..64c276eb 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -64,6 +64,10 @@ Zobrazit čárový kód Informace Přepnout kameru + Výchozí kamera + Zadní kamera (výchozí) + Přední kamera + Jiná kamera Skenovat nepřetržitě Vždy začít v módu nepřetržitého skenování. Prodleva mezi skeny diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index ddc36e6b..00e1820e 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -62,6 +62,10 @@ Vis stregkode Info Skift kamera + Standardkamera + Bagkamera (standard) + Frontkamera + Andet kamera Scan kontinuerligt Begynd altid ved at scanne kontinuerligt. Forsinkelse mellem kontinuerlige scanninger diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 95b9dc29..706770d6 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -62,6 +62,10 @@ Barcode ansehen Info Kamera wechseln + Standardkamera + Rückkamera (Standard) + Frontkamera + Andere Kamera Fortlaufend Scannen Immer mit fortlaufendem Scannen starten. Pause zwischen fortlaufenden Scans diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index d62d9773..911812bd 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -63,6 +63,10 @@ Ver código de barras Información Cambiar cámara + Cámara predeterminada + Cámara trasera (predeterminada) + Cámara frontal + Otra cámara Escaneo continuo Iniciar siempre en modo de escaneo continuo Demora entre escaneos continuos diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 04ff3b76..2315ca82 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -62,6 +62,10 @@ نمایش بارکد اطّلاعات تغییر دوربین + دوربین پیش‌فرض + دوربین پشت (پیش‌فرض) + دوربین جلو + دوربین دیگر به طور مداوم پویش کن همیشه پویش را به طور مداوم شروع می‌کند. تأخیر بین پویش‌های مداوم diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 9703ffcc..a0f474a8 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -63,6 +63,10 @@ Voir le code-barres Informations Changer de caméra + Appareil photo par défaut + Caméra arrière (par défaut) + Caméra avant + Autre caméra Scanner en continu Toujours démarrer avec le scan en continu. Délai entre les scans continus diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index c29a0311..d44ba2b7 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -62,6 +62,10 @@ Vonalkód megtekintése Információ Kamera átkapcsolása + Alapértelmezett kamera + Hátlapi kamera (alapértelmezett) + Előlapi kamera + Másik kamera Beolvasás folyamatosan Mindig folyamatos beolvasást indítson. Folyamatos beolvasások közti késleltetés diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index fb7a0ba4..790755fd 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -61,6 +61,10 @@ Lihat barcode Informazioni Ganti kamera + Kamera default + Kamera belakang (default) + Kamera depan + Kamera lain Pindai tanpa henti Selalu mulai pemindaian tanpa henti. Tundaan antara pemindaian tanpa henti diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index cb82eb02..f4e0f31d 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -70,6 +70,10 @@ Visualizza codice a barre Info Cambia fotocamera + Fotocamera predefinita + Fotocamera posteriore (predefinita) + Fotocamera anteriore + Altra fotocamera Scansione continua Avvia sempre la scansione in modo continuo. Ritardo tra scansioni continue diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index f13a3c29..867232da 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -61,6 +61,10 @@ バーコードを確認 ソースコード カメラを切り替え + デフォルトのカメラ + 背面カメラ(デフォルト) + 前面カメラ + その他のカメラ まとめてスキャンする 常に連続してスキャンを行います。 連続スキャンの間隔 diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml index 4d9eef51..c1160ee6 100644 --- a/app/src/main/res/values-ka/strings.xml +++ b/app/src/main/res/values-ka/strings.xml @@ -62,6 +62,10 @@ შტრიხ-კოდის ნახვა ინფორმაცია კამერის გადართვა + ნაგულისხმევი კამერა + უკანა კამერა (ნაგულისხმევი) + წინა კამერა + სხვა კამერა სკანირება უწყვეტად ყოველთვის დაიწყეთ სკანირება უწყვეტად. განაგრძეთ გადანომრვას შორის შეზღუდვა diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 88ce2cd1..7b5e5888 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -61,6 +61,10 @@ 보기 바코드 정보 카메라 전환 + 기본 카메라 + 후면 카메라(기본) + 전면 카메라 + 다른 카메라 지속적으로 스캔 항상 지속적으로 스캔을 시작합니다. 연속 스캔 간의 지연 diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index 52502a3c..fc86cfb0 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -128,6 +128,10 @@ Trūkst satura Svītrkodu nevar izveidot Pārslēgt kameru + Noklusējuma kamera + Aizmugurējā kamera (noklusējuma) + Priekšējā kamera + Cita kamera Skenēt nepārtraukti Vienmēr sākt nepārtrauktu skenēšanu. Aizture starp nepārtrauktām skenēšanām diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 2a02dd53..eebdd479 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -62,6 +62,10 @@ Barcode bekijken Informatie Camera wisselen + Standaardcamera + Camera achter (standaard) + Camera voor + Andere camera Continu scannen Begin altijd continu te scannen Vertraging tussen ononderbroken scans diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 43c22a20..954beb37 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -96,6 +96,10 @@ Pokazuj metadane Pokaż dodatkowe dane o zeskanowanym kodzie kreskowym. Przełącz aparat + Domyślny aparat + Tylny aparat (domyślny) + Przedni aparat + Inny aparat Skanuj w sposób ciągły Zawsze rozpoczynaj skanowanie w sposób ciągły. Opóźnienie między kolejnymi skanami diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 99622227..2e5e2e9f 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -62,6 +62,10 @@ Ver código de barras Informações Trocar câmera + Câmera padrão + Câmera traseira (padrão) + Câmera frontal + Outra câmera Digitalizar continuamente Sempre iniciar digitalizando continuamente. Espera entre digitalizações contínuas diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index f9780b66..b0452267 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -64,6 +64,10 @@ Просмотр штрих-кода Инфо Переключить камеру + Камера по умолчанию + Задняя камера (по умолчанию) + Передняя камера + Другая камера Непрерывное сканирование Всегда запускать непрерывное сканирование. Задержка непрерывного сканирования diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 1bda28f0..666ed020 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -62,6 +62,10 @@ Barkodu gör Bilgi Kamerayı değiştir + Varsayılan kamera + Arka kamera (varsayılan) + Ön kamera + Diğer kamera Sürekli tara Her zaman sürekli taramaya başla. Sürekli taramalar arasındaki gecikme diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 035020a2..bdbdd0de 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -64,6 +64,10 @@ Переглянути штрих-код Інфо Переключити камеру + Камера за замовчуванням + Задня камера (за замовчуванням) + Передня камера + Інша камера Сканувати безперервно Завжди починати безперервне сканування. Затримка між безперервним скануванням diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index c666a9c9..348f14a1 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -61,6 +61,10 @@ Xem mã vạch Thông tin Đổi camera + Camera mặc định + Camera sau (mặc định) + Camera trước + Camera khác Quét liên tục Luôn quét liên tục. Thời gian giữa các lần quét diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index abe4f3e5..0e05cff7 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -61,6 +61,10 @@ 查看条码 关于 切换摄像头 + 默认摄像头 + 后置摄像头(默认) + 前置摄像头 + 其他摄像头 连续扫描 始终开启连续扫描。 连续扫描之间的延迟 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 257c11c6..e017108e 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -61,6 +61,10 @@ 檢視條碼 關於 切換相機 + 預設相機 + 後置相機(預設) + 前置相機 + 其他相機 連續掃描 始終開啟連續掃描 連續掃描間的延遲 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f44f9769..3fe8d6e9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -72,6 +72,10 @@ Switch camera Scan continuously Always start scanning continuously. + Default camera + Back camera (default) + Front camera + Other camera Delay between continuous scans Restrict format Remove restriction diff --git a/app/src/main/res/xml-v33/preferences.xml b/app/src/main/res/xml-v33/preferences.xml index 25073a2b..85c2167e 100644 --- a/app/src/main/res/xml-v33/preferences.xml +++ b/app/src/main/res/xml-v33/preferences.xml @@ -44,6 +44,10 @@ android:key="bulk_mode" android:title="@string/bulk_mode" android:summary="@string/bulk_mode_summary"/> + +