Add default camera preference

Let users choose which available camera type the scanner opens with.

Keep the existing overflow camera switch temporary, while persisting
only the startup preference. Populate the setting from available
camera types and fall back to the current back-camera behavior by
default.
This commit is contained in:
Markus Fisch
2026-06-23 19:27:12 +02:00
parent cb48544896
commit fba7b0d70f
32 changed files with 222 additions and 15 deletions
@@ -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"
@@ -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<String> {
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<String>) =
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()
@@ -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<ListPreference>(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<Preference>(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"
@@ -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"
+4
View File
@@ -66,6 +66,10 @@
<string name="view_barcode">عرض رمز Barcode</string>
<string name="info">معلومات</string>
<string name="switch_camera">تبديل الكاميرا</string>
<string name="default_camera">الكاميرا الافتراضية</string>
<string name="default_camera_back">الكاميرا الخلفية (الافتراضية)</string>
<string name="default_camera_front">الكاميرا الأمامية</string>
<string name="default_camera_other">كاميرا أخرى</string>
<string name="bulk_mode">المسح بشكل مستمر</string>
<string name="bulk_mode_summary">ابدأ المسح دائمًا بشكل مستمر.</string>
<string name="bulk_mode_delay">الفارق الزمني بين عمليات المسح المستمرة</string>
+4
View File
@@ -62,6 +62,10 @@
<string name="view_barcode">Вижте баркода</string>
<string name="info">Информация</string>
<string name="switch_camera">Превключване на камерата</string>
<string name="default_camera">Камера по подразбиране</string>
<string name="default_camera_back">Задна камера (по подразбиране)</string>
<string name="default_camera_front">Предна камера</string>
<string name="default_camera_other">Друга камера</string>
<string name="bulk_mode">Сканирайте непрекъснато</string>
<string name="bulk_mode_summary">Винаги започвай непрекъснато сканиране.</string>
<string name="bulk_mode_delay">Забавяне между непрекъснатите сканирания</string>
+4
View File
@@ -62,6 +62,10 @@
<string name="view_barcode">বারকোড দেখো</string>
<string name="info">তথ্য</string>
<string name="switch_camera">ক্যামেরা পাল্টাও</string>
<string name="default_camera">ডিফল্ট ক্যামেরা</string>
<string name="default_camera_back">পেছনের ক্যামেরা (ডিফল্ট)</string>
<string name="default_camera_front">সামনের ক্যামেরা</string>
<string name="default_camera_other">অন্য ক্যামেরা</string>
<string name="bulk_mode">ধারাবাহিকভাবে খুঁজো</string>
<string name="bulk_mode_summary">শুরুতে সবসময় ধারাবাহিকভাবে খুঁজো</string>
<string name="bulk_mode_delay">একটি অবিরত স্ক্যান মধ্যে বিলম্ব</string>
+4
View File
@@ -64,6 +64,10 @@
<string name="view_barcode">Zobrazit čárový kód</string>
<string name="info">Informace</string>
<string name="switch_camera">Přepnout kameru</string>
<string name="default_camera">Výchozí kamera</string>
<string name="default_camera_back">Zadní kamera (výchozí)</string>
<string name="default_camera_front">Přední kamera</string>
<string name="default_camera_other">Jiná kamera</string>
<string name="bulk_mode">Skenovat nepřetržitě</string>
<string name="bulk_mode_summary">Vždy začít v módu nepřetržitého skenování.</string>
<string name="bulk_mode_delay">Prodleva mezi skeny</string>
+4
View File
@@ -62,6 +62,10 @@
<string name="view_barcode">Vis stregkode</string>
<string name="info">Info</string>
<string name="switch_camera">Skift kamera</string>
<string name="default_camera">Standardkamera</string>
<string name="default_camera_back">Bagkamera (standard)</string>
<string name="default_camera_front">Frontkamera</string>
<string name="default_camera_other">Andet kamera</string>
<string name="bulk_mode">Scan kontinuerligt</string>
<string name="bulk_mode_summary">Begynd altid ved at scanne kontinuerligt.</string>
<string name="bulk_mode_delay">Forsinkelse mellem kontinuerlige scanninger</string>
+4
View File
@@ -62,6 +62,10 @@
<string name="view_barcode">Barcode ansehen</string>
<string name="info">Info</string>
<string name="switch_camera">Kamera wechseln</string>
<string name="default_camera">Standardkamera</string>
<string name="default_camera_back">Rückkamera (Standard)</string>
<string name="default_camera_front">Frontkamera</string>
<string name="default_camera_other">Andere Kamera</string>
<string name="bulk_mode">Fortlaufend Scannen</string>
<string name="bulk_mode_summary">Immer mit fortlaufendem Scannen starten.</string>
<string name="bulk_mode_delay">Pause zwischen fortlaufenden Scans</string>
+4
View File
@@ -63,6 +63,10 @@
<string name="view_barcode">Ver código de barras</string>
<string name="info">Información</string>
<string name="switch_camera">Cambiar cámara</string>
<string name="default_camera">Cámara predeterminada</string>
<string name="default_camera_back">Cámara trasera (predeterminada)</string>
<string name="default_camera_front">Cámara frontal</string>
<string name="default_camera_other">Otra cámara</string>
<string name="bulk_mode">Escaneo continuo</string>
<string name="bulk_mode_summary">Iniciar siempre en modo de escaneo continuo</string>
<string name="bulk_mode_delay">Demora entre escaneos continuos</string>
+4
View File
@@ -62,6 +62,10 @@
<string name="view_barcode">نمایش بارکد</string>
<string name="info">اطّلاعات</string>
<string name="switch_camera">تغییر دوربین</string>
<string name="default_camera">دوربین پیش‌فرض</string>
<string name="default_camera_back">دوربین پشت (پیش‌فرض)</string>
<string name="default_camera_front">دوربین جلو</string>
<string name="default_camera_other">دوربین دیگر</string>
<string name="bulk_mode">به طور مداوم پویش کن</string>
<string name="bulk_mode_summary">همیشه پویش را به طور مداوم شروع می‌کند.</string>
<string name="bulk_mode_delay">تأخیر بین پویش‌های مداوم</string>
+4
View File
@@ -63,6 +63,10 @@
<string name="view_barcode">Voir le code-barres</string>
<string name="info">Informations</string>
<string name="switch_camera">Changer de caméra</string>
<string name="default_camera">Appareil photo par défaut</string>
<string name="default_camera_back">Caméra arrière (par défaut)</string>
<string name="default_camera_front">Caméra avant</string>
<string name="default_camera_other">Autre caméra</string>
<string name="bulk_mode">Scanner en continu</string>
<string name="bulk_mode_summary">Toujours démarrer avec le scan en continu.</string>
<string name="bulk_mode_delay">Délai entre les scans continus</string>
+4
View File
@@ -62,6 +62,10 @@
<string name="view_barcode">Vonalkód megtekintése</string>
<string name="info">Információ</string>
<string name="switch_camera">Kamera átkapcsolása</string>
<string name="default_camera">Alapértelmezett kamera</string>
<string name="default_camera_back">Hátlapi kamera (alapértelmezett)</string>
<string name="default_camera_front">Előlapi kamera</string>
<string name="default_camera_other">Másik kamera</string>
<string name="bulk_mode">Beolvasás folyamatosan</string>
<string name="bulk_mode_summary">Mindig folyamatos beolvasást indítson.</string>
<string name="bulk_mode_delay">Folyamatos beolvasások közti késleltetés</string>
+4
View File
@@ -61,6 +61,10 @@
<string name="view_barcode">Lihat barcode</string>
<string name="info">Informazioni</string>
<string name="switch_camera">Ganti kamera</string>
<string name="default_camera">Kamera default</string>
<string name="default_camera_back">Kamera belakang (default)</string>
<string name="default_camera_front">Kamera depan</string>
<string name="default_camera_other">Kamera lain</string>
<string name="bulk_mode">Pindai tanpa henti</string>
<string name="bulk_mode_summary">Selalu mulai pemindaian tanpa henti.</string>
<string name="bulk_mode_delay">Tundaan antara pemindaian tanpa henti</string>
+4
View File
@@ -70,6 +70,10 @@
<string name="view_barcode">Visualizza codice a barre</string>
<string name="info">Info</string>
<string name="switch_camera">Cambia fotocamera</string>
<string name="default_camera">Fotocamera predefinita</string>
<string name="default_camera_back">Fotocamera posteriore (predefinita)</string>
<string name="default_camera_front">Fotocamera anteriore</string>
<string name="default_camera_other">Altra fotocamera</string>
<string name="bulk_mode">Scansione continua</string>
<string name="bulk_mode_summary">Avvia sempre la scansione in modo continuo.</string>
<string name="bulk_mode_delay">Ritardo tra scansioni continue</string>
+4
View File
@@ -61,6 +61,10 @@
<string name="view_barcode">バーコードを確認</string>
<string name="info">ソースコード</string>
<string name="switch_camera">カメラを切り替え</string>
<string name="default_camera">デフォルトのカメラ</string>
<string name="default_camera_back">背面カメラ(デフォルト)</string>
<string name="default_camera_front">前面カメラ</string>
<string name="default_camera_other">その他のカメラ</string>
<string name="bulk_mode">まとめてスキャンする</string>
<string name="bulk_mode_summary">常に連続してスキャンを行います。</string>
<string name="bulk_mode_delay">連続スキャンの間隔</string>
+4
View File
@@ -62,6 +62,10 @@
<string name="view_barcode">შტრიხ-კოდის ნახვა</string>
<string name="info">ინფორმაცია</string>
<string name="switch_camera">კამერის გადართვა</string>
<string name="default_camera">ნაგულისხმევი კამერა</string>
<string name="default_camera_back">უკანა კამერა (ნაგულისხმევი)</string>
<string name="default_camera_front">წინა კამერა</string>
<string name="default_camera_other">სხვა კამერა</string>
<string name="bulk_mode">სკანირება უწყვეტად</string>
<string name="bulk_mode_summary">ყოველთვის დაიწყეთ სკანირება უწყვეტად.</string>
<string name="bulk_mode_delay">განაგრძეთ გადანომრვას შორის შეზღუდვა</string>
+4
View File
@@ -61,6 +61,10 @@
<string name="view_barcode">보기 바코드</string>
<string name="info">정보</string>
<string name="switch_camera">카메라 전환</string>
<string name="default_camera">기본 카메라</string>
<string name="default_camera_back">후면 카메라(기본)</string>
<string name="default_camera_front">전면 카메라</string>
<string name="default_camera_other">다른 카메라</string>
<string name="bulk_mode">지속적으로 스캔</string>
<string name="bulk_mode_summary">항상 지속적으로 스캔을 시작합니다.</string>
<string name="bulk_mode_delay">연속 스캔 간의 지연</string>
+4
View File
@@ -128,6 +128,10 @@
<string name="error_no_content">Trūkst satura</string>
<string name="error_encoding_barcode">Svītrkodu nevar izveidot</string>
<string name="switch_camera">Pārslēgt kameru</string>
<string name="default_camera">Noklusējuma kamera</string>
<string name="default_camera_back">Aizmugurējā kamera (noklusējuma)</string>
<string name="default_camera_front">Priekšējā kamera</string>
<string name="default_camera_other">Cita kamera</string>
<string name="bulk_mode">Skenēt nepārtraukti</string>
<string name="bulk_mode_summary">Vienmēr sākt nepārtrauktu skenēšanu.</string>
<string name="bulk_mode_delay">Aizture starp nepārtrauktām skenēšanām</string>
+4
View File
@@ -62,6 +62,10 @@
<string name="view_barcode">Barcode bekijken</string>
<string name="info">Informatie</string>
<string name="switch_camera">Camera wisselen</string>
<string name="default_camera">Standaardcamera</string>
<string name="default_camera_back">Camera achter (standaard)</string>
<string name="default_camera_front">Camera voor</string>
<string name="default_camera_other">Andere camera</string>
<string name="bulk_mode">Continu scannen</string>
<string name="bulk_mode_summary">Begin altijd continu te scannen</string>
<string name="bulk_mode_delay">Vertraging tussen ononderbroken scans</string>
+4
View File
@@ -96,6 +96,10 @@
<string name="show_meta_data">Pokazuj metadane</string>
<string name="show_meta_data_summary">Pokaż dodatkowe dane o zeskanowanym kodzie kreskowym.</string>
<string name="switch_camera">Przełącz aparat</string>
<string name="default_camera">Domyślny aparat</string>
<string name="default_camera_back">Tylny aparat (domyślny)</string>
<string name="default_camera_front">Przedni aparat</string>
<string name="default_camera_other">Inny aparat</string>
<string name="bulk_mode">Skanuj w sposób ciągły</string>
<string name="bulk_mode_summary">Zawsze rozpoczynaj skanowanie w sposób ciągły.</string>
<string name="bulk_mode_delay">Opóźnienie między kolejnymi skanami</string>
@@ -62,6 +62,10 @@
<string name="view_barcode">Ver código de barras</string>
<string name="info">Informações</string>
<string name="switch_camera">Trocar câmera</string>
<string name="default_camera">Câmera padrão</string>
<string name="default_camera_back">Câmera traseira (padrão)</string>
<string name="default_camera_front">Câmera frontal</string>
<string name="default_camera_other">Outra câmera</string>
<string name="bulk_mode">Digitalizar continuamente</string>
<string name="bulk_mode_summary">Sempre iniciar digitalizando continuamente.</string>
<string name="bulk_mode_delay">Espera entre digitalizações contínuas</string>
@@ -64,6 +64,10 @@
<string name="view_barcode">Просмотр штрих-кода</string>
<string name="info">Инфо</string>
<string name="switch_camera">Переключить камеру</string>
<string name="default_camera">Камера по умолчанию</string>
<string name="default_camera_back">Задняя камера (по умолчанию)</string>
<string name="default_camera_front">Передняя камера</string>
<string name="default_camera_other">Другая камера</string>
<string name="bulk_mode">Непрерывное сканирование</string>
<string name="bulk_mode_summary">Всегда запускать непрерывное сканирование.</string>
<string name="bulk_mode_delay">Задержка непрерывного сканирования</string>
+4
View File
@@ -62,6 +62,10 @@
<string name="view_barcode">Barkodu gör</string>
<string name="info">Bilgi</string>
<string name="switch_camera">Kamerayı değiştir</string>
<string name="default_camera">Varsayılan kamera</string>
<string name="default_camera_back">Arka kamera (varsayılan)</string>
<string name="default_camera_front">Ön kamera</string>
<string name="default_camera_other">Diğer kamera</string>
<string name="bulk_mode">Sürekli tara</string>
<string name="bulk_mode_summary">Her zaman sürekli taramaya başla.</string>
<string name="bulk_mode_delay">Sürekli taramalar arasındaki gecikme</string>
+4
View File
@@ -64,6 +64,10 @@
<string name="view_barcode">Переглянути штрих-код</string>
<string name="info">Інфо</string>
<string name="switch_camera">Переключити камеру</string>
<string name="default_camera">Камера за замовчуванням</string>
<string name="default_camera_back">Задня камера (за замовчуванням)</string>
<string name="default_camera_front">Передня камера</string>
<string name="default_camera_other">Інша камера</string>
<string name="bulk_mode">Сканувати безперервно</string>
<string name="bulk_mode_summary">Завжди починати безперервне сканування.</string>
<string name="bulk_mode_delay">Затримка між безперервним скануванням</string>
+4
View File
@@ -61,6 +61,10 @@
<string name="view_barcode">Xem mã vạch</string>
<string name="info">Thông tin</string>
<string name="switch_camera">Đổi camera</string>
<string name="default_camera">Camera mặc định</string>
<string name="default_camera_back">Camera sau (mặc định)</string>
<string name="default_camera_front">Camera trước</string>
<string name="default_camera_other">Camera khác</string>
<string name="bulk_mode">Quét liên tục</string>
<string name="bulk_mode_summary">Luôn quét liên tục.</string>
<string name="bulk_mode_delay">Thời gian giữa các lần quét</string>
@@ -61,6 +61,10 @@
<string name="view_barcode">查看条码</string>
<string name="info">关于</string>
<string name="switch_camera">切换摄像头</string>
<string name="default_camera">默认摄像头</string>
<string name="default_camera_back">后置摄像头(默认)</string>
<string name="default_camera_front">前置摄像头</string>
<string name="default_camera_other">其他摄像头</string>
<string name="bulk_mode">连续扫描</string>
<string name="bulk_mode_summary">始终开启连续扫描。</string>
<string name="bulk_mode_delay">连续扫描之间的延迟</string>
@@ -61,6 +61,10 @@
<string name="view_barcode">檢視條碼</string>
<string name="info">關於</string>
<string name="switch_camera">切換相機</string>
<string name="default_camera">預設相機</string>
<string name="default_camera_back">後置相機(預設)</string>
<string name="default_camera_front">前置相機</string>
<string name="default_camera_other">其他相機</string>
<string name="bulk_mode">連續掃描</string>
<string name="bulk_mode_summary">始終開啟連續掃描</string>
<string name="bulk_mode_delay">連續掃描間的延遲</string>
+4
View File
@@ -72,6 +72,10 @@
<string name="switch_camera">Switch camera</string>
<string name="bulk_mode">Scan continuously</string>
<string name="bulk_mode_summary">Always start scanning continuously.</string>
<string name="default_camera">Default camera</string>
<string name="default_camera_back">Back camera (default)</string>
<string name="default_camera_front">Front camera</string>
<string name="default_camera_other">Other camera</string>
<string name="bulk_mode_delay">Delay between continuous scans</string>
<string name="restrict_format">Restrict format</string>
<string name="remove_restriction">Remove restriction</string>
+4
View File
@@ -44,6 +44,10 @@
android:key="bulk_mode"
android:title="@string/bulk_mode"
android:summary="@string/bulk_mode_summary"/>
<ListPreference
android:key="default_camera"
android:title="@string/default_camera"
android:defaultValue="back"/>
<ListPreference
android:key="bulk_mode_delay"
android:title="@string/bulk_mode_delay"
+4
View File
@@ -44,6 +44,10 @@
android:key="bulk_mode"
android:title="@string/bulk_mode"
android:summary="@string/bulk_mode_summary"/>
<ListPreference
android:key="default_camera"
android:title="@string/default_camera"
android:defaultValue="back"/>
<ListPreference
android:key="bulk_mode_delay"
android:title="@string/bulk_mode_delay"