Merge branch 'afWarningQrCodeScan' into 'master'
* jif-afWarningQrCodeScan: do not include english string in translations Correct check style errors Add style for the poor QR code scanning autofocus capability warning Add 'poor QR code scanning capability' translations Call to the camera autofocus checker in the view Add camera characteristics checker fdroid/fdroidclient!649 closes #260
This commit is contained in:
commit
6ad3604a0e
@ -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.
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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<String> 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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -44,6 +44,14 @@
|
||||
android:layout_gravity="center"
|
||||
android:id="@+id/btn_qr_scanner"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/warning_qr_scanner"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/warning_scaning_qr_code"
|
||||
android:visibility="gone"
|
||||
style="@style/SwapTheme.Wizard.QRScanWarningText"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</org.fdroid.fdroid.views.swap.WifiQrView>
|
@ -528,4 +528,4 @@
|
||||
<string name="app_list_download_ready">Afgelaai, gereed om te installeer</string>
|
||||
|
||||
<string name="status_inserting_x_apps">Stoor program besonderhede (%1$d/%2$d) vanaf %3$s</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -519,4 +519,4 @@
|
||||
<string name="panic_hide_title">إخفاء %s</string>
|
||||
<string name="panic_hide_summary">التطبيق سوف يخفي نفسه</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -534,4 +534,4 @@
|
||||
<string name="panic_hide_title">Tapecer %s</string>
|
||||
<string name="panic_hide_summary">Tapeceráse la app</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -575,4 +575,4 @@
|
||||
|
||||
<string name="panic_exit_title">Выйсці з праграмы</string>
|
||||
<string name="panic_hide_warning_title">Запомніць як аднаўляць</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -509,4 +509,4 @@
|
||||
|
||||
<string name="nearby_splash__both_parties_need_fdroid">За споделянето на приложения с други около вас, и двете устройства трябва да използват %1$s.</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -475,4 +475,4 @@
|
||||
<string name="preventScreenshots_title">དྲྭ་ཤེལ་པར་ལེན་བཀག</string>
|
||||
<string name="preventScreenshots_summary">ཉེ་བའི་ཆར་གྱི་མཉེས་ཆས་དྲྭ་ཤེལ་ནས་དྲྭ་ཤེལ་པར་ལེན་བཀག་པ་དང་། དྲྭ་ཤེལ་པར་ལེན་ནསམཉེས་ཆས་ནང་དོན་སྦས་པ།</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -516,4 +516,4 @@
|
||||
<string name="panic_hide_title">Amagueu %s</string>
|
||||
<string name="panic_hide_summary">L\'app s\'ocultarà</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -555,4 +555,4 @@
|
||||
<string name="hide_on_long_search_press_title">Skrýt tlačítko vyhledávání</string>
|
||||
<string name="hide_on_long_search_press_summary">Dlouhý stisk tlačítka hledání skryje aplikaci</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -503,4 +503,4 @@
|
||||
<string name="updates__app_with_known_vulnerability__ignore">Ignorer</string>
|
||||
|
||||
<string name="status_inserting_x_apps">Gemmer app detaljer (%1$d/%2$d) fra %3$s</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -548,4 +548,4 @@
|
||||
<string name="panic_hide_warning_message">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.</string>
|
||||
|
||||
<string name="hiding_dialog_warning">Warnhinweis. Alle Verknüpfungen auf dem Startbildschirm werden ebenfalls entfernt und müssen manuell hinzugefügt werden.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -533,4 +533,4 @@
|
||||
<string name="hide_on_long_search_press_title">Kaŝi per serĉ-butono</string>
|
||||
<string name="hide_on_long_search_press_summary">Longe premu la serĉ-butonon por kaŝi la aplikaĵon</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -541,4 +541,4 @@
|
||||
<string name="panic_hide_title">Ocultar %s</string>
|
||||
<string name="panic_hide_summary">La aplicación se ocultará</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -543,4 +543,4 @@
|
||||
<string name="hiding_dialog_message">Kas sa oled kindel, et soovid käivitajast eemaldada rakenduse %1$s? Ainult \"%2$d\" sisestamine võltsrakendusse %3$s taastab selle.</string>
|
||||
<string name="hiding_dialog_warning">Hoiatus: avakuvalt eemaldatakse ka kõigi rakenduste otseteed ja need on vaja käsitsi uuesti lisada.</string>
|
||||
<string name="hide_on_long_search_press_title">Peida otsingunupuga</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -572,4 +572,4 @@
|
||||
<string name="hide_on_long_search_press_title">Ezkutatu bilaketa botoiarekin</string>
|
||||
<string name="hide_on_long_search_press_summary">Bilaketa botoia luze zapaltzean aplikazioa ezkutatuko da</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -515,4 +515,4 @@
|
||||
<string name="hide_on_long_search_press_title">پنهان کردن با دکمهٔ جستوجو</string>
|
||||
<string name="hide_on_long_search_press_summary">لمس طولانی دکمهٔ جستوجو، کاره را پنهان میکند</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -551,4 +551,4 @@
|
||||
<string name="hiding_dialog_title">Masquer %s maintenant</string>
|
||||
<string name="hiding_dialog_message">Ê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.</string>
|
||||
<string name="hiding_dialog_warning">Attention : les raccourcis d\'applications sur l\'écran d\'accueil seront aussi supprimés et devront être rajoutés manuellement.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -515,4 +515,4 @@
|
||||
<item quantity="other">Actualizado hai %1$d anos</item>
|
||||
</plurals>
|
||||
<string name="status_inserting_apps">Gardando os detalles das apps</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -541,4 +541,4 @@
|
||||
<string name="hide_on_long_search_press_title">הסתרה עם כפתור החיפוש</string>
|
||||
<string name="hide_on_long_search_press_summary">לחיצה ארוכה על כפתור החיפוש תסתיר את היישומון</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -154,4 +154,4 @@
|
||||
<string name="SignatureMismatch">नया व्हर्जन भिन्न की से साईन किया हुवा है।नया व्हर्जन इन्स्टॉल करनेकेलिए पुराना अनइंस्टाल करें।कृपया फिर से कोशिश करें। ( याद रहे कि अनइंस्टाल करनेके बाद ऐप डेटा डिलेट हो जायेगा।)</string>
|
||||
<string name="keep_install_history">इनस्टॉल हिस्ट्री रखें</string>
|
||||
<string name="keep_install_history_summary">सभी इन्स्टॉल एवं अनइंस्टॉल लॉग को एफ-ड्रॉइड में रखें</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -483,4 +483,4 @@
|
||||
<string name="perms_description_app">A(z) %1$s által biztosítva.</string>
|
||||
<string name="tts_category_name">Kategória %1$s</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -529,4 +529,4 @@
|
||||
<string name="panic_hide_title">Sembunyikan %s</string>
|
||||
<string name="panic_hide_summary">Aplikasi akan sembunyi dengan sendirinya</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -585,4 +585,4 @@
|
||||
<string name="hide_on_long_search_press_title">Fela með leitarhnappi</string>
|
||||
<string name="hide_on_long_search_press_summary">Ef ýtt er lengi mun leitarhnappurinn fela forritið</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -555,4 +555,4 @@
|
||||
<string name="panic_app_dialog_title">Conferma Applicazione Pulsante di Panico</string>
|
||||
<string name="panic_app_dialog_message">Sei sicuro di voler permettere %1$s di eseguire azioni distruttive del pulsante di panico?</string>
|
||||
<string name="panic_settings">Impostazioni Pulsante di Panico</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -495,4 +495,4 @@
|
||||
<string name="hide_on_long_search_press_title">検索ボタンで非表示にする</string>
|
||||
<string name="hide_on_long_search_press_summary">検索ボタンを長押しすることでアプリを非表示にすることができます</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -235,4 +235,4 @@
|
||||
<string name="status_processing_xml_percent">Asesfer n %2$s / %3$s (%4$d%%) from %1$s</string>
|
||||
<string name="notification_title_single_ready_to_install">Iwjed i usebded</string>
|
||||
<string name="notification_title_single_ready_to_install_update">Alqem iwjed i usebded</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -83,4 +83,4 @@
|
||||
<string name="other">ಇತರೆ</string>
|
||||
|
||||
<string name="delete">ಅಳಿಸು</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -477,4 +477,4 @@
|
||||
<string name="panic_hide_title">%s 숨기기</string>
|
||||
<string name="panic_hide_summary">앱 자체가 숨을 것입니다</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -136,4 +136,4 @@
|
||||
<string name="force_old_index">Priversti senąjį indeksavimo formatą</string>
|
||||
<string name="update_interval_zero">Nėra automatinio programėlių sąrašo atnaujinimų</string>
|
||||
<string name="update_auto_download_summary">Atnaujinimai parsiunčiami automatiškai o Jūs perspėjami juos instaliuoti</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -163,4 +163,4 @@
|
||||
<string name="app__tts__cancel_download">Atcelt lejupielādi</string>
|
||||
<string name="app__install_downloaded_update">Atjaunināt</string>
|
||||
<string name="app_installed_media">Fails instalēts uz %s</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -452,4 +452,4 @@
|
||||
<string name="perms_description_app">%1$s നൽകിയത്.</string>
|
||||
<string name="enable_proxy_summary">എല്ലാ നെറ്റ്വർക്ക് അഭ്യർത്ഥനകൾക്കും പ്രോക്സി ക്രമീകരിക്കുക</string>
|
||||
<string name="proxy_host">പ്രോക്സി ഹോസ്റ്റ്</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -545,4 +545,4 @@
|
||||
<string name="hide_on_long_search_press_title">Skjul med søke-knappen</string>
|
||||
<string name="hide_on_long_search_press_summary">Å trykke lenge på søkeknappen vil skjule programmet</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -532,4 +532,4 @@
|
||||
<string name="hide_on_long_search_press_title">Verbergen met zoekknop</string>
|
||||
<string name="hide_on_long_search_press_summary">De zoekknop lang ingedrukt houden zal de app verbergen</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -562,4 +562,4 @@
|
||||
<string name="hide_on_long_search_press_title">Ukryj przyciskiem szukania</string>
|
||||
<string name="hide_on_long_search_press_summary">Przytrzymanie przycisku szukania ukryje aplikację</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -561,4 +561,4 @@
|
||||
<string name="hide_on_long_search_press_title">Esconder o botão de busca</string>
|
||||
<string name="hide_on_long_search_press_summary">Pressionar o botão de busca por um tempo longo vai esconder o app</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -558,4 +558,4 @@
|
||||
<string name="hide_on_long_search_press_title">Ocultar com o botão de pesquisa</string>
|
||||
<string name="hide_on_long_search_press_summary">Toque longo no botão de pesquisa oculta a aplicação</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -504,4 +504,4 @@
|
||||
<string name="hiding_calculator">Calculator</string>
|
||||
<string name="hiding_dialog_title">Ascunde %s acum</string>
|
||||
<string name="hide_on_long_search_press_title">Ascunde cu butonul de căutare</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -545,4 +545,4 @@
|
||||
<string name="preventScreenshots_title">Предотвратить Скриншоты</string>
|
||||
<string name="preventScreenshots_summary">Блокировать скриншоты от последних приложений</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -572,4 +572,4 @@
|
||||
<string name="hide_on_long_search_press_title">Istichi cun su butone de chirca</string>
|
||||
<string name="hide_on_long_search_press_summary">Un\'incarcada longa in su butone de chirca at a istichire s\'aplicatzione</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -536,4 +536,4 @@
|
||||
<string name="updates__app_with_known_vulnerability__ignore">Ignorovať</string>
|
||||
|
||||
<string name="status_inserting_x_apps">Ukladanie podrobností aplikácie (%1$d/%2$d) z %3$s</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -115,4 +115,4 @@
|
||||
<string name="crash_dialog_text">Zaradi nepričakovane napake se je aplikacija prisilno ustavila. Nam želite v e-pošti posredovati podrobnosti in s tem pomagati odpraviti napako?</string>
|
||||
<string name="notification_title_single_update_available">Posodobitev na voljo</string>
|
||||
<string name="notification_title_summary_install_error">Namestitev neuspešna</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -519,4 +519,4 @@
|
||||
<string name="updates__app_with_known_vulnerability__prompt_upgrade">Пронашли смо безбедносну рањивост у %1$s. Препоручујемо да сместа надоградите апликацију.</string>
|
||||
<string name="updates__app_with_known_vulnerability__ignore">Занемари</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -517,4 +517,4 @@
|
||||
<string name="preventScreenshots_summary">Förhindrar skärmdumpar och döljer appinnehåll från senaste skärmar</string>
|
||||
|
||||
<string name="panic_app_setting_title">Panikknappsapp</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -397,4 +397,4 @@
|
||||
แต่ได้ทำการบันทึกข้อมูลกุณแจเข้ารหัสใหม่เพิ่มเข้าไป
|
||||
</string>
|
||||
<string name="main_menu__latest_apps">ล่าสุด</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -542,4 +542,4 @@
|
||||
<string name="hide_on_long_search_press_title">Arama düğmesiyle gizle</string>
|
||||
<string name="hide_on_long_search_press_summary">Arama düğmesine uzun basmak uygulamayı gizler</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -529,4 +529,4 @@
|
||||
|
||||
<string name="panic_exit_title">Вийти з додатку</string>
|
||||
<string name="panic_hide_title">Приховати %s</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -479,4 +479,4 @@
|
||||
<string name="panic_app_setting_none">无</string>
|
||||
<string name="panic_hide_title">隐藏 %s</string>
|
||||
<string name="panic_hide_summary">应用程序将隐藏自己</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -457,4 +457,4 @@
|
||||
<string name="app_details__no_versions__explain_incompatible_signatures">已安裝的程式版本與可供安裝的版本並不相容。卸載現有的應用程式將讓您檢視及安裝相容的版本。此問題通常出現於透過 Google Play 或其他途徑安裝,並使用不同認證的應用程式。</string>
|
||||
|
||||
<string name="installed_app__file_corrupt">F-Droid 偵測到一個 EIO 錯誤:%s 很可能已崩潰!</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -508,4 +508,4 @@
|
||||
<string name="hide_on_long_search_press_title">隱藏搜尋按鈕</string>
|
||||
<string name="hide_on_long_search_press_summary">長按搜尋按鈕將會隱藏應用程式</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -563,6 +563,7 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
</plurals>
|
||||
|
||||
<string name="details_last_updated_today">Updated today</string>
|
||||
<string name="warning_scaning_qr_code">Your camera doesn\'t seem to have an autofocus. It might be difficult to scan the code.</string>
|
||||
<plurals name="details_last_update_days">
|
||||
<item quantity="one">Updated %1$d day ago</item>
|
||||
<item quantity="other">Updated %1$d days ago</item>
|
||||
|
@ -228,12 +228,19 @@
|
||||
<style name="SwapTheme.Wizard.MainTextBase" parent="@style/SwapTheme.Wizard.Text">
|
||||
<item name="android:paddingLeft">40dp</item>
|
||||
<item name="android:paddingRight">40dp</item>
|
||||
<item name="android:paddingTop">20dp</item>
|
||||
<item name="android:paddingBottom">15dp</item>
|
||||
<item name="android:paddingTop">10dp</item>
|
||||
<item name="android:paddingBottom">10dp</item>
|
||||
</style>
|
||||
|
||||
<style name="SwapTheme.Wizard.MainText" parent="SwapTheme.Wizard.MainTextBase" />
|
||||
|
||||
<style name="SwapTheme.Wizard.QRScanWarningText" parent="@style/SwapTheme.Wizard.MainTextBase" >
|
||||
<item name="android:paddingLeft">40dp</item>
|
||||
<item name="android:paddingRight">40dp</item>
|
||||
<item name="android:paddingTop">0dp</item>
|
||||
<item name="android:paddingBottom">5dp</item>
|
||||
</style>
|
||||
|
||||
<style name="SwapTheme.Wizard.LocalIpAddress" parent="@style/SwapTheme.Wizard.Text">
|
||||
<item name="android:textSize">20sp</item>
|
||||
<item name="android:paddingLeft">40dp</item>
|
||||
|
Loading…
x
Reference in New Issue
Block a user