diff --git a/app/src/main/java/org/fdroid/fdroid/views/swap/WifiQrView.java b/app/src/main/java/org/fdroid/fdroid/views/swap/WifiQrView.java
index 9212addde..dd73267c6 100644
--- a/app/src/main/java/org/fdroid/fdroid/views/swap/WifiQrView.java
+++ b/app/src/main/java/org/fdroid/fdroid/views/swap/WifiQrView.java
@@ -29,6 +29,7 @@ import org.fdroid.fdroid.R;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.localrepo.SwapService;
import org.fdroid.fdroid.net.WifiStateChangeService;
+import org.fdroid.fdroid.views.swap.device.camera.CameraCharacteristicsChecker;
import java.net.URI;
import java.util.List;
@@ -63,6 +64,7 @@ public class WifiQrView extends ScrollView implements SwapWorkflowActivity.Inner
protected void onFinishInflate() {
super.onFinishInflate();
setUIFromWifi();
+ setUpWarningMessageQrScan();
ImageView qrImage = (ImageView) findViewById(R.id.wifi_qr_code);
@@ -81,6 +83,14 @@ public class WifiQrView extends ScrollView implements SwapWorkflowActivity.Inner
onWifiStateChanged, new IntentFilter(WifiStateChangeService.BROADCAST));
}
+ private void setUpWarningMessageQrScan() {
+ final View qrWarnningMessage = findViewById(R.id.warning_qr_scanner);
+ final boolean hasAutofocus = CameraCharacteristicsChecker.getInstance(getContext()).hasAutofocus();
+ final int visiblity = hasAutofocus ? GONE : VISIBLE;
+ qrWarnningMessage.setVisibility(visiblity);
+ }
+
+
/**
* Remove relevant listeners/receivers/etc so that they do not receive and process events
* when this view is not in use.
diff --git a/app/src/main/java/org/fdroid/fdroid/views/swap/device/camera/CameraCharacteristicsChecker.java b/app/src/main/java/org/fdroid/fdroid/views/swap/device/camera/CameraCharacteristicsChecker.java
new file mode 100644
index 000000000..53889a7a5
--- /dev/null
+++ b/app/src/main/java/org/fdroid/fdroid/views/swap/device/camera/CameraCharacteristicsChecker.java
@@ -0,0 +1,21 @@
+package org.fdroid.fdroid.views.swap.device.camera;
+
+import android.content.Context;
+
+public abstract class CameraCharacteristicsChecker {
+ public static CameraCharacteristicsChecker getInstance(final Context context) {
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
+ return new CameraCharacteristicsMinApiLevel21(context);
+ } else {
+ return new CameraCharacteristicsMaxApiLevel20();
+ }
+ }
+
+ public abstract boolean hasAutofocus();
+
+ class FDroidDeviceException extends Exception {
+ FDroidDeviceException(final String message, final Throwable cause) {
+ super(message, cause);
+ }
+ }
+}
diff --git a/app/src/main/java/org/fdroid/fdroid/views/swap/device/camera/CameraCharacteristicsMaxApiLevel20.java b/app/src/main/java/org/fdroid/fdroid/views/swap/device/camera/CameraCharacteristicsMaxApiLevel20.java
new file mode 100644
index 000000000..38d31fc96
--- /dev/null
+++ b/app/src/main/java/org/fdroid/fdroid/views/swap/device/camera/CameraCharacteristicsMaxApiLevel20.java
@@ -0,0 +1,50 @@
+package org.fdroid.fdroid.views.swap.device.camera;
+
+import android.hardware.Camera;
+import android.util.Log;
+
+import java.util.List;
+
+public class CameraCharacteristicsMaxApiLevel20 extends CameraCharacteristicsChecker {
+
+ private static final String TAG = "CameraCharMaxApiLevel20";
+
+ protected CameraCharacteristicsMaxApiLevel20() {
+ }
+
+ @Override
+ public boolean hasAutofocus() {
+ boolean hasAutofocus = false;
+ try {
+ hasAutofocus = hasDeviceAutofocusCapability();
+ } catch (FDroidDeviceException e) {
+ Log.e(TAG, e.getMessage(), e);
+ }
+ return hasAutofocus;
+ }
+
+ private boolean hasDeviceAutofocusCapability() throws FDroidDeviceException {
+ try {
+ final int numberOfCameras = Camera.getNumberOfCameras();
+ if (numberOfCameras == 0) {
+ Log.i(TAG, "No camera on device");
+ return false;
+ }
+
+ boolean hasAutofocus = false;
+ for (int cameraId = 0; cameraId < numberOfCameras; cameraId++) {
+ Camera camera = Camera.open(cameraId);
+ Camera.Parameters parameters = camera.getParameters();
+ List availableAFModes = parameters.getSupportedFocusModes();
+ hasAutofocus = availableAFModes.contains(Camera.Parameters.FOCUS_MODE_AUTO);
+ }
+
+ return hasAutofocus;
+ } catch (Exception e) {
+ String msg = "Exception accessing device camera";
+ Log.e(TAG, msg, e);
+ throw new FDroidDeviceException(msg, e);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/fdroid/fdroid/views/swap/device/camera/CameraCharacteristicsMinApiLevel21.java b/app/src/main/java/org/fdroid/fdroid/views/swap/device/camera/CameraCharacteristicsMinApiLevel21.java
new file mode 100644
index 000000000..84f8d88e3
--- /dev/null
+++ b/app/src/main/java/org/fdroid/fdroid/views/swap/device/camera/CameraCharacteristicsMinApiLevel21.java
@@ -0,0 +1,111 @@
+package org.fdroid.fdroid.views.swap.device.camera;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.hardware.camera2.CameraAccessException;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CameraManager;
+import android.os.Build;
+import android.support.annotation.NonNull;
+import android.util.Log;
+
+@TargetApi(Build.VERSION_CODES.LOLLIPOP)
+public class CameraCharacteristicsMinApiLevel21 extends CameraCharacteristicsChecker {
+
+ private static final String TAG = "CameraCharMinApiLevel21";
+ private final CameraManager cameraManager;
+
+ protected CameraCharacteristicsMinApiLevel21(final Context context) {
+ this.cameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
+ }
+
+ @Override
+ public boolean hasAutofocus() {
+ boolean hasAutofocus = false;
+ try {
+ hasAutofocus = hasDeviceAutofocus();
+ } catch (FDroidDeviceException e) {
+ Log.e(TAG, e.getMessage(), e);
+ }
+ return hasAutofocus;
+ }
+
+ private boolean hasDeviceAutofocus() throws FDroidDeviceException {
+ try {
+ boolean deviceHasAutofocus = false;
+ final String[] cameraIdList = getCameraIdList();
+
+ for (final String cameraId : cameraIdList) {
+ if (isLensFacingBack(cameraId)) {
+ deviceHasAutofocus = testAutofocusModeForCamera(cameraId);
+ break;
+ }
+ }
+ return deviceHasAutofocus;
+ } catch (Exception e) {
+ Log.e(TAG, e.getMessage(), e);
+ throw new FDroidDeviceException("Exception accessing the camera list", e);
+ }
+
+ }
+
+ @NonNull
+ private String[] getCameraIdList() throws FDroidDeviceException {
+ try {
+ return cameraManager.getCameraIdList();
+ } catch (CameraAccessException e) {
+ Log.e(TAG, e.getMessage(), e);
+ throw new FDroidDeviceException("Exception accessing the camera list", e);
+ }
+ }
+
+ private boolean isLensFacingBack(final String cameraId) throws FDroidDeviceException {
+ final Integer lensFacing = getCameraCharacteristics(cameraId).get(CameraCharacteristics.LENS_FACING);
+
+ return lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_BACK;
+ }
+
+ @NonNull
+ private CameraCharacteristics getCameraCharacteristics(final String cameraId) throws FDroidDeviceException {
+ try {
+ return cameraManager.getCameraCharacteristics(cameraId);
+ } catch (CameraAccessException e) {
+ Log.e(TAG, e.getMessage(), e);
+ throw new FDroidDeviceException("Exception accessing the camera id = " + cameraId, e);
+ }
+
+ }
+
+ private boolean testAutofocusModeForCamera(final String cameraId) throws FDroidDeviceException {
+ try {
+ boolean hasAutofocusMode = false;
+ final int[] autoFocusModes = getAvailableAFModes(cameraId);
+ if (autoFocusModes != null) {
+ hasAutofocusMode = testAvailableMode(autoFocusModes);
+ }
+
+ return hasAutofocusMode;
+ } catch (FDroidDeviceException e) {
+ Log.e(TAG, e.getMessage(), e);
+ throw new FDroidDeviceException("Exception accessing the camera id = " + cameraId, e);
+ }
+ }
+
+ private int[] getAvailableAFModes(final String cameraId) throws FDroidDeviceException {
+ return getCameraCharacteristics(cameraId).get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES);
+ }
+
+ private boolean testAvailableMode(final int[] autoFocusModes) {
+ boolean hasAutofocusMode = false;
+ for (final int mode : autoFocusModes) {
+ boolean afMode = isAutofocus(mode);
+ hasAutofocusMode |= afMode;
+ }
+ return hasAutofocusMode;
+ }
+
+ private boolean isAutofocus(final int mode) {
+ return mode != android.hardware.camera2.CameraMetadata.CONTROL_AF_MODE_OFF;
+ }
+
+}
diff --git a/app/src/main/res/layout/swap_wifi_qr.xml b/app/src/main/res/layout/swap_wifi_qr.xml
index 32ca0df63..44d64a6dc 100644
--- a/app/src/main/res/layout/swap_wifi_qr.xml
+++ b/app/src/main/res/layout/swap_wifi_qr.xml
@@ -44,6 +44,14 @@
android:layout_gravity="center"
android:id="@+id/btn_qr_scanner"/>
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-af/strings.xml b/app/src/main/res/values-af/strings.xml
index 9e99fa4ae..c06a477eb 100644
--- a/app/src/main/res/values-af/strings.xml
+++ b/app/src/main/res/values-af/strings.xml
@@ -528,4 +528,4 @@
Afgelaai, gereed om te installeer
Stoor program besonderhede (%1$d/%2$d) vanaf %3$s
-
+
diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
index a220729e2..916450fc5 100644
--- a/app/src/main/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -519,4 +519,4 @@
إخفاء %s
التطبيق سوف يخفي نفسه
-
+
diff --git a/app/src/main/res/values-ast/strings.xml b/app/src/main/res/values-ast/strings.xml
index 804904630..de5b1879f 100644
--- a/app/src/main/res/values-ast/strings.xml
+++ b/app/src/main/res/values-ast/strings.xml
@@ -534,4 +534,4 @@
Tapecer %s
Tapeceráse la app
-
+
diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml
index 539a35269..1b6e4ca04 100644
--- a/app/src/main/res/values-be/strings.xml
+++ b/app/src/main/res/values-be/strings.xml
@@ -575,4 +575,4 @@
Выйсці з праграмы
Запомніць як аднаўляць
-
+
diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml
index 7765d45a0..4a1f7120e 100644
--- a/app/src/main/res/values-bg/strings.xml
+++ b/app/src/main/res/values-bg/strings.xml
@@ -509,4 +509,4 @@
За споделянето на приложения с други около вас, и двете устройства трябва да използват %1$s.
-
+
diff --git a/app/src/main/res/values-bo/strings.xml b/app/src/main/res/values-bo/strings.xml
index 273943186..ad6aa731c 100644
--- a/app/src/main/res/values-bo/strings.xml
+++ b/app/src/main/res/values-bo/strings.xml
@@ -475,4 +475,4 @@
དྲྭ་ཤེལ་པར་ལེན་བཀག
ཉེ་བའི་ཆར་གྱི་མཉེས་ཆས་དྲྭ་ཤེལ་ནས་དྲྭ་ཤེལ་པར་ལེན་བཀག་པ་དང་། དྲྭ་ཤེལ་པར་ལེན་ནསམཉེས་ཆས་ནང་དོན་སྦས་པ།
-
+
diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml
index a08e2a89b..7315a7ddc 100644
--- a/app/src/main/res/values-ca/strings.xml
+++ b/app/src/main/res/values-ca/strings.xml
@@ -516,4 +516,4 @@
Amagueu %s
L\'app s\'ocultarà
-
+
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index 872ac7e65..ea1c750ef 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -555,4 +555,4 @@
Skrýt tlačítko vyhledávání
Dlouhý stisk tlačítka hledání skryje aplikaci
-
+
diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml
index 48bb592dc..58248dd46 100644
--- a/app/src/main/res/values-da/strings.xml
+++ b/app/src/main/res/values-da/strings.xml
@@ -503,4 +503,4 @@
Ignorer
Gemmer app detaljer (%1$d/%2$d) fra %3$s
-
+
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 1dfba3c4b..0358d888c 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -548,4 +548,4 @@
In einem Krisenereignis werden %1$s aus dem Programmstarter entfernt. Nur die Eingabe von „%2$d” in der gefälschten %3$s-App kann sie wiederherstellen.
Warnhinweis. Alle Verknüpfungen auf dem Startbildschirm werden ebenfalls entfernt und müssen manuell hinzugefügt werden.
-
+
diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml
index 103d3f9dd..92ae0c636 100644
--- a/app/src/main/res/values-eo/strings.xml
+++ b/app/src/main/res/values-eo/strings.xml
@@ -533,4 +533,4 @@
Kaŝi per serĉ-butono
Longe premu la serĉ-butonon por kaŝi la aplikaĵon
-
+
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 2c2f2d3fe..f044b8656 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -541,4 +541,4 @@
Ocultar %s
La aplicación se ocultará
-
+
diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml
index c4d5d1fda..a57f251bb 100644
--- a/app/src/main/res/values-et/strings.xml
+++ b/app/src/main/res/values-et/strings.xml
@@ -543,4 +543,4 @@
Kas sa oled kindel, et soovid käivitajast eemaldada rakenduse %1$s? Ainult \"%2$d\" sisestamine võltsrakendusse %3$s taastab selle.
Hoiatus: avakuvalt eemaldatakse ka kõigi rakenduste otseteed ja need on vaja käsitsi uuesti lisada.
Peida otsingunupuga
-
+
diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml
index 994dd664a..816761dd9 100644
--- a/app/src/main/res/values-eu/strings.xml
+++ b/app/src/main/res/values-eu/strings.xml
@@ -572,4 +572,4 @@
Ezkutatu bilaketa botoiarekin
Bilaketa botoia luze zapaltzean aplikazioa ezkutatuko da
-
+
diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml
index 7654f16ac..7c7922747 100644
--- a/app/src/main/res/values-fa/strings.xml
+++ b/app/src/main/res/values-fa/strings.xml
@@ -515,4 +515,4 @@
پنهان کردن با دکمهٔ جستوجو
لمس طولانی دکمهٔ جستوجو، کاره را پنهان میکند
-
+
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 9731cd02c..b2b1eba1c 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -551,4 +551,4 @@
Masquer %s maintenant
Êtes-vous sûr de vouloir supprimer %1$s du lanceur. Vous ne pouvez le restaurer qu\'en tapant « %2$d » dans la fausse application %3$s.
Attention : les raccourcis d\'applications sur l\'écran d\'accueil seront aussi supprimés et devront être rajoutés manuellement.
-
+
diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml
index 04c4c905b..df732d496 100644
--- a/app/src/main/res/values-gl/strings.xml
+++ b/app/src/main/res/values-gl/strings.xml
@@ -515,4 +515,4 @@
- Actualizado hai %1$d anos
Gardando os detalles das apps
-
+
diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml
index c700fdd9d..bf3a9ec50 100644
--- a/app/src/main/res/values-he/strings.xml
+++ b/app/src/main/res/values-he/strings.xml
@@ -541,4 +541,4 @@
הסתרה עם כפתור החיפוש
לחיצה ארוכה על כפתור החיפוש תסתיר את היישומון
-
+
diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml
index cf0f9ac9f..346860a75 100644
--- a/app/src/main/res/values-hi/strings.xml
+++ b/app/src/main/res/values-hi/strings.xml
@@ -154,4 +154,4 @@
नया व्हर्जन भिन्न की से साईन किया हुवा है।नया व्हर्जन इन्स्टॉल करनेकेलिए पुराना अनइंस्टाल करें।कृपया फिर से कोशिश करें। ( याद रहे कि अनइंस्टाल करनेके बाद ऐप डेटा डिलेट हो जायेगा।)
इनस्टॉल हिस्ट्री रखें
सभी इन्स्टॉल एवं अनइंस्टॉल लॉग को एफ-ड्रॉइड में रखें
-
+
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 2232c4414..9bb43782e 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -483,4 +483,4 @@
A(z) %1$s által biztosítva.
Kategória %1$s
-
+
diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml
index 1931172b8..2096cbdb6 100644
--- a/app/src/main/res/values-id/strings.xml
+++ b/app/src/main/res/values-id/strings.xml
@@ -529,4 +529,4 @@
Sembunyikan %s
Aplikasi akan sembunyi dengan sendirinya
-
+
diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml
index d8f5b8772..718ffb265 100644
--- a/app/src/main/res/values-is/strings.xml
+++ b/app/src/main/res/values-is/strings.xml
@@ -585,4 +585,4 @@
Fela með leitarhnappi
Ef ýtt er lengi mun leitarhnappurinn fela forritið
-
+
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 7ad2c4350..488c08ac5 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -555,4 +555,4 @@
Conferma Applicazione Pulsante di Panico
Sei sicuro di voler permettere %1$s di eseguire azioni distruttive del pulsante di panico?
Impostazioni Pulsante di Panico
-
+
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 1cb32b9a2..b2984c9a6 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -495,4 +495,4 @@
検索ボタンで非表示にする
検索ボタンを長押しすることでアプリを非表示にすることができます
-
+
diff --git a/app/src/main/res/values-kab/strings.xml b/app/src/main/res/values-kab/strings.xml
index dc741f7fd..f2f46b191 100644
--- a/app/src/main/res/values-kab/strings.xml
+++ b/app/src/main/res/values-kab/strings.xml
@@ -235,4 +235,4 @@
Asesfer n %2$s / %3$s (%4$d%%) from %1$s
Iwjed i usebded
Alqem iwjed i usebded
-
+
diff --git a/app/src/main/res/values-kn/strings.xml b/app/src/main/res/values-kn/strings.xml
index cb719008f..d98603ff2 100644
--- a/app/src/main/res/values-kn/strings.xml
+++ b/app/src/main/res/values-kn/strings.xml
@@ -83,4 +83,4 @@
ಇತರೆ
ಅಳಿಸು
-
+
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index 1eaa5f174..a38c48197 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -477,4 +477,4 @@
%s 숨기기
앱 자체가 숨을 것입니다
-
+
diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml
index f55b6488e..61cf7efc8 100644
--- a/app/src/main/res/values-lt/strings.xml
+++ b/app/src/main/res/values-lt/strings.xml
@@ -136,4 +136,4 @@
Priversti senąjį indeksavimo formatą
Nėra automatinio programėlių sąrašo atnaujinimų
Atnaujinimai parsiunčiami automatiškai o Jūs perspėjami juos instaliuoti
-
+
diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml
index d10196226..7525d2354 100644
--- a/app/src/main/res/values-lv/strings.xml
+++ b/app/src/main/res/values-lv/strings.xml
@@ -163,4 +163,4 @@
Atcelt lejupielādi
Atjaunināt
Fails instalēts uz %s
-
+
diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml
index 163dd87af..e4a912f93 100644
--- a/app/src/main/res/values-ml/strings.xml
+++ b/app/src/main/res/values-ml/strings.xml
@@ -452,4 +452,4 @@
%1$s നൽകിയത്.
എല്ലാ നെറ്റ്വർക്ക് അഭ്യർത്ഥനകൾക്കും പ്രോക്സി ക്രമീകരിക്കുക
പ്രോക്സി ഹോസ്റ്റ്
-
+
diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml
index 840546604..7c6a4972e 100644
--- a/app/src/main/res/values-nb/strings.xml
+++ b/app/src/main/res/values-nb/strings.xml
@@ -545,4 +545,4 @@
Skjul med søke-knappen
Å trykke lenge på søkeknappen vil skjule programmet
-
+
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 4b5afea2e..4fcbb9026 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -532,4 +532,4 @@
Verbergen met zoekknop
De zoekknop lang ingedrukt houden zal de app verbergen
-
+
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index a2afff33c..22a4a5754 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -562,4 +562,4 @@
Ukryj przyciskiem szukania
Przytrzymanie przycisku szukania ukryje aplikację
-
+
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 553c9d30f..52178946c 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -561,4 +561,4 @@
Esconder o botão de busca
Pressionar o botão de busca por um tempo longo vai esconder o app
-
+
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index 9cafa3970..6c531f842 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -558,4 +558,4 @@
Ocultar com o botão de pesquisa
Toque longo no botão de pesquisa oculta a aplicação
-
+
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index 68daf01c0..319d83340 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -504,4 +504,4 @@
Calculator
Ascunde %s acum
Ascunde cu butonul de căutare
-
+
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 3017c961b..0b4aa198c 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -545,4 +545,4 @@
Предотвратить Скриншоты
Блокировать скриншоты от последних приложений
-
+
diff --git a/app/src/main/res/values-sc/strings.xml b/app/src/main/res/values-sc/strings.xml
index b83a4ee68..b0eff765c 100644
--- a/app/src/main/res/values-sc/strings.xml
+++ b/app/src/main/res/values-sc/strings.xml
@@ -572,4 +572,4 @@
Istichi cun su butone de chirca
Un\'incarcada longa in su butone de chirca at a istichire s\'aplicatzione
-
+
diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml
index 21acd0516..ee4c830c9 100644
--- a/app/src/main/res/values-sk/strings.xml
+++ b/app/src/main/res/values-sk/strings.xml
@@ -536,4 +536,4 @@
Ignorovať
Ukladanie podrobností aplikácie (%1$d/%2$d) z %3$s
-
+
diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml
index ba36de533..2b64e00d9 100644
--- a/app/src/main/res/values-sl/strings.xml
+++ b/app/src/main/res/values-sl/strings.xml
@@ -115,4 +115,4 @@
Zaradi nepričakovane napake se je aplikacija prisilno ustavila. Nam želite v e-pošti posredovati podrobnosti in s tem pomagati odpraviti napako?
Posodobitev na voljo
Namestitev neuspešna
-
+
diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml
index 0b7c3f6b7..0a6f70cbf 100644
--- a/app/src/main/res/values-sr/strings.xml
+++ b/app/src/main/res/values-sr/strings.xml
@@ -519,4 +519,4 @@
Пронашли смо безбедносну рањивост у %1$s. Препоручујемо да сместа надоградите апликацију.
Занемари
-
+
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index d2eab9da1..9471b1471 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -517,4 +517,4 @@
Förhindrar skärmdumpar och döljer appinnehåll från senaste skärmar
Panikknappsapp
-
+
diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml
index 06bb021a6..2577de2e1 100644
--- a/app/src/main/res/values-th/strings.xml
+++ b/app/src/main/res/values-th/strings.xml
@@ -397,4 +397,4 @@
แต่ได้ทำการบันทึกข้อมูลกุณแจเข้ารหัสใหม่เพิ่มเข้าไป
ล่าสุด
-
+
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 44ce75a7b..e8d099b12 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -542,4 +542,4 @@
Arama düğmesiyle gizle
Arama düğmesine uzun basmak uygulamayı gizler
-
+
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 50937fb7a..3d479509c 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -529,4 +529,4 @@
Вийти з додатку
Приховати %s
-
+
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index f045e2560..4ed60a725 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -479,4 +479,4 @@
无
隐藏 %s
应用程序将隐藏自己
-
+
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index 0a1b524e7..b9fccb048 100644
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -457,4 +457,4 @@
已安裝的程式版本與可供安裝的版本並不相容。卸載現有的應用程式將讓您檢視及安裝相容的版本。此問題通常出現於透過 Google Play 或其他途徑安裝,並使用不同認證的應用程式。
F-Droid 偵測到一個 EIO 錯誤:%s 很可能已崩潰!
-
+
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index d65bbd535..e39dcad41 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -508,4 +508,4 @@
隱藏搜尋按鈕
長按搜尋按鈕將會隱藏應用程式
-
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a8838f0a5..26a67f65b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -563,6 +563,7 @@ This often occurs with apps installed via Google Play or other sources, if they
Updated today
+ Your camera doesn\'t seem to have an autofocus. It might be difficult to scan the code.
- Updated %1$d day ago
- Updated %1$d days ago
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 90fbb95c1..49c63556d 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -228,12 +228,19 @@
+
+