Compare commits

...
62 Commits
Author SHA1 Message Date
Markus Fisch c492897fa9 Advance version number to 1.46.0 2021-11-13 15:45:30 +01:00
Markus Fisch 647c08bfb8 Add documentation for Deep Links and SCAN intent 2021-11-13 15:31:39 +01:00
Markus Fisch e5025ef58c Support deep links
To open the app from web links.
2021-11-12 23:54:19 +01:00
inkhornandGitHub 74bb421b2d Update pt-br translation 2021-11-08 21:47:23 +01:00
Markus Fisch 4ed8d4614a Update tools version 2021-10-28 13:51:01 +02:00
Markus Fisch f038eb989b Remove double setting WPA passphrase
It's already set in the enterprise configuration.
2021-10-25 21:11:08 +02:00
Markus Fisch c5722a3890 Collapse setting WPA passphrases in one line 2021-10-25 21:11:08 +02:00
Sergiy StuparandGitHub 41108007ad Update Ukrainian translation 2021-10-18 12:56:11 +02:00
Markus Fisch 867f179a37 Add support for "A:" in WIFI codes
Anonymous Identity may be "A" or "AI".
2021-10-17 19:19:49 +02:00
Markus Fisch 892916b0d0 Catch exception when passphrase isn't encodeable
And ignore WiFi codes that have passphrases that aren't ASCII
encodeable.
2021-10-15 21:23:37 +02:00
Markus Fisch 3bd440fdb7 Update tools version 2021-10-07 22:53:03 +02:00
Markus Fisch a4c8551be8 Clean up new code 2021-10-07 20:38:28 +02:00
Markus Fisch 316644d3ae Allow multiple query arguments in custom URL 2021-10-07 20:28:07 +02:00
Damir RakhimulinandGitHub 9fb2eb2d2b Add visual support for links after scanning 2021-10-07 20:23:07 +02:00
solokotandGitHub dd046a5d52 Russian translation for missing Wi-Fi info support 2021-10-07 12:13:32 +02:00
Balázs ÚrandGitHub f3ddd458cb Update Hungarian translation 2021-10-06 09:39:21 +02:00
Markus Fisch 157d928620 Add missing translations for Wi-Fi info support 2021-10-05 12:22:04 +02:00
Ngô Ngọc Đức HuyandGitHub 94cb509f0b Add Vietnamese translation 2021-10-05 12:15:27 +02:00
Sylvia van OsandGitHub df18f8ebd3 Add content data section
Initially with only Wi-Fi info support, but could be extended in the
future.
2021-10-05 12:15:11 +02:00
solokotandGitHub 705095472f Update Russian language 2021-09-30 19:50:25 +02:00
Markus Fisch f897973b3f Update changelogs for F-Droid 2021-09-29 22:28:59 +02:00
Markus Fisch c88d5cf4cd Advance version number to 1.45.0 2021-09-29 22:25:18 +02:00
Markus Fisch 8ecd49731f Add a setting to set the delay for bulk mode
As requested.
2021-09-29 22:21:15 +02:00
Markus Fisch 6f3b4dbdab Update build tools and Kotlin version 2021-08-31 17:08:58 +02:00
Markus Fisch 3c8c0737c4 Add support for MECARD contact format
By silently transforming it into VCARD format.

This might be genius or a really bad idea. Let's find out ;)
2021-08-31 17:06:49 +02:00
Markus Fisch 9baf6d621a Remove unnecessary safe call operators 2021-08-31 17:04:14 +02:00
Markus Fisch f0d0ee04af Replace toUpperCase with just uppercase
And the same for toLowerCase. Following Android Studio's suggestion
for the latest release of Kotlin.
2021-08-31 17:02:36 +02:00
Markus Fisch 4d38da045a Remove unused permissions on Android Q 2021-08-24 23:15:52 +02:00
Markus Fisch af70d9507b Remove enableR8=true from gradle.properties
No longer used with Gradle 7.
2021-08-13 09:51:12 +02:00
Markus Fisch 273f38c36c Update build tools and gradle 2021-08-10 10:52:22 +02:00
Markus Fisch 210cdfc171 Get the Context only once and put in a val
Instead of (silently) invoking getters multiple times.
2021-08-10 10:41:25 +02:00
Markus Fisch 3ec8c4b5d7 Write exported barcode file on IO dispatcher 2021-08-10 10:40:45 +02:00
Markus Fisch d99f0ca039 Update changelogs for F-Droid 2021-07-29 21:51:30 +02:00
Markus Fisch 4a9e700d20 Advance version number to 1.44.1 2021-07-29 21:50:06 +02:00
Markus Fisch 40e339ce89 Use a matrix to map from frame to view
Because it's more elegant and less code.

However, this solution requires more calculations than before
because `Matrix.mapPoints()` carries out a matrix vector
multiplication which consists of more calculations than what
was required before.

But even mobile CPUs are fast enough that this won't make any
difference.

Also, this solution avoids allocating Point and List objects in
the hot path. Also not too important because ZXing still
allocates a lot of objects but that's okay too.
2021-07-29 10:35:33 +02:00
Markus Fisch 9d476b3491 Include all language resources in App Bundles
So the in-app language setting works for App Bundles too.

Normally, Google Play delivers only the language resource of
the device to minimise download size.

Another solution would have been to use the PlayCore API to
download language resources on demand, but it makes much more
sense to simply include the ~60 kb than adding fragile code
and dependencies.
2021-07-29 10:29:43 +02:00
Markus Fisch 22b58265a5 Clean up code
According to Android Studio recommendations.
2021-07-15 16:33:20 +02:00
Markus Fisch bd4576b7ac Update tools version 2021-07-15 14:05:24 +02:00
ElaborendumandGitHub a57f6d1904 Update Spanish translation 2021-07-15 09:24:42 +02:00
Markus Fisch 842b38c986 Update tools and Kotlin version 2021-06-29 21:46:50 +02:00
Markus Fisch b1fae727a9 Calculate ratio for mapping on initialization
Because the ratio is fixed for the mapping.
2021-06-20 18:01:12 +02:00
Markus Fisch db24f608d5 Update changelogs for F-Droid 2021-06-06 14:31:07 +02:00
gnuhead-chiebandGitHub 9f49a00bae Update Japanese translation
* Update app Japanese translation
* Add Japanese store description
2021-06-06 14:29:38 +02:00
Markus Fisch 947bbf3031 Advance version number to 1.44.0 2021-06-05 14:49:33 +02:00
GazandGitHub b3b57a7ba8 Update Traditional Chinese Translation 2021-06-04 15:29:00 +02:00
solokotandGitHub 1627f3ead9 Update Russian language 2021-06-03 13:53:53 +02:00
Heimen StoffelsandGitHub 4343f5da82 Update Dutch translation 2021-06-02 22:18:41 +02:00
Markus Fisch 67395a067d Add a setting to choose barcode formats to scan
This setting isn't available before Honeycomb because there is
no MultiSelectListPreference before.
2021-06-02 19:05:55 +02:00
Markus Fisch 0de571f3c1 Ask before removing network suggestions
To avoid unintentional removal.
2021-06-02 19:02:38 +02:00
Markus Fisch d83cd77a87 Update changelogs for F-Droid 2021-06-02 19:02:38 +02:00
Heimen StoffelsandGitHub 5ca7aff5df Updated Dutch translation 2021-06-02 18:58:19 +02:00
solokotandGitHub e4cc516a9b Updated & improved Russian language 2021-06-02 18:57:52 +02:00
Markus Fisch f160cf0953 Advance version number to 1.43.0 2021-06-01 22:04:17 +02:00
Markus Fisch ef5b5aa34a Add a preference to remove network suggestions
Because as it turns out, WiFi network suggestions cannot be removed
by the user. Which is pretty silly in my opinion. But anyway, now a
user can remove all the networks added by Binary Eye.
2021-06-01 21:57:20 +02:00
GazandGitHub 536ee5bc3d Update Traditional Chinese Translation 2021-05-25 12:03:51 +02:00
solokotandGitHub 0becada572 Update Russian language 2021-05-25 11:55:34 +02:00
Markus Fisch 0c773d6f05 Update changelogs for F-Droid 2021-05-24 22:19:23 +02:00
Markus Fisch f2df364840 Advance version number to 1.42.0 2021-05-24 22:18:26 +02:00
Markus Fisch 5740b43568 Add a setting to pick a default search engine
To open unknown data with.
2021-05-24 22:12:13 +02:00
GazandGitHub b384b99b01 Update zh-TW(Traditional Chinese) Translation 2021-05-23 12:21:27 +02:00
Heimen StoffelsandGitHub 6affa4ce25 Update Dutch translation 2021-05-18 18:40:05 +02:00
Markus Fisch 455d329fff Remove resolveActivity() for opening content
Because on Android 11+ resolveActivity() can no longer be used
to query if there's an app that can handle the intent for privacy
reasons.
2021-05-07 22:15:38 +02:00
67 changed files with 1959 additions and 698 deletions
+38
View File
@@ -1,5 +1,43 @@
# Change Log
## 1.46.0
* Support deep links
* Support "A:" in WIFI codes
* Allow multiple query arguments in custom URL
* Add Wi-Fi info data section
* Add Vietnamese translation
* Update Brazilian Portuguese translation
* Update Hungarian translation
* Update Ukrainian translation
* Update Russian translation
## 1.45.0
* Add a setting to set the delay for bulk mode
* Add support for MECARD contact format
* Remove unused permissions on Android Q
## 1.44.1
* Update Spanish translation
* Update Japanese translation
* Fix in-app language switching for App Bundles
## 1.44.0
* Add a setting to choose barcode formats to scan
* Ask before removing network suggestions
* Update Traditional Chinese Translation
* Update Russian language
* Update Dutch translation
## 1.43.0
* Add a preference item to remove WiFi network suggestions
* Update Traditional Chinese Translation
* Update Russian language
## 1.42.0
* Add a setting to pick a default search engine
* Update Traditional Chinese
* Update Dutch translation
## 1.41.1
* Update Bengali translation
* Update Simplified Chinese
+13
View File
@@ -23,6 +23,19 @@ test:
cat:
./gradlew test cAT
testview:
adb shell am start -W -a android.intent.action.VIEW -d 'binaryeye://scan'
testscan:
adb shell am start -a android.intent.action.VIEW \
-c android.intent.category.BROWSABLE \
-d 'binaryeye://scan/?ret=http%3A%2F%2Fmarkusfisch.de%2F%3Fresult%3D{RESULT}'
testurl:
adb shell am start -a android.intent.action.VIEW \
-c android.intent.category.BROWSABLE \
-d 'http://markusfisch.de/BinaryEye?ret=http%3A%2F%2Fmarkusfisch.de%2F%3Fresult%3D{RESULT}'
install:
adb $(TARGET) install -r app/build/outputs/apk/debug/app-debug.apk
+48
View File
@@ -64,6 +64,54 @@ ZXing can generate the following barcode formats:
* [QR CODE][qr_code]
* [UPC A][upc_a]
## Deep Links and Intents
### Deep Links
You can invoke Binary Eye with a web URI intent from anything that can
open URIs. There are two options:
1. [binaryeye://scan](binaryeye://scan)
2. [http(s)://markusfisch.de/BinaryEye](http://markusfisch.de/BinaryEye)
If you want to get the scanned contents, you can add a `ret` query
argument with a (URL encoded) URI template. For example:
[http://markusfisch.de/BinaryEye?ret=http%3A%2F%2Fexample.com%2F%3Fresult%3D{RESULT}](http://markusfisch.de/BinaryEye?ret=http%3A%2F%2Fexample.com%2F%3Fresult%3D{RESULT})
Supported symbols are:
* `RESULT` - scanned content
* `RESULT_BYTES` - raw result as a hex string
* `FORMAT` - barcode format
* `META` - the meta data, if available
### SCAN Intent
You can also use Binary Eye from other apps by using the
`com.google.zxing.client.android.SCAN` Intent with `startActivityForResult()`
like this:
startActivityForResult(
Intent("com.google.zxing.client.android.SCAN"),
SOME_NUMBER
)
And process the result in `onActivityResult()` of your `Activity`:
override fun onActivityResult(
requestCode: Int,
resultCode: Int,
data: Intent?
) {
when (requestCode) {
SOME_NUMBER -> if (resultCode == RESULT_OK) {
val result = data.getStringExtra("SCAN_RESULT")
}
}
}
## RenderScript
This app uses [RenderScript][rs] to resize and rotate the camera image.
+18 -6
View File
@@ -9,11 +9,11 @@ android {
minSdkVersion 9
targetSdkVersion sdk_version
versionCode 81
versionName '1.41.1'
versionCode 87
versionName '1.46.0'
// it's recommended to set this value to the lowest API level
// able to provide all the functionality
// It's recommended to set this value to the lowest API level
// able to provide all the functionality.
renderscriptTargetApi 24
renderscriptSupportModeEnabled true
renderscriptSupportModeBlasEnabled true
@@ -50,10 +50,22 @@ android {
}
}
bundle {
language {
// To make the app bundle contain all language resources
// so the in-app language setting works. Another solution
// would be to use the PlayCore API to download language
// resources on demand, but it makes much more sense to
// simply include the ~60 kb than adding fragile code and
// dependencies.
enableSplit = false
}
}
lintOptions {
// because at the time of writing, even the latest version
// Because at the time of writing, even the latest version
// of RenderScript is raising this error no matter if
// renderscriptTargetApi matches targetSdkVersion
// renderscriptTargetApi matches targetSdkVersion.
disable 'GradleCompatible'
}
}
+16 -7
View File
@@ -5,13 +5,16 @@
<supports-screens
android:largeScreens="true"
android:xlargeScreens="true"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
android:maxSdkVersion="28"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"
android:maxSdkVersion="28"/>
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-sdk tools:overrideLibrary="android.support.v14.preference"/>
@@ -64,10 +67,16 @@
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data
android:host="www.markusfisch.de"
android:pathPrefix="/BinaryEye"
android:scheme="http"/>
<data android:scheme="http"
android:host="markusfisch.de"
android:pathPrefix="/BinaryEye"/>
<data android:scheme="https" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="binaryeye" android:host="scan"/>
</intent-filter>
</activity>
<activity
@@ -7,8 +7,7 @@ import de.markusfisch.android.binaryeye.actions.IAction
import de.markusfisch.android.binaryeye.app.alertDialog
import de.markusfisch.android.binaryeye.app.parseAndNormalizeUri
import de.markusfisch.android.binaryeye.app.prefs
import de.markusfisch.android.binaryeye.content.execShareIntent
import de.markusfisch.android.binaryeye.widget.toast
import de.markusfisch.android.binaryeye.content.startIntent
import java.net.URLEncoder
object OpenOrSearchAction : IAction {
@@ -18,36 +17,36 @@ object OpenOrSearchAction : IAction {
override fun canExecuteOn(data: ByteArray): Boolean = false
override suspend fun execute(context: Context, data: ByteArray) {
val intent = openUri(context, String(data)) ?: return
context.execShareIntent(intent)
view(context, String(data), true)
}
private suspend fun openUri(
context: Context,
data: String,
search: Boolean = true
): Intent? {
val uri = parseAndNormalizeUri(data)
val intent = Intent(Intent.ACTION_VIEW, uri)
return when {
// It's okay to use `resolveActivity()` at API level 30+ here
// because ACTION_VIEW is defined in `<queries>` in the Manifest.
intent.resolveActivity(context.packageManager) != null -> intent
search -> getSearchIntent(context, data)
else -> {
context.toast(R.string.cannot_resolve_action)
null
}
private suspend fun view(context: Context, s: String, search: Boolean) {
val intent = Intent(Intent.ACTION_VIEW, parseAndNormalizeUri(s))
if (!context.startIntent(intent) && search) {
openSearch(context, s)
}
}
private suspend fun getSearchIntent(context: Context, query: String): Intent? {
private suspend fun openSearch(context: Context, query: String) {
val defaultSearchUrl = prefs.defaultSearchUrl
if (defaultSearchUrl.isNotEmpty()) {
view(
context,
defaultSearchUrl + URLEncoder.encode(query, "utf-8"),
false
)
return
}
val names = context.resources.getStringArray(
R.array.search_engines_names
).toMutableList()
val urls = context.resources.getStringArray(
R.array.search_engines_values
).toMutableList()
// Remove the "Always ask" entry. The arrays search_engines_*
// are used in the preferences too.
names.removeFirst()
urls.removeFirst()
if (prefs.openWithUrl.isNotEmpty()) {
names.add(prefs.openWithUrl)
urls.add(prefs.openWithUrl)
@@ -57,7 +56,7 @@ object OpenOrSearchAction : IAction {
setItems(names.toTypedArray()) { _, which ->
resume(urls[which] + URLEncoder.encode(query, "utf-8"))
}
} ?: return null
return openUri(context, queryUri, false)
} ?: return
view(context, queryUri, false)
}
}
@@ -15,7 +15,7 @@ object VTypeParser {
fun parseVType(data: String): String? = vTypeRegex.matchEntire(
data
)?.groupValues?.get(1)?.toUpperCase(Locale.US)
)?.groupValues?.get(1)?.uppercase(Locale.US)
fun parseMap(
data: String
@@ -26,7 +26,7 @@ object VTypeParser {
it.groupValues[2]
)
}
}.groupBy({ it.first.toUpperCase(Locale.US) }) { it.second }
}.groupBy({ it.first.uppercase(Locale.US) }) { it.second }
}
data class VTypeProperty(
@@ -20,10 +20,19 @@ object VCardAction : IntentAction() {
get() = R.string.vcard_failed
override fun canExecuteOn(data: ByteArray): Boolean {
return VTypeParser.parseVType(String(data)) == "VCARD"
var stringData = String(data)
// Quick & dirty MECARD support: simply make it a VCARD.
if (stringData.startsWith("MECARD:")) {
stringData = stringData
.trim()
.replace("MECARD:", "BEGIN:VCARD\n")
.replace(";;", "\nEND:VCARD\n")
.replace(";", "\n")
}
return VTypeParser.parseVType(stringData) == "VCARD"
}
override suspend fun createIntent(context: Context, data: ByteArray): Intent? {
override suspend fun createIntent(context: Context, data: ByteArray): Intent {
val info = VTypeParser.parseMap(String(data))
return Intent(Intent.ACTION_INSERT_OR_EDIT).apply {
@@ -50,7 +59,7 @@ object VCardAction : IntentAction() {
}
putExtra(
extraPhone,
phoneProperty.value.toLowerCase(Locale.US).removePrefix("tel:")
phoneProperty.value.lowercase(Locale.US).removePrefix("tel:")
)
}
info["EMAIL"]?.forEachIndexed { index, mailProperty ->
@@ -142,7 +151,7 @@ object VCardAction : IntentAction() {
} ?: this
private val String.mailType: Int?
get() = when (this.toUpperCase(Locale.US)) {
get() = when (this.uppercase(Locale.US)) {
"HOME" -> ContactsContract.CommonDataKinds.Email.TYPE_HOME
"WORK" -> ContactsContract.CommonDataKinds.Email.TYPE_WORK
"OTHER" -> ContactsContract.CommonDataKinds.Email.TYPE_OTHER
@@ -151,7 +160,7 @@ object VCardAction : IntentAction() {
}
private val String.phoneType: Int?
get() = when (this.toUpperCase(Locale.US)) {
get() = when (this.uppercase(Locale.US)) {
"HOME" -> ContactsContract.CommonDataKinds.Phone.TYPE_HOME
"MOBILE", "CELL" -> ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE
"WORK" -> ContactsContract.CommonDataKinds.Phone.TYPE_WORK
@@ -10,6 +10,12 @@ import android.support.annotation.RequiresApi
import de.markusfisch.android.binaryeye.R
import java.util.*
@RequiresApi(Build.VERSION_CODES.Q)
fun removeNetworkSuggestions(context: Context): Int =
(context.applicationContext.getSystemService(
Context.WIFI_SERVICE
) as WifiManager).removeNetworkSuggestions(listOf())
/**
* Normal:
* WIFI:S:[network SSID];T:<WPA|WEP|nopass|>;P:[network password];H:<true|false|>;;
@@ -94,7 +100,7 @@ object WifiConnector {
string
)?.groupValues?.get(1)?.let { pairs ->
pairRegex.findAll(pairs).map { pair ->
pair.groupValues[1].toUpperCase(Locale.US) to pair.groupValues[2]
pair.groupValues[1].uppercase(Locale.US) to pair.groupValues[2]
}.toMap()
}
}
@@ -112,7 +118,7 @@ object WifiConnector {
internal val hidden: Boolean
get() = inputMap["H"]?.unescape == "true"
internal val anonymousIdentity: String
get() = inputMap["AI"]?.unescape ?: ""
get() = inputMap["AI"]?.unescape ?: inputMap["A"]?.unescape ?: ""
internal val identity: String
get() = inputMap["I"]?.unescape ?: ""
internal val eapMethod: Int?
@@ -164,7 +170,7 @@ object WifiConnector {
): WifiNetworkSuggestion.Builder? {
fun WifiNetworkSuggestion.Builder.applyCommon(
data: SimpleDataAccessor
): WifiNetworkSuggestion.Builder? {
): WifiNetworkSuggestion.Builder {
setSsid(data.ssid)
return this
}
@@ -172,44 +178,41 @@ object WifiConnector {
fun WifiNetworkSuggestion.Builder.applySecurity(
data: SimpleDataAccessor
): WifiNetworkSuggestion.Builder? {
when (data.securityType) {
"WPA", "WPA2" -> {
data.password?.let {
setWpa2Passphrase(it)
try {
when (data.securityType) {
"WPA", "WPA2" -> {
data.password?.let { setWpa2Passphrase(it) }
}
"WPA2-EAP" -> {
setWpa2EnterpriseConfig(WifiEnterpriseConfig().apply {
identity = data.identity
anonymousIdentity = data.anonymousIdentity
password = data.password
data.eapMethod?.let { eapMethod = it }
data.phase2Method?.let { phase2Method = it }
})
}
"WPA3" -> {
data.password?.let { setWpa3Passphrase(it) }
}
"WPA3-EAP" -> {
setWpa3EnterpriseConfig(WifiEnterpriseConfig().apply {
identity = data.identity
anonymousIdentity = data.anonymousIdentity
password = data.password
data.eapMethod?.let { eapMethod = it }
data.phase2Method?.let { phase2Method = it }
})
}
}
"WPA2-EAP" -> {
data.password?.let {
setWpa2Passphrase(it)
}
setWpa2EnterpriseConfig(WifiEnterpriseConfig().apply {
identity = data.identity
anonymousIdentity = data.anonymousIdentity
password = data.password
data.eapMethod?.let { eapMethod = it }
data.phase2Method?.let { phase2Method = it }
})
}
"WPA3" -> {
data.password?.let {
setWpa3Passphrase(it)
}
}
"WPA3-EAP" -> {
data.password?.let { setWpa3Passphrase(it) }
setWpa3EnterpriseConfig(WifiEnterpriseConfig().apply {
identity = data.identity
anonymousIdentity = data.anonymousIdentity
password = data.password
data.eapMethod?.let { eapMethod = it }
data.phase2Method?.let { phase2Method = it }
})
}
} catch (e: IllegalArgumentException) {
// Don't accept passphrases that aren't ASCII encodeable.
return null
}
return this
}
return this.applyCommon(data)?.applySecurity(data)
return this.applyCommon(data).applySecurity(data)
}
// WifiConfiguration is deprecated in Android Q.
@@ -222,7 +225,7 @@ object WifiConnector {
fun WifiConfiguration.applyCommon(
data: SimpleDataAccessor
): WifiConfiguration? {
): WifiConfiguration {
allowedAuthAlgorithms.clear()
allowedGroupCiphers.clear()
allowedKeyManagement.clear()
@@ -292,7 +295,7 @@ object WifiConnector {
return this
}
return this.applyCommon(data)?.applySecurity(data)
return this.applyCommon(data).applySecurity(data)
}
private inline fun <T> requireSdk(version: Int, block: () -> T): T? {
@@ -4,6 +4,7 @@ import android.app.Activity
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Matrix
import android.graphics.Rect
import android.graphics.RectF
import android.hardware.Camera
@@ -29,9 +30,8 @@ import de.markusfisch.android.binaryeye.app.*
import de.markusfisch.android.binaryeye.content.copyToClipboard
import de.markusfisch.android.binaryeye.content.execShareIntent
import de.markusfisch.android.binaryeye.database.Scan
import de.markusfisch.android.binaryeye.graphics.Mapping
import de.markusfisch.android.binaryeye.graphics.frameToView
import de.markusfisch.android.binaryeye.graphics.isPortrait
import de.markusfisch.android.binaryeye.graphics.getFrameToViewMatrix
import de.markusfisch.android.binaryeye.graphics.map
import de.markusfisch.android.binaryeye.net.sendAsync
import de.markusfisch.android.binaryeye.os.error
import de.markusfisch.android.binaryeye.os.vibrate
@@ -42,18 +42,22 @@ import de.markusfisch.android.binaryeye.widget.DetectorView
import de.markusfisch.android.binaryeye.widget.toast
import de.markusfisch.android.binaryeye.zxing.Zxing
import de.markusfisch.android.cameraview.widget.CameraView
import java.net.URLEncoder
import kotlin.math.max
import kotlin.math.min
import kotlin.math.roundToInt
class CameraActivity : AppCompatActivity() {
private val zxing = Zxing { point ->
point?.let {
getMapping()?.map(it)?.let {
detectorView.post {
detectorView.mark(listOf(it))
}
}
point ?: return@Zxing
val matrix = getMappingMatrix() ?: return@Zxing
detectorView.post {
detectorView.update(
matrix.map(
arrayOf(point),
detectorView.coordinates
)
)
}
}
@@ -65,14 +69,15 @@ class CameraActivity : AppCompatActivity() {
private lateinit var flashFab: FloatingActionButton
private var preprocessor: Preprocessor? = null
private var nativeMapping: Mapping? = null
private var rotatedMapping: Mapping? = null
private var nativeMappingMatrix: Matrix? = null
private var rotatedMappingMatrix: Matrix? = null
private var recreatePreprocessor = false
private var rotate = false
private var invert = false
private var flash = false
private var decoding = true
private var returnResult = false
private var returnUrlTemplate: String? = null
private var frontFacing = false
private var bulkMode = prefs.bulkMode
private var ignoreNext: String? = null
@@ -157,18 +162,32 @@ class CameraActivity : AppCompatActivity() {
override fun onResume() {
super.onResume()
System.gc()
zxing.updateHints(prefs.tryHarder)
zxing.updateHints(
prefs.tryHarder,
prefs.barcodeFormats
)
if (prefs.bulkMode && bulkMode != prefs.bulkMode) {
bulkMode = prefs.bulkMode
invalidateOptionsMenu()
ignoreNext = null
}
returnResult = "com.google.zxing.client.android.SCAN" == intent.action
setReturnTarget(intent)
if (hasCameraPermission(this)) {
openCamera()
}
}
private fun setReturnTarget(intent: Intent?) {
when {
intent?.action == "com.google.zxing.client.android.SCAN" -> {
returnResult = true
}
isReturnUrl(intent) -> intent?.data?.let {
returnUrlTemplate = it.getQueryParameter("ret")
}
}
}
private fun resetPreProcessor() {
preprocessor?.destroy()
preprocessor = null
@@ -585,13 +604,13 @@ class CameraActivity : AppCompatActivity() {
} else {
cameraView.previewRect
}
nativeMapping = frameToView(
nativeMappingMatrix = getFrameToViewMatrix(
pp.outWidth,
pp.outHeight,
frameOrientation,
viewRect
)
rotatedMapping = frameToView(
rotatedMappingMatrix = getFrameToViewMatrix(
pp.outHeight,
pp.outWidth,
(frameOrientation - 90 + 360) % 360,
@@ -636,40 +655,68 @@ class CameraActivity : AppCompatActivity() {
)
// Since the ROI is always centered and symmetric, we don't
// need to distinguish between 0 and 180 or 90 and 270 degree.
if (isPortrait(frameOrientation)) {
Rect(
(normalizedRoi.top * frameWidth.toFloat()).roundToInt(),
(normalizedRoi.left * frameHeight.toFloat()).roundToInt(),
(normalizedRoi.bottom * frameWidth.toFloat()).roundToInt(),
(normalizedRoi.right * frameHeight.toFloat()).roundToInt()
val errectedRoi = if (isPortrait(frameOrientation)) {
RectF(
normalizedRoi.top,
normalizedRoi.left,
normalizedRoi.bottom,
normalizedRoi.right
)
} else {
Rect(
(normalizedRoi.left * frameWidth.toFloat()).roundToInt(),
(normalizedRoi.top * frameHeight.toFloat()).roundToInt(),
(normalizedRoi.right * frameWidth.toFloat()).roundToInt(),
(normalizedRoi.bottom * frameHeight.toFloat()).roundToInt()
)
normalizedRoi
}
Rect(
(errectedRoi.left * frameWidth.toFloat()).roundToInt(),
(errectedRoi.top * frameHeight.toFloat()).roundToInt(),
(errectedRoi.right * frameWidth.toFloat()).roundToInt(),
(errectedRoi.bottom * frameHeight.toFloat()).roundToInt()
)
}
}
private fun postResult(result: Result) {
// Get mapping for the current rotate value.
val mapping = getMapping()
// Get matrix for the current rotate value.
val matrix = getMappingMatrix()
val resultPoints = result.resultPoints
if (matrix == null ||
resultPoints == null ||
resultPoints.isEmpty()
) {
return
}
cameraView.post {
val rp = result.resultPoints
if (mapping != null && rp != null && rp.isNotEmpty()) {
detectorView.mark(mapping.map(rp))
}
vibrator.vibrate()
showResult(
this@CameraActivity,
result,
vibrator,
returnResult,
bulkMode
detectorView.update(
matrix.map(
resultPoints,
detectorView.coordinates
)
)
vibrator.vibrate()
val returnUri = returnUrlTemplate?.let {
try {
completeUrl(it, result)
} catch (e: Exception) {
e.message?.let { message ->
toast(message)
}
null
}
}
when {
returnResult -> {
setResult(Activity.RESULT_OK, getReturnIntent(result))
finish()
}
returnUri != null -> execShareIntent(
Intent(Intent.ACTION_VIEW, returnUri)
)
else -> showResult(
this@CameraActivity,
result,
vibrator,
bulkMode
)
}
if (bulkMode) {
ignoreNext = result.text
if (prefs.showToastInBulkMode) {
@@ -677,12 +724,16 @@ class CameraActivity : AppCompatActivity() {
}
detectorView.postDelayed({
decoding = true
}, 500)
}, prefs.bulkModeDelay.toLong())
}
}
}
private fun getMapping() = if (rotate) rotatedMapping else nativeMapping
private fun getMappingMatrix() = if (rotate) {
rotatedMappingMatrix
} else {
nativeMappingMatrix
}
companion object {
private const val PICK_FILE_RESULT_CODE = 1
@@ -697,14 +748,8 @@ fun showResult(
activity: Activity,
result: Result,
vibrator: Vibrator,
isResult: Boolean = false,
bulkMode: Boolean = false,
) {
if (isResult) {
activity.setResult(Activity.RESULT_OK, getReturnIntent(result))
activity.finish()
return
}
if (prefs.copyImmediately) {
activity.copyToClipboard(result.text)
}
@@ -776,9 +821,43 @@ fun getReturnIntent(result: Result): Intent {
return intent
}
private fun isReturnUrl(intent: Intent?): Boolean {
val dataString = intent?.dataString
return listOf(
"binaryeye://scan",
"http://markusfisch.de/BinaryEye",
"https://markusfisch.de/BinaryEye"
).firstOrNull {
val result = dataString?.startsWith(it) == true
result
} != null
}
private fun completeUrl(urlTemplate: String, result: Result) = Uri.parse(
urlTemplate
.replace("{RESULT}", URLEncoder.encode(result.text, "UTF-8"))
.replace("{RESULT_BYTES}", result.rawBytes?.toHexString() ?: "")
.replace(
"{FORMAT}", URLEncoder.encode(
result.barcodeFormat.toString(), "UTF-8"
)
)
.replace(
"{META}", URLEncoder.encode(
result.resultMetadata?.toString() ?: "", "UTF-8"
)
)
// And support {CODE} from the old ZXing app, too.
.replace("{CODE}", URLEncoder.encode(result.text, "UTF-8"))
)
private fun beepBeepBeep() {
ToneGenerator(AudioManager.STREAM_ALARM, 100).startTone(
ToneGenerator.TONE_CDMA_CONFIRM,
1000
)
}
private fun isPortrait(
orientation: Int
) = orientation == 90 || orientation == 270
@@ -19,7 +19,7 @@ import de.markusfisch.android.binaryeye.R
import de.markusfisch.android.binaryeye.app.*
import de.markusfisch.android.binaryeye.graphics.crop
import de.markusfisch.android.binaryeye.graphics.loadImageUri
import de.markusfisch.android.binaryeye.graphics.mapResult
import de.markusfisch.android.binaryeye.graphics.mapResultToView
import de.markusfisch.android.binaryeye.os.vibrate
import de.markusfisch.android.binaryeye.rs.fixTransparency
import de.markusfisch.android.binaryeye.view.colorSystemAndToolBars
@@ -58,7 +58,10 @@ class PickActivity : AppCompatActivity() {
// locale.
setTitle(R.string.pick_code_to_scan)
zxing.updateHints(true)
zxing.updateHints(
true,
prefs.barcodeFormats
)
rs = RenderScript.create(this)
vibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
@@ -132,19 +135,21 @@ class PickActivity : AppCompatActivity() {
result = zxing.decodePositiveNegative(cropped)
result?.let {
withContext(Dispatchers.Main) {
if (!isFinishing) {
vibrator.vibrate()
if (isFinishing) {
return@withContext
}
vibrator.vibrate()
val rc = Rect()
imageRect.round(rc)
rectInView.intersect(rc)
detectorView.mark(
mapResult(
detectorView.update(
mapResultToView(
cropped.width,
cropped.height,
0,
rectInView,
it
it.resultPoints,
detectorView.coordinates
)
)
}
@@ -11,7 +11,7 @@ suspend inline fun <T : Any> alertDialog(
context: Context,
crossinline build: AlertDialog.Builder.(resume: (T?) -> Unit) -> Unit
): T? = withContext(Dispatchers.Main) {
suspendCoroutine<T?> { continuation ->
suspendCoroutine { continuation ->
AlertDialog.Builder(context).apply {
setOnCancelListener {
continuation.resume(null)
@@ -0,0 +1,29 @@
package de.markusfisch.android.binaryeye.app
import java.util.regex.Pattern
private val urlPattern: Pattern = Pattern.compile(
"(?:^|[\\W])((ht|f)tp(s?):\\/\\/|www\\.)" +
"(([\\w\\-]+\\.){1,}?([\\w\\-.~]+\\/?)*" +
"[\\p{Alnum}.,%_=?&#\\-+()\\[\\]\\*$~@!:/{};']*)",
Pattern.CASE_INSENSITIVE or Pattern.MULTILINE or Pattern.DOTALL
)
fun getLinks(text: String): List<String> {
val matcher = urlPattern.matcher(text)
val urls = mutableListOf<String>()
while (matcher.find()) {
val matchStart = matcher.start(1)
val matchEnd = matcher.end()
var url = text.substring(matchStart, matchEnd)
if (!url.startsWith("http://") && !url.startsWith("https://")) {
url = "https://$url"
}
urls.add(url)
}
return urls
}
@@ -5,21 +5,22 @@ import android.os.Build
import java.util.*
fun Context.applyLocale(localeName: String) {
if (localeName.isNotEmpty()) {
val localeParts = localeName.split("-")
val locale = if (localeParts.size == 2) {
Locale(localeParts[0], localeParts[1])
} else {
Locale(localeName)
}
Locale.setDefault(locale)
val conf = resources.configuration
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
@Suppress("DEPRECATION")
conf.locale = locale
} else {
conf.setLocale(locale)
}
resources.updateConfiguration(conf, resources.displayMetrics)
if (localeName.isEmpty()) {
return
}
val localeParts = localeName.split("-")
val locale = if (localeParts.size == 2) {
Locale(localeParts[0], localeParts[1])
} else {
Locale(localeName)
}
Locale.setDefault(locale)
val conf = resources.configuration
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
@Suppress("DEPRECATION")
conf.locale = locale
} else {
conf.setLocale(locale)
}
resources.updateConfiguration(conf, resources.displayMetrics)
}
@@ -12,6 +12,12 @@ import de.markusfisch.android.binaryeye.widget.toast
import java.io.File
fun Context.execShareIntent(intent: Intent) {
if (!startIntent(intent)) {
toast(R.string.cannot_resolve_action)
}
}
fun Context.startIntent(intent: Intent) = try {
// Avoid using `intent.resolveActivity()` at API level 30+ due
// to the new package visibility restrictions. In order for
// `resolveActivity()` to "see" another package, we would need
@@ -20,11 +26,10 @@ fun Context.execShareIntent(intent: Intent) {
// an exception if the Intent cannot be resolved, it's much easier
// and more robust to just try and catch that exception if
// necessary.
try {
startActivity(intent)
} catch (e: ActivityNotFoundException) {
toast(R.string.cannot_resolve_action)
}
startActivity(intent)
true
} catch (e: ActivityNotFoundException) {
false
}
fun shareText(context: Context, text: String, type: String = "text/plain") {
@@ -16,7 +16,7 @@ fun exportCsv(
exportCsv(outputStream, cursor, delimiter)
}
fun exportCsv(cursor: Cursor, delimiter: String): String? {
fun exportCsv(cursor: Cursor, delimiter: String): String {
val outputStream = ByteArrayOutputStream()
exportCsv(outputStream, cursor, delimiter)
return outputStream.toString()
@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.app.AlertDialog
import android.content.Context
import android.graphics.Bitmap
import android.os.Build
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.*
@@ -26,7 +27,6 @@ import de.markusfisch.android.binaryeye.zxing.encodeAsBitmap
import de.markusfisch.android.binaryeye.zxing.encodeAsSvg
import de.markusfisch.android.binaryeye.zxing.encodeAsText
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import java.io.File
@@ -152,7 +152,10 @@ class BarcodeFragment : Fragment() {
@SuppressLint("InflateParams")
private fun askForFileNameAndSave(fileType: FileType) {
val ac = activity ?: return
if (!hasWritePermission(ac) { askForFileNameAndSave(fileType) }) {
// write permission is only required before Android Q
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q &&
!hasWritePermission(ac) { askForFileNameAndSave(fileType) }
) {
return
}
val view = ac.layoutInflater.inflate(R.layout.dialog_save_file, null)
@@ -198,9 +201,9 @@ class BarcodeFragment : Fragment() {
write: (outputStream: OutputStream) -> Unit
) {
val ac = activity ?: return
GlobalScope.launch {
GlobalScope.launch(Dispatchers.IO) {
val message = writeExternalFile(ac, fileName, mimeType, write).toSaveResult()
GlobalScope.launch(Main) {
launch(Dispatchers.Main) {
ac.toast(message)
}
}
@@ -215,9 +218,10 @@ class BarcodeFragment : Fragment() {
}
private fun share(bitmap: Bitmap) {
val ctx = context ?: return
GlobalScope.launch(Dispatchers.IO) {
val file = File(
context.externalCacheDir,
ctx.externalCacheDir,
"shared_barcode.png"
)
val success = try {
@@ -228,11 +232,11 @@ class BarcodeFragment : Fragment() {
} catch (e: IOException) {
false
}
GlobalScope.launch(Main) {
launch(Dispatchers.Main) {
if (success) {
shareFile(context, file, "image/png")
shareFile(ctx, file, "image/png")
} else {
activity?.toast(R.string.error_saving_file)
ctx.toast(R.string.error_saving_file)
}
}
}
@@ -273,4 +277,4 @@ private fun Bitmap.saveAsPng(outputStream: OutputStream, quality: Int = 90) {
private val fileNameCharacters = "[^A-Za-z0-9]".toRegex()
private fun encodeFileName(name: String): String =
fileNameCharacters.replace(name, "_").take(16).trim('_').toLowerCase(Locale.getDefault())
fileNameCharacters.replace(name, "_").take(16).trim('_').lowercase(Locale.getDefault())
@@ -6,6 +6,7 @@ import android.support.design.widget.FloatingActionButton
import android.support.v4.app.Fragment
import android.text.Editable
import android.text.TextWatcher
import android.text.method.LinkMovementMethod
import android.view.*
import android.widget.EditText
import android.widget.TableLayout
@@ -14,6 +15,7 @@ import android.widget.TextView
import de.markusfisch.android.binaryeye.R
import de.markusfisch.android.binaryeye.actions.ActionRegistry
import de.markusfisch.android.binaryeye.actions.wifi.WifiAction
import de.markusfisch.android.binaryeye.actions.wifi.WifiConnector
import de.markusfisch.android.binaryeye.activity.MainActivity
import de.markusfisch.android.binaryeye.adapter.prettifyFormatName
import de.markusfisch.android.binaryeye.app.*
@@ -33,8 +35,10 @@ import kotlinx.coroutines.launch
class DecodeFragment : Fragment() {
private lateinit var contentView: EditText
private lateinit var formatView: TextView
private lateinit var dataView: TableLayout
private lateinit var metaView: TableLayout
private lateinit var hexView: TextView
private lateinit var linksView: TextView
private lateinit var format: String
private lateinit var fab: FloatingActionButton
@@ -82,6 +86,7 @@ class DecodeFragment : Fragment() {
format = scan.format
contentView = view.findViewById(R.id.content)
linksView = view.findViewById(R.id.links)
fab = view.findViewById(R.id.open)
if (!isBinary) {
@@ -113,6 +118,8 @@ class DecodeFragment : Fragment() {
if (prefs.openImmediately) {
executeAction(content.toByteArray())
}
linksView.text = getLinks(inputContent).joinToString("\n")
linksView.movementMethod = LinkMovementMethod.getInstance()
} else {
contentView.setText(R.string.binary_data)
contentView.isEnabled = false
@@ -123,11 +130,16 @@ class DecodeFragment : Fragment() {
}
formatView = view.findViewById(R.id.format)
dataView = view.findViewById(R.id.data)
metaView = view.findViewById(R.id.meta)
hexView = view.findViewById(R.id.hex)
updateViewsAndAction(raw)
if (!isBinary) {
fillDataView(dataView, inputContent)
}
if (prefs.showMetaData) {
fillMetaView(metaView, scan)
}
@@ -168,20 +180,13 @@ class DecodeFragment : Fragment() {
}
}
private fun fillMetaView(tableLayout: TableLayout, scan: Scan) {
private fun fillDataTable(tableLayout: TableLayout, items: LinkedHashMap<Int, String?>?) {
val ctx = tableLayout.context
val spaceBetween = (16f * ctx.resources.displayMetrics.density).toInt()
var hasMeta = false
sortedMapOf(
R.string.error_correction_level to scan.errorCorrectionLevel,
R.string.issue_number to scan.issueNumber,
R.string.orientation to scan.orientation,
R.string.other_meta_data to scan.otherMetaData,
R.string.pdf417_extra_metadata to scan.pdf417ExtraMetaData,
R.string.possible_country to scan.possibleCountry,
R.string.suggested_price to scan.suggestedPrice,
R.string.upc_ean_extension to scan.upcEanExtension
).forEach { item ->
var hasEntries = false
items?.forEach { item ->
item.value?.let {
val tr = TableRow(ctx)
val keyView = TextView(ctx)
@@ -192,14 +197,51 @@ class DecodeFragment : Fragment() {
tr.addView(keyView)
tr.addView(valueView)
tableLayout.addView(tr)
hasMeta = true
hasEntries = true
}
}
if (hasMeta) {
if (hasEntries) {
tableLayout.setPadding(0, 0, 0, spaceBetween)
}
}
private fun fillDataView(tableLayout: TableLayout, content: String) {
val items = LinkedHashMap<Int, String?>()
if (action is WifiAction) {
val wifiData = WifiConnector.parseMap(content)
if (wifiData != null) {
items[R.string.entry_type] = getString(R.string.wifi_network)
items[R.string.wifi_ssid] = wifiData["S"]
items[R.string.wifi_password] = wifiData["P"]
items[R.string.wifi_type] = wifiData["T"]
items[R.string.wifi_hidden] = wifiData["H"]
items[R.string.wifi_eap] = wifiData["E"]
items[R.string.wifi_identity] = wifiData["I"]
items[R.string.wifi_anonymous_identity] = wifiData["A"]
items[R.string.wifi_phase2] = wifiData["PH2"]
}
}
fillDataTable(tableLayout, items)
}
private fun fillMetaView(tableLayout: TableLayout, scan: Scan) {
fillDataTable(
tableLayout, linkedMapOf(
R.string.error_correction_level to scan.errorCorrectionLevel,
R.string.issue_number to scan.issueNumber,
R.string.orientation to scan.orientation,
R.string.other_meta_data to scan.otherMetaData,
R.string.pdf417_extra_metadata to scan.pdf417ExtraMetaData,
R.string.possible_country to scan.possibleCountry,
R.string.suggested_price to scan.suggestedPrice,
R.string.upc_ean_extension to scan.upcEanExtension
)
)
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.fragment_decode, menu)
if (isBinary) {
@@ -349,7 +391,7 @@ private fun hexDump(bytes: ByteArray, charsPerLine: Int = 33): String {
while (true) {
val ord = bytes[i]
hex.append(String.format("%02X ", ord))
ascii.append(if (ord > 31) ord.toChar() else " ")
ascii.append(if (ord > 31) ord.toInt().toChar() else " ")
++i
val posInLine = i % itemsPerLine
val atEnd = i >= len
@@ -1,21 +1,28 @@
package de.markusfisch.android.binaryeye.fragment
import android.app.Activity
import android.app.AlertDialog
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.content.SharedPreferences.OnSharedPreferenceChangeListener
import android.net.wifi.WifiManager
import android.os.Build
import android.os.Bundle
import android.support.annotation.RequiresApi
import android.support.v14.preference.MultiSelectListPreference
import android.support.v7.preference.ListPreference
import android.support.v7.preference.Preference
import android.support.v7.preference.PreferenceFragmentCompat
import android.support.v7.preference.PreferenceGroup
import de.markusfisch.android.binaryeye.R
import de.markusfisch.android.binaryeye.actions.wifi.removeNetworkSuggestions
import de.markusfisch.android.binaryeye.activity.SplashActivity
import de.markusfisch.android.binaryeye.app.prefs
import de.markusfisch.android.binaryeye.preference.UrlPreference
import de.markusfisch.android.binaryeye.view.setPaddingFromWindowInsets
import de.markusfisch.android.binaryeye.view.systemBarRecyclerViewScrollListener
import de.markusfisch.android.binaryeye.widget.toast
class PreferencesFragment : PreferenceFragmentCompat() {
private val changeListener = object : OnSharedPreferenceChangeListener {
@@ -36,6 +43,43 @@ class PreferencesFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(state: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.preferences)
activity?.setTitle(R.string.preferences)
wireClearNetworkPreferences()
}
private fun wireClearNetworkPreferences() {
val pref = findPreference("clear_network_suggestions") ?: return
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
pref.isVisible = false
} else {
pref.setOnPreferenceClickListener {
askToClearNetworkSuggestions(context)
true
}
}
}
@RequiresApi(Build.VERSION_CODES.Q)
private fun askToClearNetworkSuggestions(context: Context) {
AlertDialog.Builder(context)
.setMessage(R.string.really_remove_all_networks)
.setPositiveButton(android.R.string.ok) { _, _ ->
clearNetworkSuggestions(context)
}
.setNegativeButton(android.R.string.cancel) { _, _ -> }
.show()
}
@RequiresApi(Build.VERSION_CODES.Q)
private fun clearNetworkSuggestions(context: Context) {
context.toast(
if (
removeNetworkSuggestions(context) == WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS
) {
R.string.clear_network_suggestions_success
} else {
R.string.clear_network_suggestions_nothing_to_remove
}
)
}
override fun onResume() {
@@ -81,6 +125,13 @@ class PreferencesFragment : PreferenceFragmentCompat() {
is ListPreference -> {
preference.setSummary(preference.entry)
}
is MultiSelectListPreference -> {
preference.setSummary(
preference.values.joinToString(", ") {
it.replace(Regex("_"), " ")
}
)
}
is PreferenceGroup -> {
setSummaries(preference)
}
@@ -88,7 +88,7 @@ private fun completeUrl(template: String): String {
s = "http://${s}"
}
if (prefs.sendScanType == "0" &&
!s.matches(".*/[a-zA-Z._-]*\\?[a-zA-Z0-9_-]+=$".toRegex())
!s.matches(".*/[a-zA-Z._-]*\\?[a-zA-Z0-9&=_-]+=$".toRegex())
) {
s = "${s}?content="
}
@@ -1,29 +0,0 @@
package de.markusfisch.android.binaryeye.graphics
import android.content.Context
import android.graphics.Canvas
import android.graphics.Paint
import android.graphics.Point
import android.support.v4.content.ContextCompat
import de.markusfisch.android.binaryeye.R
class Dots(context: Context) {
private val paint = Paint(Paint.ANTI_ALIAS_FLAG)
private val radius = 8f * context.resources.displayMetrics.density
init {
paint.color = ContextCompat.getColor(context, R.color.dot)
paint.style = Paint.Style.FILL
}
fun draw(canvas: Canvas, points: List<Point>) {
for (point in points) {
canvas.drawCircle(
point.x.toFloat(),
point.y.toFloat(),
radius,
paint
)
}
}
}
@@ -1,85 +1,62 @@
package de.markusfisch.android.binaryeye.graphics
import android.graphics.Point
import android.graphics.Matrix
import android.graphics.Rect
import com.google.zxing.Result
import com.google.zxing.ResultPoint
import kotlin.math.roundToInt
fun mapResult(
fun mapResultToView(
frameWidth: Int,
frameHeight: Int,
frameOrientation: Int,
viewRect: Rect,
result: Result
): List<Point> = frameToView(
resultPoints: Array<ResultPoint?>,
targetArray: FloatArray
): Int = getFrameToViewMatrix(
frameWidth,
frameHeight,
frameOrientation,
viewRect
).map(
result.resultPoints
resultPoints,
targetArray
)
fun frameToView(
fun getFrameToViewMatrix(
frameWidth: Int,
frameHeight: Int,
frameOrientation: Int,
viewRect: Rect
) = Mapping(
frameWidth,
frameHeight,
frameOrientation,
viewRect.width().toFloat(),
viewRect.height().toFloat(),
viewRect.left,
viewRect.top
)
fun isPortrait(orientation: Int) = orientation == 90 || orientation == 270
data class Mapping(
val frameWidth: Int,
val frameHeight: Int,
val frameOrientation: Int,
val viewWidth: Float,
val viewHeight: Float,
val offsetX: Int,
val offsetY: Int
) {
fun map(resultPoint: ResultPoint): Point {
val point = Point(
resultPoint.x.roundToInt(),
resultPoint.y.roundToInt()
)
rotate(point)
val w: Int
val h: Int
if (isPortrait(frameOrientation)) {
w = frameHeight
h = frameWidth
} else {
w = frameWidth
h = frameHeight
}
val ratioX = viewWidth / w.toFloat()
val ratioY = viewHeight / h.toFloat()
point.set(
(point.x * ratioX).roundToInt() + offsetX,
(point.y * ratioY).roundToInt() + offsetY
)
return point
}
fun map(points: Array<ResultPoint?>): List<Point> =
// Because ZXing apparently returns null in this array sometimes.
points.filterNotNull().map { map(it) }
private fun rotate(point: Point) = when (frameOrientation) {
90 -> point.set(frameHeight - point.y, point.x)
180 -> point.set(frameWidth - point.x, frameHeight - point.y)
270 -> point.set(point.y, frameWidth - point.x)
else -> {
}
}
) = Matrix().apply {
// Normalize to frame dimensions for rotation.
postScale(
1f / frameWidth,
1f / frameHeight
)
// Rotate around center.
postRotate(frameOrientation.toFloat(), 0.5f, 0.5f)
// Scale up to view size.
postScale(viewRect.width().toFloat(), viewRect.height().toFloat())
// Apply view displacement.
postTranslate(viewRect.left.toFloat(), viewRect.top.toFloat())
}
fun Matrix.map(
resultPoints: Array<ResultPoint?>,
targetArray: FloatArray
): Int {
val max = targetArray.size
var i = 0
for (resultPoint in resultPoints) {
// Because ZXing apparently returns null in this array sometimes.
if (resultPoint == null) {
continue
}
targetArray[i++] = resultPoint.x
targetArray[i++] = resultPoint.y
if (i >= max) {
break
}
}
mapPoints(targetArray, 0, targetArray, 0, i)
return i
}
@@ -2,11 +2,37 @@ package de.markusfisch.android.binaryeye.preference
import android.content.Context
import android.content.SharedPreferences
import android.os.Build
import android.preference.PreferenceManager
import android.support.annotation.RequiresApi
class Preferences {
lateinit var preferences: SharedPreferences
var barcodeFormats = setOf(
"AZTEC",
"CODABAR",
"CODE_39",
"CODE_93",
"CODE_128",
"DATA_MATRIX",
"EAN_8",
"EAN_13",
"ITF",
"MAXICODE",
"PDF_417",
"QR_CODE",
"RSS_14",
"RSS_EXPANDED",
"UPC_A",
"UPC_E",
"UPC_EAN_EXTENSION"
)
@RequiresApi(Build.VERSION_CODES.HONEYCOMB)
set(value) {
apply(BARCODE_FORMATS, value)
field = value
}
var cropHandleX = -2 // -2 means set default roi.
set(value) {
apply(CROP_HANDLE_X, value)
@@ -53,6 +79,13 @@ class Preferences {
commit(BULK_MODE, value)
field = value
}
var bulkModeDelay = "500"
set(value) {
// Immediately save this setting because it's only ever read
// before the camera is opened.
commit(BULK_MODE_DELAY, value)
field = value
}
var showToastInBulkMode = true
set(value) {
// Immediately save this setting because it's only ever read
@@ -100,6 +133,11 @@ class Preferences {
apply(CLOSE_AUTOMATICALLY, value)
field = value
}
var defaultSearchUrl = ""
set(value) {
apply(DEFAULT_SEARCH_URL, value)
field = value
}
var openWithUrl: String = ""
set(value) {
apply(OPEN_WITH_URL, value)
@@ -139,6 +177,11 @@ class Preferences {
}
fun update() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
preferences.getStringSet(BARCODE_FORMATS, barcodeFormats)?.let {
barcodeFormats = it
}
}
cropHandleX = preferences.getInt(CROP_HANDLE_X, cropHandleX)
cropHandleY = preferences.getInt(CROP_HANDLE_Y, cropHandleY)
cropHandleOrientation = preferences.getInt(
@@ -153,6 +196,10 @@ class Preferences {
autoRotate = preferences.getBoolean(AUTO_ROTATE, autoRotate)
tryHarder = preferences.getBoolean(TRY_HARDER, tryHarder)
bulkMode = preferences.getBoolean(BULK_MODE, bulkMode)
bulkModeDelay = preferences.getString(
BULK_MODE_DELAY,
bulkModeDelay
) ?: bulkModeDelay
showToastInBulkMode = preferences.getBoolean(
SHOW_TOAST_IN_BULK_MODE,
showToastInBulkMode
@@ -177,6 +224,9 @@ class Preferences {
CLOSE_AUTOMATICALLY,
closeAutomatically
)
preferences.getString(DEFAULT_SEARCH_URL, defaultSearchUrl)?.also {
defaultSearchUrl = it
}
preferences.getString(OPEN_WITH_URL, openWithUrl)?.also {
openWithUrl = it
}
@@ -199,10 +249,17 @@ class Preferences {
private fun put(label: String, value: Boolean) =
preferences.edit().putBoolean(label, value)
private fun put(label: String, value: String) =
preferences.edit().putString(label, value)
private fun commit(label: String, value: Boolean) {
put(label, value).commit()
}
private fun commit(label: String, value: String) {
put(label, value).commit()
}
private fun apply(label: String, value: Boolean) {
put(label, value).apply()
}
@@ -215,7 +272,13 @@ class Preferences {
preferences.edit().putInt(label, value).apply()
}
@RequiresApi(Build.VERSION_CODES.HONEYCOMB)
private fun apply(label: String, value: Set<String>) {
preferences.edit().putStringSet(label, value).apply()
}
companion object {
const val BARCODE_FORMATS = "barcode_formats"
const val CROP_HANDLE_X = "crop_handle_x"
const val CROP_HANDLE_Y = "crop_handle_y"
const val CROP_HANDLE_ORIENTATION = "crop_handle_orientation"
@@ -224,6 +287,7 @@ class Preferences {
const val AUTO_ROTATE = "auto_rotate"
const val TRY_HARDER = "try_harder"
const val BULK_MODE = "bulk_mode"
const val BULK_MODE_DELAY = "bulk_mode_delay"
const val SHOW_TOAST_IN_BULK_MODE = "show_toast_in_bulk_mode"
const val VIBRATE = "vibrate"
const val USE_HISTORY = "use_history"
@@ -233,6 +297,7 @@ class Preferences {
const val SHOW_META_DATA = "show_meta_data"
const val SHOW_HEX_DUMP = "show_hex_dump"
const val CLOSE_AUTOMATICALLY = "close_automatically"
const val DEFAULT_SEARCH_URL = "default_search_url"
const val OPEN_WITH_URL = "open_with_url"
const val SEND_SCAN_URL = "send_scan_url"
const val SEND_SCAN_TYPE = "send_scan_type"
@@ -6,12 +6,12 @@ import android.graphics.*
import android.os.Build
import android.os.Parcel
import android.os.Parcelable
import android.support.v4.content.ContextCompat
import android.util.AttributeSet
import android.view.MotionEvent
import android.view.View
import de.markusfisch.android.binaryeye.R
import de.markusfisch.android.binaryeye.app.prefs
import de.markusfisch.android.binaryeye.graphics.Dots
import de.markusfisch.android.binaryeye.graphics.getBitmapFromDrawable
import de.markusfisch.android.binaryeye.graphics.getDashedBorderPaint
import kotlin.math.abs
@@ -20,18 +20,23 @@ import kotlin.math.min
import kotlin.math.roundToInt
class DetectorView : View {
val coordinates = FloatArray(32)
val currentOrientation = resources.configuration.orientation
val roi = Rect()
var onRoiChange: (() -> Unit)? = null
var onRoiChanged: (() -> Unit)? = null
private val dots = Dots(context)
private val invalidateRunnable: Runnable = Runnable {
marks = null
coordinatesLast = 0
invalidate()
}
private val roiPaint = context.getDashedBorderPaint()
private val dotPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
color = ContextCompat.getColor(context, R.color.dot)
style = Paint.Style.FILL
}
private val dotRadius: Float
private val handleBitmap = resources.getBitmapFromDrawable(
R.drawable.button_crop
)
@@ -47,7 +52,7 @@ class DetectorView : View {
private val fabHeight: Int
private val padding: Int
private var marks: List<Point>? = null
private var coordinatesLast = 0
private var handleGrabbed = false
private var handleActive = false
private var minY = 0
@@ -57,6 +62,7 @@ class DetectorView : View {
init {
val dp = context.resources.displayMetrics.density
dotRadius = 8f * dp
distToFull = (24f * dp).roundToInt()
val minMoveThreshold = (8f * dp).roundToInt()
minMoveThresholdSq = minMoveThreshold * minMoveThreshold
@@ -89,8 +95,8 @@ class DetectorView : View {
Point(-1, -1)
}
fun mark(points: List<Point>) {
marks = points
fun update(numberOfResultPoints: Int) {
coordinatesLast = numberOfResultPoints * 2
invalidate()
removeCallbacks(invalidateRunnable)
postDelayed(invalidateRunnable, 500)
@@ -228,7 +234,7 @@ class DetectorView : View {
height - handleYRadius - paddingBottom - fabHeight
)
if (handlePos.x == -2) {
setHandleToDefaultRoi();
setHandleToDefaultRoi()
}
if (handleActive) {
updateClipRect()
@@ -241,9 +247,7 @@ class DetectorView : View {
if (handleActive) {
drawClip(canvas)
}
marks?.let {
dots.draw(canvas, it)
}
drawDots(canvas)
if (prefs.showCropHandle) {
canvas.drawBitmap(
handleBitmap,
@@ -254,6 +258,18 @@ class DetectorView : View {
}
}
private fun drawDots(canvas: Canvas) {
var i = 0
while (i < coordinatesLast) {
canvas.drawCircle(
coordinates[i++],
coordinates[i++],
dotRadius,
dotPaint
)
}
}
private fun drawClip(canvas: Canvas) {
if (minDist < 1) {
return
@@ -11,44 +11,30 @@ class Zxing(possibleResultPoint: ResultPointCallback? = null) {
private val multiFormatReader = MultiFormatReader()
init {
val decodeFormats = EnumSet.noneOf(
BarcodeFormat::class.java
)
decodeFormats.addAll(
EnumSet.copyOf(
listOf(
BarcodeFormat.AZTEC,
BarcodeFormat.CODABAR,
BarcodeFormat.CODE_39,
BarcodeFormat.CODE_93,
BarcodeFormat.CODE_128,
BarcodeFormat.DATA_MATRIX,
BarcodeFormat.EAN_8,
BarcodeFormat.EAN_13,
BarcodeFormat.ITF,
BarcodeFormat.MAXICODE,
BarcodeFormat.PDF_417,
BarcodeFormat.QR_CODE,
BarcodeFormat.RSS_14,
BarcodeFormat.RSS_EXPANDED,
BarcodeFormat.UPC_A,
BarcodeFormat.UPC_E,
BarcodeFormat.UPC_EAN_EXTENSION
)
)
)
hints[DecodeHintType.POSSIBLE_FORMATS] = decodeFormats
possibleResultPoint?.let {
hints[DecodeHintType.NEED_RESULT_POINT_CALLBACK] = it
}
}
fun updateHints(tryHarder: Boolean) {
fun updateHints(tryHarder: Boolean, formats: Set<String>) {
if (tryHarder) {
hints[DecodeHintType.TRY_HARDER] = java.lang.Boolean.TRUE
} else {
hints.remove(DecodeHintType.TRY_HARDER)
}
setDecodeFormats(formats)
}
private fun setDecodeFormats(formats: Set<String>) {
val decodeFormats = EnumSet.noneOf(
BarcodeFormat::class.java
)
decodeFormats.addAll(
EnumSet.copyOf(
formats.map { BarcodeFormat.valueOf(it) }
)
)
hints[DecodeHintType.POSSIBLE_FORMATS] = decodeFormats
}
fun decode(
+24 -4
View File
@@ -38,7 +38,7 @@
android:layout_marginBottom="16dp"
android:gravity="end|top"/>
<TableLayout
android:id="@+id/meta"
android:id="@+id/data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/format"
@@ -46,6 +46,15 @@
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"/>
<TableLayout
android:id="@+id/meta"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/data"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp" />
<TextView
android:id="@+id/hex"
android:layout_width="match_parent"
@@ -56,9 +65,20 @@
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="16dp"
android:typeface="monospace"
android:textSize="12sp"
tools:text="54 65 73 74 20 51 52 20 Test QR\n43 6F 64 65 Code"/>
android:typeface="monospace"
tools:text="54 65 73 74 20 51 52 20 Test QR\n43 6F 64 65 Code" />
<TextView
android:id="@+id/links"
android:autoLink="web"
android:lineHeight="24sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/hex"
android:layout_marginHorizontal="16dp"
android:textSize="12sp"
android:typeface="monospace"
tools:text="@tools:sample/lorem/random" />
</RelativeLayout>
</de.markusfisch.android.binaryeye.widget.ConfinedScrollView>
<android.support.design.widget.CoordinatorLayout
@@ -69,6 +89,6 @@
style="@style/FAB"
android:id="@+id/open"
android:contentDescription="@string/open_url"
android:src="@drawable/ic_action_open"/>
android:src="@drawable/ic_action_open" />
</android.support.design.widget.CoordinatorLayout>
</FrameLayout>
+24
View File
@@ -44,6 +44,12 @@
<string name="switch_camera">ক্যামেরা পাল্টাও</string>
<string name="bulk_mode">ধারাবাহিকভাবে খুঁজো</string>
<string name="bulk_mode_summary">শুরুতে সবসময় ধারাবাহিকভাবে খুঁজো</string>
<string name="bulk_mode_delay">Delay between continuous scans</string>
<string name="quarter_second">A quarter second</string>
<string name="half_second">Half a second</string>
<string name="a_second">One second</string>
<string name="two_seconds">Two seconds</string>
<string name="five_seconds">Five seconds</string>
<string name="history">ইতিহাস</string>
<string name="preferences">পছন্দসমূহ</string>
<string name="scan_category">খুঁজো</string>
@@ -53,6 +59,7 @@
<string name="follow_system_settings">ব্যবস্থার পছন্দসমূহ অনুসরণ করো</string>
<string name="show_crop_handle">ছাটার সীমা দেখাও</string>
<string name="show_crop_handle_summary">পরিবর্তনযোগ্য জায়গায়ই শুধু খুঁজো।</string>
<string name="barcode_formats">Barcode formats</string>
<string name="zoom_by_swiping">ওপরে/নিচে টানো বড়ো করার জন্য</string>
<string name="zoom_by_swiping_summary">ক্যামেরার ছোটো-বড় নিয়ন্ত্রণের জন্য উপরে-নিচে টানো।</string>
<string name="auto_rotate">খাড়া ১ডি বারকোড সনাক্ত করো</string>
@@ -77,7 +84,14 @@
<string name="show_hex_dump_summary">পড়া তথ্যের ষড় সংকেত দেখাও</string>
<string name="close_automatically">অনুলিপি/ভাগ করার পরে পিছনে যাও</string>
<string name="close_automatically_summary">তথ্য অনুলিপি/ভাগ করার পরে স্বয়ংক্রিয়ভাবে পিছনে যাও।</string>
<string name="default_search_engine">Open unknown data in</string>
<string name="always_ask">Always ask</string>
<string name="open_with_url">অজানা ইউআরএল খুলো</string>
<string name="clear_network_suggestions">Clear network suggestions</string>
<string name="clear_network_suggestions_summary">Remove all of the network suggestions that were previously provided by this app.</string>
<string name="really_remove_all_networks">Really remove all networks?</string>
<string name="clear_network_suggestions_success">Network suggestions cleared</string>
<string name="clear_network_suggestions_nothing_to_remove">Nothing to remove</string>
<string name="send_category">অন্যকে পাঠাও</string>
<string name="send_scan_url">প্রতিটি পাঠোদ্ধার ইউআরএল-এ পাঠাও</string>
<string name="send_scan_type">প্রতি পাঠোদ্ধারের জন্য অনুরোধ</string>
@@ -133,4 +147,14 @@
<string name="shortcut_encode">বারকোড বানাও</string>
<string name="shortcut_preferences">পছন্দসমূহ</string>
<string name="background_request_failed">পটভূমির অনুরোধ ব্যর্থ</string>
<string name="entry_type">Type</string>
<string name="wifi_network">Wi-Fi network</string>
<string name="wifi_ssid">Name</string>
<string name="wifi_type">Authentication type</string>
<string name="wifi_password">Password</string>
<string name="wifi_hidden">Hidden network</string>
<string name="wifi_eap">EAP method</string>
<string name="wifi_anonymous_identity">Anonymous identity</string>
<string name="wifi_identity">Identity</string>
<string name="wifi_phase2">Phase 2 method</string>
</resources>
+24
View File
@@ -45,6 +45,12 @@
<string name="switch_camera">Přepnout kameru</string>
<string name="bulk_mode">Skenovat nepřetržitě</string>
<string name="bulk_mode_summary">Always start scanning continuously.</string>
<string name="bulk_mode_delay">Delay between continuous scans</string>
<string name="quarter_second">A quarter second</string>
<string name="half_second">Half a second</string>
<string name="a_second">One second</string>
<string name="two_seconds">Two seconds</string>
<string name="five_seconds">Five seconds</string>
<string name="history">Historie</string>
<string name="preferences">Nastavení</string>
<string name="scan_category">Skenování</string>
@@ -54,6 +60,7 @@
<string name="follow_system_settings">Řídit se nastavením systému</string>
<string name="show_crop_handle">Zobrazovat hrany výřezu</string>
<string name="show_crop_handle_summary">Omezí skenování na zvolenou oblast.</string>
<string name="barcode_formats">Barcode formats</string>
<string name="zoom_by_swiping">Potáhnutím nahoru/dolů přiblížit</string>
<string name="zoom_by_swiping_summary">Přetáhnutím nahoru nebo dolů se zvětší / zmenší úroveň přiblížení.</string>
<string name="auto_rotate">Rozpoznávat otočené 1D čárové kódy</string>
@@ -78,7 +85,14 @@
<string name="show_hex_dump_summary">Zobrazí hex dump naskenovaného obsahu.</string>
<string name="close_automatically">Vrátit se po zkopírování/sdílení</string>
<string name="close_automatically_summary">Po zkopírovaní či sdílení se automaticky vrátí na skenovací obrazovku.</string>
<string name="default_search_engine">Open unknown data in</string>
<string name="always_ask">Always ask</string>
<string name="open_with_url">Otevřít neznámá data pomocí URL</string>
<string name="clear_network_suggestions">Clear network suggestions</string>
<string name="clear_network_suggestions_summary">Remove all of the network suggestions that were previously provided by this app.</string>
<string name="really_remove_all_networks">Really remove all networks?</string>
<string name="clear_network_suggestions_success">Network suggestions cleared</string>
<string name="clear_network_suggestions_nothing_to_remove">Nothing to remove</string>
<string name="send_category">Přesměrování</string>
<string name="send_scan_url">Posílat každý sken na URL</string>
<string name="send_scan_type">Typ requestu pro každý sken</string>
@@ -134,4 +148,14 @@
<string name="shortcut_encode">Vytvořit čárový kód</string>
<string name="shortcut_preferences">Nastavení</string>
<string name="background_request_failed">Požadavek na pozadí selhal</string>
<string name="entry_type">Type</string>
<string name="wifi_network">Wi-Fi network</string>
<string name="wifi_ssid">Name</string>
<string name="wifi_type">Authentication type</string>
<string name="wifi_password">Password</string>
<string name="wifi_hidden">Hidden network</string>
<string name="wifi_eap">EAP method</string>
<string name="wifi_anonymous_identity">Anonymous identity</string>
<string name="wifi_identity">Identity</string>
<string name="wifi_phase2">Phase 2 method</string>
</resources>
+24
View File
@@ -44,6 +44,12 @@
<string name="switch_camera">Kamera wechseln</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>
<string name="quarter_second">Eine Viertelsekunde</string>
<string name="half_second">Eine halbe Sekunde</string>
<string name="a_second">Eine Sekunde</string>
<string name="two_seconds">Zwei Sekunden</string>
<string name="five_seconds">Fünf Sekunden</string>
<string name="history">Gespeicherte Codes</string>
<string name="preferences">Einstellungen</string>
<string name="scan_category">Scannen</string>
@@ -53,6 +59,7 @@
<string name="follow_system_settings">Systemeinstellung übernehmen</string>
<string name="show_crop_handle">Ausschnitt verkleinern anzeigen</string>
<string name="show_crop_handle_summary">Scannen auf einen anpassbaren Bereich einschränken.</string>
<string name="barcode_formats">Barcode Formate</string>
<string name="zoom_by_swiping">Geste für Kamerazoom</string>
<string name="zoom_by_swiping_summary">Im Kamerabildschirm nach oben oder unten streichen, um den Kamerazoom zu steuern.</string>
<string name="auto_rotate">Vertikale Erkennung</string>
@@ -77,7 +84,14 @@
<string name="show_hex_dump_summary">Zeigt einen Hexdump des eingelesenen Inhalts an.</string>
<string name="close_automatically">Automatisch zurückkehren</string>
<string name="close_automatically_summary">Nach dem Kopieren/Teilen automatisch zum Scanbildschirm zurückkehren.</string>
<string name="default_search_engine">Unbekannte Daten öffnen mit</string>
<string name="always_ask">Immer fragen</string>
<string name="open_with_url">URL zum Öffnen unbekannter Daten</string>
<string name="clear_network_suggestions">WiFi Netzwerkvorschläge entfernen</string>
<string name="clear_network_suggestions_summary">Betrifft alle WiFi Netzwerke, die zuvor mit dieser App bereitgestellt wurden.</string>
<string name="really_remove_all_networks">Alle Netzwerkvorschläge entfernen?</string>
<string name="clear_network_suggestions_success">Netzwerkvorschläge entfernt</string>
<string name="clear_network_suggestions_nothing_to_remove">Nichts zu entfernen</string>
<string name="send_category">Weiterleitung</string>
<string name="send_scan_url">URL die für jeden Scan aufgerufen werden soll</string>
<string name="send_scan_type">Typ des Requests für jeden Scan</string>
@@ -133,4 +147,14 @@
<string name="shortcut_encode">Barcode erstellen</string>
<string name="shortcut_preferences">Einstellungen</string>
<string name="background_request_failed">Hintergrundanfrage fehlgeschlagen</string>
<string name="entry_type">Typ</string>
<string name="wifi_network">Wi-Fi Netzwerk</string>
<string name="wifi_ssid">Name</string>
<string name="wifi_type">Authentifizierungstyp</string>
<string name="wifi_password">Passwort</string>
<string name="wifi_hidden">Verstecktes Netzwerk</string>
<string name="wifi_eap">EAP Methode</string>
<string name="wifi_anonymous_identity">Anonyme Identität</string>
<string name="wifi_identity">Identität</string>
<string name="wifi_phase2">Phase 2 Methode</string>
</resources>
+28 -4
View File
@@ -38,12 +38,18 @@
<string name="input_content_here">Introduzca el contenido aquí</string>
<string name="encode">CODIFICAR</string>
<string name="error_no_content">Contenido no disponible</string>
<string name="error_encoding_barcode">No pudo generar el código de barras</string>
<string name="error_encoding_barcode">No se pudo generar el código de barras</string>
<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="bulk_mode">Escanear constantemente</string>
<string name="bulk_mode_summary">Always start scanning continuously.</string>
<string name="bulk_mode_summary">Siempre iniciar escaneando constantemente</string>
<string name="bulk_mode_delay">Delay between continuous scans</string>
<string name="quarter_second">A quarter second</string>
<string name="half_second">Half a second</string>
<string name="a_second">One second</string>
<string name="two_seconds">Two seconds</string>
<string name="five_seconds">Five seconds</string>
<string name="history">Historial</string>
<string name="preferences">Configuración</string>
<string name="scan_category">Escanear</string>
@@ -53,14 +59,15 @@
<string name="follow_system_settings">Seguir los ajustes del sistema</string>
<string name="show_crop_handle">Mostrar el delimitador de recorte</string>
<string name="show_crop_handle_summary">Restringir el escaneo a una región personalizable.</string>
<string name="barcode_formats">Formatos de códigos de barras</string>
<string name="zoom_by_swiping">Deslice hacia arriba/abajo para ampliar</string>
<string name="zoom_by_swiping_summary">Deslice su dedo hacia arriba o abajo en la pantalla para controlar el aumento de la cámara.</string>
<string name="auto_rotate">Reconocer los códigos de barras 1D verticalmente</string>
<string name="auto_rotate_summary">Rotar automáticamente el marco de la cámara para reconocer los códigos de barras 1D verticales. Dependiendo del dispositivo, esto puede afectar al rendimiento.</string>
<string name="try_harder">Optimizar la precisión del lector</string>
<string name="try_harder_summary">Active esta opción para códigos muy difíciles de leer. Esto afectará al rendimiento.</string>
<string name="show_toast_in_bulk_mode">Show data in continuous mode</string>
<string name="show_toast_in_bulk_mode_summary">Briefly show the scanned data when scanning continuously.</string>
<string name="show_toast_in_bulk_mode">Mostrar datos en el modo constante</string>
<string name="show_toast_in_bulk_mode_summary">Mostrar brevemente los datos escaneados al escanear constantemente. </string>
<string name="vibrate">Vibrar al detectar</string>
<string name="vibrate_summary">Active esta opción si desea que su dispositivo vibre cuando se reconozca un código.</string>
<string name="use_history">Guardar historial de escaneo</string>
@@ -77,7 +84,14 @@
<string name="show_hex_dump_summary">Mostrar un dump hexadecimal del contenido escaneado.</string>
<string name="close_automatically">Retroceder luego de Copiar/Compartir</string>
<string name="close_automatically_summary">Regresar automáticamente a la pantalla de escaneo luego de copiar o compartir el contenido leído.</string>
<string name="default_search_engine">Abrir datos desconocidos en</string>
<string name="always_ask">Preguntar siempre</string>
<string name="open_with_url">Abrir datos desconocidos con la URL</string>
<string name="clear_network_suggestions">Borrar las sugerencias de red</string>
<string name="clear_network_suggestions_summary">Elimina todas las sugerencias de red previamente proporcionadas por esta aplicación.</string>
<string name="really_remove_all_networks">¿Realmente eliminar todas las redes?</string>
<string name="clear_network_suggestions_success">Sugerencias de red eliminadas</string>
<string name="clear_network_suggestions_nothing_to_remove">Nada que eliminar</string>
<string name="send_category">Reenvío</string>
<string name="send_scan_url">Enviar todo escaneo a la URL</string>
<string name="send_scan_type">Tipo de solicitud para cada escaneo</string>
@@ -133,4 +147,14 @@
<string name="shortcut_encode">Crear un código</string>
<string name="shortcut_preferences">Ajustes</string>
<string name="background_request_failed">Solicitud de fondo fallida</string>
<string name="entry_type">Type</string>
<string name="wifi_network">Wi-Fi network</string>
<string name="wifi_ssid">Name</string>
<string name="wifi_type">Authentication type</string>
<string name="wifi_password">Password</string>
<string name="wifi_hidden">Hidden network</string>
<string name="wifi_eap">EAP method</string>
<string name="wifi_anonymous_identity">Anonymous identity</string>
<string name="wifi_identity">Identity</string>
<string name="wifi_phase2">Phase 2 method</string>
</resources>
+24
View File
@@ -44,6 +44,12 @@
<string name="switch_camera">Changer de camera</string>
<string name="bulk_mode">Scan continu</string>
<string name="bulk_mode_summary">Always start scanning continuously.</string>
<string name="bulk_mode_delay">Delay between continuous scans</string>
<string name="quarter_second">A quarter second</string>
<string name="half_second">Half a second</string>
<string name="a_second">One second</string>
<string name="two_seconds">Two seconds</string>
<string name="five_seconds">Five seconds</string>
<string name="history">Historique</string>
<string name="preferences">Préférences</string>
<string name="scan_category">Scan</string>
@@ -53,6 +59,7 @@
<string name="follow_system_settings">Suivre les réglages du système</string>
<string name="show_crop_handle">Afficher le bouton de rognage</string>
<string name="show_crop_handle_summary">Restreindre le scan à une région personnalisée.</string>
<string name="barcode_formats">Barcode formats</string>
<string name="zoom_by_swiping">Balayage haut/bas pour zoomer</string>
<string name="zoom_by_swiping_summary">Balayez vers le haut ou vers le bas dans l’écran de la caméra pour contrôler le zoom de la caméra.</string>
<string name="auto_rotate">Reconnaître les codes-barres 1D verticaux</string>
@@ -77,7 +84,14 @@
<string name="show_hex_dump_summary">Affiche un dump hexadécimal du contenu scanné.</string>
<string name="close_automatically">Revenir après une copie/partage</string>
<string name="close_automatically_summary">Revient automatiquement sur l\'écran de scan après avoir copié ou partagé le contenu lu.</string>
<string name="default_search_engine">Open unknown data in</string>
<string name="always_ask">Always ask</string>
<string name="open_with_url">Ouvrir des données inconnues avec lURL</string>
<string name="clear_network_suggestions">Clear network suggestions</string>
<string name="clear_network_suggestions_summary">Remove all of the network suggestions that were previously provided by this app.</string>
<string name="really_remove_all_networks">Really remove all networks?</string>
<string name="clear_network_suggestions_success">Network suggestions cleared</string>
<string name="clear_network_suggestions_nothing_to_remove">Nothing to remove</string>
<string name="send_category">Transfert</string>
<string name="send_scan_url">Envoyer chaque scan vers une URL</string>
<string name="send_scan_type">Type de requête pour chaque scan</string>
@@ -133,5 +147,15 @@
<string name="shortcut_encode">Créer un code-barres</string>
<string name="shortcut_preferences">Réglages</string>
<string name="background_request_failed">Échec de la requête d\'arrière-plan</string>
<string name="entry_type">Type</string>
<string name="wifi_network">Wi-Fi network</string>
<string name="wifi_ssid">Name</string>
<string name="wifi_type">Authentication type</string>
<string name="wifi_password">Password</string>
<string name="wifi_hidden">Hidden network</string>
<string name="wifi_eap">EAP method</string>
<string name="wifi_anonymous_identity">Anonymous identity</string>
<string name="wifi_identity">Identity</string>
<string name="wifi_phase2">Phase 2 method</string>
</resources>
+27 -3
View File
@@ -44,6 +44,12 @@
<string name="switch_camera">Kamera átkapcsolása</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>
<string name="quarter_second">Negyed másodperc</string>
<string name="half_second">Fél másodperc</string>
<string name="a_second">Egy másodperc</string>
<string name="two_seconds">Két másodperc</string>
<string name="five_seconds">Öt másodperc</string>
<string name="history">Előzmények</string>
<string name="preferences">Beállítások</string>
<string name="scan_category">Beolvasás</string>
@@ -53,6 +59,7 @@
<string name="follow_system_settings">Rendszerbeállítások követése</string>
<string name="show_crop_handle">Levágási korlátozó megjelenítése</string>
<string name="show_crop_handle_summary">Beolvasás korlátozása egy személyre szabható területre.</string>
<string name="barcode_formats">Vonalkód formátumok</string>
<string name="zoom_by_swiping">Kamera nagyítása fel/le pöccintéssel</string>
<string name="zoom_by_swiping_summary">Pöccintsen fel vagy le a kamera képernyőjén a kamera nagyításának vezérléséhez.</string>
<string name="auto_rotate">1D vonalkódok felismerése függőlegesen</string>
@@ -77,7 +84,14 @@
<string name="show_hex_dump_summary">A beolvasott tartalom hexakiírásának megjelenítése.</string>
<string name="close_automatically">Ugrás vissza másolás vagy megosztás után</string>
<string name="close_automatically_summary">Automatikus visszatérés a beolvasási képernyőre a beolvasott tartalom másolása vagy megosztása után.</string>
<string name="default_search_engine">Ismeretlen adatok megnyitása ebben</string>
<string name="always_ask">Mindig kérdezzen</string>
<string name="open_with_url">Ismeretlen adat megnyitása URL-lel</string>
<string name="clear_network_suggestions">Hálózati javaslatok törlése</string>
<string name="clear_network_suggestions_summary">Az alkalmazás által korábban biztosított összes hálózati javaslat eltávolítása.</string>
<string name="really_remove_all_networks">Valóban eltávolítja az összes hálózatot?</string>
<string name="clear_network_suggestions_success">Hálózati javaslatok törölve</string>
<string name="clear_network_suggestions_nothing_to_remove">Nincs mit eltávolítani</string>
<string name="send_category">Továbbítás</string>
<string name="send_scan_url">Összes beolvasás küldése egy URL-re</string>
<string name="send_scan_type">Kérés típusa az egyes beolvasásoknál</string>
@@ -103,9 +117,9 @@
<string name="file_name">Fájlnév</string>
<string name="error_saving_file">Nem lehet elmenteni a fájlt</string>
<string name="error_file_exists">A fájl már létezik</string>
<string name="connect_to_wifi">Kapcsolódás WiFi-hez</string>
<string name="wifi_config_failed">Nem sikerült beállítani a WiFi-t</string>
<string name="wifi_added">WiFi hozzáadva</string>
<string name="connect_to_wifi">Kapcsolódás Wi-Fi-hez</string>
<string name="wifi_config_failed">Nem sikerült beállítani a Wi-Fi-t</string>
<string name="wifi_added">Wi-Fi hozzáadva</string>
<string name="sms_send">SMS küldése</string>
<string name="sms_error">Nem sikerült elküldeni az SMS-t</string>
<string name="tel_dial">Szám tárcsázása</string>
@@ -133,4 +147,14 @@
<string name="shortcut_encode">Vonalkód létrehozása</string>
<string name="shortcut_preferences">Beállítások</string>
<string name="background_request_failed">A háttérkérés sikertelen</string>
<string name="entry_type">Típus</string>
<string name="wifi_network">Wi-Fi hálózat</string>
<string name="wifi_ssid">Név</string>
<string name="wifi_type">Hitelesítés típusa</string>
<string name="wifi_password">Jelszó</string>
<string name="wifi_hidden">Rejtett hálózat</string>
<string name="wifi_eap">EAP módszer</string>
<string name="wifi_anonymous_identity">Névtelen személyazonosság</string>
<string name="wifi_identity">Személyazonosság</string>
<string name="wifi_phase2">Phase 2 módszer</string>
</resources>
+24
View File
@@ -43,6 +43,12 @@
<string name="switch_camera">Ganti kamera</string>
<string name="bulk_mode">Pindai tanpa henti</string>
<string name="bulk_mode_summary">Always start scanning continuously.</string>
<string name="bulk_mode_delay">Delay between continuous scans</string>
<string name="quarter_second">A quarter second</string>
<string name="half_second">Half a second</string>
<string name="a_second">One second</string>
<string name="two_seconds">Two seconds</string>
<string name="five_seconds">Five seconds</string>
<string name="history">Riwayat</string>
<string name="preferences">Preferensi</string>
<string name="scan_category">Pemindaian</string>
@@ -52,6 +58,7 @@
<string name="follow_system_settings">Ikuti pengaturan sistem</string>
<string name="show_crop_handle">Tampilkan pembatas pemotongan</string>
<string name="show_crop_handle_summary">Batasi pemindaian ke batas area tertentu.</string>
<string name="barcode_formats">Barcode formats</string>
<string name="zoom_by_swiping">Geser ke atas/bawah untuk memperbesar</string>
<string name="zoom_by_swiping_summary">Geser layar kamera ke atas atau ke bawah untuk mengontrol perbesaran gambar.</string>
<string name="auto_rotate">Kenali barcode vertikal 1D</string>
@@ -76,7 +83,14 @@
<string name="show_hex_dump_summary">Tampilkan hex dump dari konten hasil pemindaian.</string>
<string name="close_automatically">Go back after Copy/Share</string>
<string name="close_automatically_summary">Automatically return to the scan screen after copying or sharing the read contents.</string>
<string name="default_search_engine">Open unknown data in</string>
<string name="always_ask">Always ask</string>
<string name="open_with_url">Buka data tak dikenal dengan URL</string>
<string name="clear_network_suggestions">Clear network suggestions</string>
<string name="clear_network_suggestions_summary">Remove all of the network suggestions that were previously provided by this app.</string>
<string name="really_remove_all_networks">Really remove all networks?</string>
<string name="clear_network_suggestions_success">Network suggestions cleared</string>
<string name="clear_network_suggestions_nothing_to_remove">Nothing to remove</string>
<string name="send_category">Penerusan</string>
<string name="send_scan_url">Kirim setiap pindaian ke URL</string>
<string name="send_scan_type">Tipe permintaan untuk setiap pindaian</string>
@@ -132,4 +146,14 @@
<string name="shortcut_encode">Buat barcode</string>
<string name="shortcut_preferences">Pengaturan</string>
<string name="background_request_failed">Permintaan latar belakang gagal</string>
<string name="entry_type">Type</string>
<string name="wifi_network">Wi-Fi network</string>
<string name="wifi_ssid">Name</string>
<string name="wifi_type">Authentication type</string>
<string name="wifi_password">Password</string>
<string name="wifi_hidden">Hidden network</string>
<string name="wifi_eap">EAP method</string>
<string name="wifi_anonymous_identity">Anonymous identity</string>
<string name="wifi_identity">Identity</string>
<string name="wifi_phase2">Phase 2 method</string>
</resources>
+24
View File
@@ -44,6 +44,12 @@
<string name="switch_camera">Cambia fotocamera</string>
<string name="bulk_mode">Scansione continua</string>
<string name="bulk_mode_summary">Always start scanning continuously.</string>
<string name="bulk_mode_delay">Delay between continuous scans</string>
<string name="quarter_second">A quarter second</string>
<string name="half_second">Half a second</string>
<string name="a_second">One second</string>
<string name="two_seconds">Two seconds</string>
<string name="five_seconds">Five seconds</string>
<string name="history">Cronologia</string>
<string name="preferences">Preferenze</string>
<string name="scan_category">Scansione</string>
@@ -53,6 +59,7 @@
<string name="follow_system_settings">Follow system settings</string>
<string name="show_crop_handle">Mostra riquadro di limite</string>
<string name="show_crop_handle_summary">Limita la scansione ad una regione personalizzata.</string>
<string name="barcode_formats">Barcode formats</string>
<string name="zoom_by_swiping">Zoom fotocamera scorrendo su/giù</string>
<string name="zoom_by_swiping_summary">Scorri su o giù per controllare lo zoom della fotocamera.</string>
<string name="auto_rotate">Riconosci i codici a barre 1D verticalmente</string>
@@ -77,7 +84,14 @@
<string name="show_hex_dump_summary">Mostra un dump esadecimale dei contenuti scansionati.</string>
<string name="close_automatically">Go back after Copy/Share</string>
<string name="close_automatically_summary">Automatically return to the scan screen after copying or sharing the read contents.</string>
<string name="default_search_engine">Open unknown data in</string>
<string name="always_ask">Always ask</string>
<string name="open_with_url">Apri dati sconosciuti con URL</string>
<string name="clear_network_suggestions">Clear network suggestions</string>
<string name="clear_network_suggestions_summary">Remove all of the network suggestions that were previously provided by this app.</string>
<string name="really_remove_all_networks">Really remove all networks?</string>
<string name="clear_network_suggestions_success">Network suggestions cleared</string>
<string name="clear_network_suggestions_nothing_to_remove">Nothing to remove</string>
<string name="send_category">Inoltro</string>
<string name="send_scan_url">Invia ogni scansione ad un URL</string>
<string name="send_scan_type">Tipo di richiesta per ogni scansione</string>
@@ -133,4 +147,14 @@
<string name="shortcut_encode">Crea un codice a barre</string>
<string name="shortcut_preferences">Impostazioni</string>
<string name="background_request_failed">Richiesta in secondo piano fallita</string>
<string name="entry_type">Type</string>
<string name="wifi_network">Wi-Fi network</string>
<string name="wifi_ssid">Name</string>
<string name="wifi_type">Authentication type</string>
<string name="wifi_password">Password</string>
<string name="wifi_hidden">Hidden network</string>
<string name="wifi_eap">EAP method</string>
<string name="wifi_anonymous_identity">Anonymous identity</string>
<string name="wifi_identity">Identity</string>
<string name="wifi_phase2">Phase 2 method</string>
</resources>
+27 -3
View File
@@ -43,7 +43,13 @@
<string name="info">ソースコード</string>
<string name="switch_camera">カメラを切り替え</string>
<string name="bulk_mode">まとめてスキャンする</string>
<string name="bulk_mode_summary">Always start scanning continuously.</string>
<string name="bulk_mode_summary">常に連続してスキャンを行います。</string>
<string name="bulk_mode_delay">Delay between continuous scans</string>
<string name="quarter_second">A quarter second</string>
<string name="half_second">Half a second</string>
<string name="a_second">One second</string>
<string name="two_seconds">Two seconds</string>
<string name="five_seconds">Five seconds</string>
<string name="history">履歴</string>
<string name="preferences">設定</string>
<string name="scan_category">スキャン</string>
@@ -53,14 +59,15 @@
<string name="follow_system_settings">システム設定に従う</string>
<string name="show_crop_handle">トリミングツールを表示</string>
<string name="show_crop_handle_summary">スキャンする範囲を制限するトリミングツールを表示します。</string>
<string name="barcode_formats">バーコード形式</string>
<string name="zoom_by_swiping">スワイプでズーム調節</string>
<string name="zoom_by_swiping_summary">上下にスワイプすることで、カメラのズームを調節できるようにします。</string>
<string name="auto_rotate">縦向きの一次元バーコードを読み取る</string>
<string name="auto_rotate_summary">自動的に画像を回転させ、縦方向の一次元バーコードを読み取れるようにします。端末によっては処理速度に影響が出る場合があります。</string>
<string name="try_harder">より正確な読み込みを試みる</string>
<string name="try_harder_summary">バーコードをうまく読み取れない場合はこのオプションを有効にしてください。処理速度に影響が出る場合があります。</string>
<string name="show_toast_in_bulk_mode">Show data in continuous mode</string>
<string name="show_toast_in_bulk_mode_summary">Briefly show the scanned data when scanning continuously.</string>
<string name="show_toast_in_bulk_mode">連続読み取りモードでデータを表示する</string>
<string name="show_toast_in_bulk_mode_summary">「まとめてスキャンする」オプションが有効の際、スキャンしたデータを簡潔に表示するようにします。</string>
<string name="vibrate">認識時に振動する</string>
<string name="vibrate_summary">バーコードが認識されたときにバイブレーションを行います。</string>
<string name="use_history">スキャン履歴を保存する</string>
@@ -77,7 +84,14 @@
<string name="show_hex_dump_summary">スキャンされたコンテンツの16進数データを確認できるようにします。</string>
<string name="close_automatically">コピー/共有後に戻る</string>
<string name="close_automatically_summary">コンテンツをコピー/共有した後、自動的にスキャン画面に戻るようにします。</string>
<string name="default_search_engine">未知のデータの表示方法</string>
<string name="always_ask">常に尋ねる</string>
<string name="open_with_url">未知のデータを次のURLから開く</string>
<string name="clear_network_suggestions">ネットワークの提案を消去</string>
<string name="clear_network_suggestions_summary">このアプリのネットワークの提案をすべて削除します。</string>
<string name="really_remove_all_networks">ネットワークの提案を消去してもよろしいですか?</string>
<string name="clear_network_suggestions_success">ネットワークの提案は消去されました</string>
<string name="clear_network_suggestions_nothing_to_remove">消去するものがありませんでした</string>
<string name="send_category">転送</string>
<string name="send_scan_url">スキャンしたデータを次のURLから開く</string>
<string name="send_scan_type">リクエスト方式</string>
@@ -133,4 +147,14 @@
<string name="shortcut_encode">バーコードを作成</string>
<string name="shortcut_preferences">設定</string>
<string name="background_request_failed">バックグラウンド要求に失敗しました</string>
<string name="entry_type">Type</string>
<string name="wifi_network">Wi-Fi network</string>
<string name="wifi_ssid">Name</string>
<string name="wifi_type">Authentication type</string>
<string name="wifi_password">Password</string>
<string name="wifi_hidden">Hidden network</string>
<string name="wifi_eap">EAP method</string>
<string name="wifi_anonymous_identity">Anonymous identity</string>
<string name="wifi_identity">Identity</string>
<string name="wifi_phase2">Phase 2 method</string>
</resources>
+24
View File
@@ -46,6 +46,12 @@
<string name="switch_camera">კამერის გადართვა</string>
<string name="bulk_mode">სკანირება უწყვეტად</string>
<string name="bulk_mode_summary">Always start scanning continuously.</string>
<string name="bulk_mode_delay">Delay between continuous scans</string>
<string name="quarter_second">A quarter second</string>
<string name="half_second">Half a second</string>
<string name="a_second">One second</string>
<string name="two_seconds">Two seconds</string>
<string name="five_seconds">Five seconds</string>
<string name="history">ისტორია</string>
<string name="preferences">პარამეტრები</string>
<string name="scan_category">სკანირება</string>
@@ -55,6 +61,7 @@
<string name="follow_system_settings">Follow system settings</string>
<string name="show_crop_handle">სკანირების არეალის ჩვენება</string>
<string name="show_crop_handle_summary">სკანირების შეზღუდვა შერჩეული არეალით.</string>
<string name="barcode_formats">Barcode formats</string>
<string name="zoom_by_swiping">მასშტაბირება თითის მოძრაობით მაღლა/დაბლა</string>
<string name="zoom_by_swiping_summary">გაატარეთ თითი მაღლა ან დაბლა კამერის მასშტაბირების სამართავად.</string>
<string name="auto_rotate">1D ვერტიკალური შტრიხ-კოდების ამოცნობა</string>
@@ -79,7 +86,14 @@
<string name="show_hex_dump_summary">სკანირებული შტრიხ-კოდის კონტენტის თექვსმეტობითი dump-ის ჩვენება.</string>
<string name="close_automatically">Go back after Copy/Share</string>
<string name="close_automatically_summary">Automatically return to the scan screen after copying or sharing the read contents.</string>
<string name="default_search_engine">Open unknown data in</string>
<string name="always_ask">Always ask</string>
<string name="open_with_url">უცნობი მონაცემების ამ ბმულის საშუალებით გახსნა</string>
<string name="clear_network_suggestions">Clear network suggestions</string>
<string name="clear_network_suggestions_summary">Remove all of the network suggestions that were previously provided by this app.</string>
<string name="really_remove_all_networks">Really remove all networks?</string>
<string name="clear_network_suggestions_success">Network suggestions cleared</string>
<string name="clear_network_suggestions_nothing_to_remove">Nothing to remove</string>
<string name="send_category">გადაგზავნა</string>
<string name="send_scan_url">ყოველი სკანირებული შტრიხ-კოდის ბმულის საშუალებით გახსნა</string>
<string name="send_scan_type">მოთხოვნის ტიპი ყოველი სკანირებული შტრიხ-კოდისთვის</string>
@@ -135,4 +149,14 @@
<string name="shortcut_encode">შტრიხ-კოდის შექმნა</string>
<string name="shortcut_preferences">პარამეტრები</string>
<string name="background_request_failed">ფონური მოთხოვნა ვერ მოხერხდა</string>
<string name="entry_type">Type</string>
<string name="wifi_network">Wi-Fi network</string>
<string name="wifi_ssid">Name</string>
<string name="wifi_type">Authentication type</string>
<string name="wifi_password">Password</string>
<string name="wifi_hidden">Hidden network</string>
<string name="wifi_eap">EAP method</string>
<string name="wifi_anonymous_identity">Anonymous identity</string>
<string name="wifi_identity">Identity</string>
<string name="wifi_phase2">Phase 2 method</string>
</resources>
+130 -106
View File
@@ -1,136 +1,160 @@
<resources>
<string name="no_camera_no_fun">Deze app kan niet werken zonder cameratoegang. Tot ziens.</string>
<string name="camera_error">Kan camera niet openen; probeer het opnieuw.</string>
<string name="camera_error">De camera kan niet worden geopend. Probeer het opnieuw.</string>
<string name="scan_code">Scan een code</string>
<string name="compose_barcode">Scan een barcode</string>
<string name="decode_barcode">Barcode decoderen</string>
<string name="content">Inhoud</string>
<string name="binary_data">(binaire data)</string>
<plurals name="barcode_info">
<item quantity="one">%2$d character, %1$s</item>
<item quantity="other">%2$d characters, %1$s</item>
<item quantity="one">%2$d teken, %1$s</item>
<item quantity="other">%2$d tekens, %1$s</item>
</plurals>
<string name="error_correction_level">Error correction level</string>
<string name="error_correction_level_l" formatted="false">Low (~7&#37; correction)</string>
<string name="error_correction_level_m" formatted="false">Medium (~15&#37; correction)</string>
<string name="error_correction_level_q" formatted="false">Quartile (~25&#37; correction)</string>
<string name="error_correction_level_h" formatted="false">High (~30&#37; correction)</string>
<string name="issue_number">Issue number</string>
<string name="orientation">Orientation</string>
<string name="other_meta_data">Metadata</string>
<string name="pdf417_extra_metadata">PDF417 metadata</string>
<string name="possible_country">Possible country of manufacture</string>
<string name="suggested_price">Suggested price</string>
<string name="upc_ean_extension">UPC EAN extension</string>
<string name="toggle_flash">Flitslicht schakelen</string>
<string name="error_correction_level">Foutcorrectieniveau</string>
<string name="error_correction_level_l" formatted="false">Laag (~7&#37; correction)</string>
<string name="error_correction_level_m" formatted="false">Gemiddeld (~15&#37; correction)</string>
<string name="error_correction_level_q" formatted="false">Hoger (~25&#37; correction)</string>
<string name="error_correction_level_h" formatted="false">Hoog (~30&#37; correction)</string>
<string name="issue_number">Getal toekennen</string>
<string name="orientation">Oriëntatie</string>
<string name="other_meta_data">Metagegevens</string>
<string name="pdf417_extra_metadata">PDF417-metagegevens</string>
<string name="possible_country">Mogelijk land van herkomst</string>
<string name="suggested_price">Adviesprijs</string>
<string name="upc_ean_extension">UPC EAN-extensie</string>
<string name="toggle_flash">Flits aan/uit</string>
<string name="share">Delen</string>
<string name="share_as">Share as?</string>
<string name="share_as">Delen als?</string>
<string name="copy_to_clipboard">Kopiëren naar klembord</string>
<string name="copied_to_clipboard">Kopieer de inhoud naar het klembord</string>
<string name="copy_password">Copy password into clipboard</string>
<string name="copied_password_to_clipboard">Password copied to clipboard</string>
<string name="copied_to_clipboard">De inhoud is gekopieerd naar het klembord</string>
<string name="copy_password">Wachtwoord kopiëren naar klembord</string>
<string name="copied_password_to_clipboard">Het wachtwoord is gekopieerd naar het klembord</string>
<string name="open_url">URL openen</string>
<string name="cannot_resolve_action">Er is geen app aangetroffen die dit kan openen</string>
<string name="pick_search_engine">Een zoekmachine kiezen</string>
<string name="pick_search_engine">Zoekmachine kiezen</string>
<string name="format">Formaat</string>
<string name="size">Grootte, in pixels</string>
<string name="width_by_height">%1$d×%2$d</string>
<string name="input_content_here">Voer hier de inhoud in</string>
<string name="encode">CODEREN</string>
<string name="error_no_content">Inhoud ontbreekt</string>
<string name="error_encoding_barcode">Barcode kan niet gegenereerd worden</string>
<string name="error_no_content">De inhoud ontbreekt</string>
<string name="error_encoding_barcode">De barcode kan niet worden gegenereerd</string>
<string name="view_barcode">Barcode bekijken</string>
<string name="info">Informatie</string>
<string name="switch_camera">Camera wisselen</string>
<string name="bulk_mode">Scan continuously</string>
<string name="bulk_mode_summary">Always start scanning continuously.</string>
<string name="switch_camera">Andere camera</string>
<string name="bulk_mode">Continu scannen</string>
<string name="bulk_mode_summary">Blijf continu scannen.</string>
<string name="bulk_mode_delay">Delay between continuous scans</string>
<string name="quarter_second">A quarter second</string>
<string name="half_second">Half a second</string>
<string name="a_second">One second</string>
<string name="two_seconds">Two seconds</string>
<string name="five_seconds">Five seconds</string>
<string name="history">Geschiedenis</string>
<string name="preferences">Voorkeuren</string>
<string name="scan_category">Scan</string>
<string name="content_category">Content</string>
<string name="locale_category">Language</string>
<string name="custom_locale">Custom language</string>
<string name="follow_system_settings">Follow system settings</string>
<string name="show_crop_handle">Show cropping limiter</string>
<string name="show_crop_handle_summary">Restrict scanning to a customizable region.</string>
<string name="zoom_by_swiping">Zoom camera by swiping up/down</string>
<string name="zoom_by_swiping_summary">Swipe up or down in camera screen to control the camera zoom.</string>
<string name="auto_rotate">Recognize 1D barcodes vertically</string>
<string name="auto_rotate_summary">Automatically rotate the camera frame to recognize vertical 1D barcodes. Depending on the device, this may affect performance.</string>
<string name="try_harder">Optimize reader for accuracy, not speed</string>
<string name="try_harder_summary">Enable this option for very hard to read codes. Will affect performance.</string>
<string name="show_toast_in_bulk_mode">Show data in continuous mode</string>
<string name="show_toast_in_bulk_mode_summary">Briefly show the scanned data when scanning continuously.</string>
<string name="vibrate">Vibrate on detection</string>
<string name="vibrate_summary">Enable this if you want your device to vibrate when a code is recognized.</string>
<string name="use_history">Scan-geschiedenis behouden</string>
<string name="use_history_summary">Save recognized codes on your device.</string>
<string name="ignore_consecutive_duplicates">Do not save consecutive duplicates</string>
<string name="ignore_consecutive_duplicates_summary">Do not save consecutive duplicates in the scan history.</string>
<string name="open_immediately">Skip inspection and open contents immediately</string>
<string name="open_immediately_summary">Skip inspection and open contents immediately. May open harmful content if enabled.</string>
<string name="copy_immediately">Automatically copy contents into clipboard</string>
<string name="copy_immediately_summary">Automatically copy scanned contents into clipboard. Please note that other apps may snoop on your clipboard in the background.</string>
<string name="show_meta_data">Show metadata</string>
<string name="show_meta_data_summary">Show additional data about the scanned barcoded.</string>
<string name="show_hex_dump">Show hex dump</string>
<string name="show_hex_dump_summary">Show a hex dump of the scanned contents.</string>
<string name="close_automatically">Go back after Copy/Share</string>
<string name="close_automatically_summary">Automatically return to the scan screen after copying or sharing the read contents.</string>
<string name="really_remove_scan">Scan echt verwijderen?</string>
<string name="really_remove_all_scans">Echt alle scans verwijderen?</string>
<string name="really_remove_selected_scans">Really remove selected scans?</string>
<string name="preferences">Instellingen</string>
<string name="scan_category">Scannen</string>
<string name="content_category">Inhoud</string>
<string name="locale_category">Taal</string>
<string name="custom_locale">Andere taal</string>
<string name="follow_system_settings">Systeeminstellingen gebruiken</string>
<string name="show_crop_handle">Bijsnijdhulpmiddel tonen</string>
<string name="show_crop_handle_summary">Beperk scannen tot een aanpasbaar gebied.</string>
<string name="barcode_formats">Barcode formats</string>
<string name="zoom_by_swiping">Camera zoomen door omhoog/omlaag te vegen</string>
<string name="zoom_by_swiping_summary">Veeg omhoog of omlaag op het camerascherm om in en uit te zoomen.</string>
<string name="auto_rotate">1D-barcodes verticaal scannen</string>
<string name="auto_rotate_summary">Draai de camera automatisch 1D-barcodes verticaal te scannen. Let op: dit kan van invloed zijn op de prestaties.</string>
<string name="try_harder">Scanner optimaliseren voor juistheid i.p.v. snelheid</string>
<string name="try_harder_summary">Schakel deze optie in voor moeilijk afleesbare codes. Let op: de prestaties leiden hieronder.</string>
<string name="show_toast_in_bulk_mode">Data tonen in continumodus</string>
<string name="show_toast_in_bulk_mode_summary">Toon de gescande data in continumodus.</string>
<string name="vibrate">Trillen na herkennen</string>
<string name="vibrate_summary">Schakel deze optie in als je wilt dat je apparaat trilt na het herkennen van een barcode.</string>
<string name="use_history">Scangeschiedenis bewaren</string>
<string name="use_history_summary">Bewaar herkende codes op je apparaat.</string>
<string name="ignore_consecutive_duplicates">Opeenvolgende duplicaten niet bewaren</string>
<string name="ignore_consecutive_duplicates_summary">Bewaar opeenvolgende duplicaten niet in de scangeschiedenis.</string>
<string name="open_immediately">Inspectie overslaan en inhoud direct tonen</string>
<string name="open_immediately_summary">Sla de inspectie over en open de inhoud direct. Let op: sommige inhoud kan schadelijk zijn.</string>
<string name="copy_immediately">Inhoud automatisch kopiëren naar klembord</string>
<string name="copy_immediately_summary">Kopieer de gescande inhoud automatisch naar het klembord. Let op: andere apps kunnen mogelijk meelezen op de achtergrond.</string>
<string name="show_meta_data">Metagegevens tonen</string>
<string name="show_meta_data_summary">Toon aanvullende gegevens over de gescande barcode.</string>
<string name="show_hex_dump">Hexdump tonen</string>
<string name="show_hex_dump_summary">Toon een hexdump van de gescande inhoud.</string>
<string name="close_automatically">Terugkeren na kopiëren/delen</string>
<string name="close_automatically_summary">Keer automatisch terug naar naar het scanscherm na het kopiëren/delen van een item.</string>
<string name="really_remove_scan">Weet je zeker dat je de scan wilt verwijderen?</string>
<string name="really_remove_all_scans">Weet je zeker dat je de scans wilt verwijderen?</string>
<string name="really_remove_selected_scans">Weet je zeker dat je de selectie wilt verwijderen?</string>
<string name="clear_history">Geschiedenis wissen</string>
<string name="copy_scan">Copy scan</string>
<string name="edit_scan">Edit label</string>
<string name="remove_scan">Remove scan</string>
<string name="enter_name">Enter a name to describe the scan</string>
<string name="enter_name_hint">Name of the scan</string>
<string name="no_barcode_found">Geen barcode gevonden</string>
<string name="copy_scan">Scan kopiëren</string>
<string name="edit_scan">Label aanpassen</string>
<string name="remove_scan">Scan verwijderen</string>
<string name="enter_name">Geef de scan een naam</string>
<string name="enter_name_hint">Naam</string>
<string name="no_barcode_found">Geen barcode aangetroffen</string>
<string name="separator_line_break">Nieuwe regel</string>
<string name="separator_ruler">Horizontale streep</string>
<string name="save_as_file_name">Als bestand opslaan?</string>
<string name="file_name">Naam van het bestand</string>
<string name="error_file_exists">Bestand bestaat al</string>
<string name="connect_to_wifi">Met WiFi verbinden</string>
<string name="wifi_config_failed">Kon WiFi niet configureren</string>
<string name="wifi_added">WiFi toegevoegd</string>
<string name="save_as_file_name">Opslaan als bestand?</string>
<string name="file_name">Bestandsnaam</string>
<string name="error_file_exists">Het bestand bestaat al</string>
<string name="connect_to_wifi">Verbinden met wifi-netwerk</string>
<string name="wifi_config_failed">Het wifi-netwerk kan niet worden ingesteld</string>
<string name="wifi_added">Het wifi-netwerk is toegevoegd</string>
<string name="sms_send">SMS versturen</string>
<string name="sms_error">Kon SMS niet versturen</string>
<string name="sms_error">De sms kan niet worden verstuurd</string>
<string name="tel_dial">Nummer bellen</string>
<string name="tel_error">Kon nummer niet bellen</string>
<string name="mail_send">Mail versturen</string>
<string name="mail_error">Kon mail niet versturen</string>
<string name="vcard_add">Aan contacten toevoegen</string>
<string name="vcard_failed">Kon niet aan contacten toevoegen</string>
<string name="vevent_add">Aan kalender toevoegen</string>
<string name="tel_error">Het nummer kan niet worden gebeld</string>
<string name="mail_send">E-mail versturen</string>
<string name="mail_error">De e-mail kan niet worden verstuurd</string>
<string name="vcard_add">Toevoegen aan contactpersoon</string>
<string name="vcard_failed">Het toevoegen is mislukt</string>
<string name="vevent_add">Toevoegen aan kalender</string>
<string name="otpauth_add">2FA toevoegen</string>
<string name="search_web">Het net doorzoeken</string>
<string name="search_scan">Search scan</string>
<string name="export_to_file">Naar bestand exporteren</string>
<string name="export_as">Export as?</string>
<string name="export_csv_comma">CSV file with commas</string>
<string name="export_csv_semicolon">CSV file with semicolons</string>
<string name="export_json">JSON file</string>
<string name="export_database">SQLite database</string>
<string name="error_saving_file">Kon bestand niet opslaan</string>
<string name="open_with_url">Niet herkende data met URL openen</string>
<string name="send_category">Forwarding</string>
<string name="send_scan_url">Send every scan to URL</string>
<string name="send_scan_type">Type of request for every scan</string>
<string name="send_type_get_add_content">GET and simply add content</string>
<string name="send_type_get_query_string">GET with compelete query string</string>
<string name="search_web">Zoeken op internet</string>
<string name="search_scan">Scan zoeken</string>
<string name="export_to_file">Exporteren naar bestand</string>
<string name="export_as">Exporteren als?</string>
<string name="export_csv_comma">Kommagescheiden csv-bestand</string>
<string name="export_csv_semicolon">Puntkommagescheiden csv-bestand</string>
<string name="export_json">JSON-bestand</string>
<string name="export_database">SQLite-databank</string>
<string name="error_saving_file">Het bestand kan niet worden opgeslagen</string>
<string name="default_search_engine">Onbekende data openen in</string>
<string name="always_ask">Always ask</string>
<string name="open_with_url">Niet-herkende data met url openen</string>
<string name="clear_network_suggestions">Netwerksuggesties wissen</string>
<string name="clear_network_suggestions_summary">Wis alle eerder getoonde netwerksuggesties.</string>
<string name="really_remove_all_networks">Weet je zeker dat je alle netwerken wilt verwijderen?</string>
<string name="clear_network_suggestions_success">De netwersuggesties zijn gewist</string>
<string name="clear_network_suggestions_nothing_to_remove">Er valt niks te wissen</string>
<string name="send_category">Doorsturen</string>
<string name="send_scan_url">Elke scan doorsturen naar url</string>
<string name="send_scan_type">Soort verzoek van elke scan</string>
<string name="send_type_get_add_content">GET met toegevoegde inhoud</string>
<string name="send_type_get_query_string">GET met volledige opvraging</string>
<string name="send_type_post_form">POST application/x-www-form-urlencoded</string>
<string name="send_type_post_json">POST application/json</string>
<string name="test_url">Test URL</string>
<string name="pick_list_separator">Hoe de lijstonderdelen te separeren?</string>
<string name="saved_in_downloads">In downloads opgeslagen</string>
<string name="vevent_failed">Kon niet aan kalender toevoegen</string>
<string name="rotate_image_cw">Rotate image clockwise</string>
<string name="pick_file">Pick image file</string>
<string name="pick_code_to_scan">Pick code to scan</string>
<string name="shortcut_decode">Scan a barcode</string>
<string name="shortcut_encode">Create a barcode</string>
<string name="shortcut_preferences">Settings</string>
<string name="background_request_failed">Background request failed</string>
<string name="test_url">URL testen</string>
<string name="pick_list_separator">Hoe moeten lijstonderdelen worden gescheiden?</string>
<string name="saved_in_downloads">Opgeslagen in downloadmap</string>
<string name="vevent_failed">Toevoegen mislukt</string>
<string name="rotate_image_cw">Afbeelding rechtsom draaien</string>
<string name="pick_file">Kies een afbeeldingsbestand</string>
<string name="pick_code_to_scan">Kies de te scannen code</string>
<string name="shortcut_decode">Barcode scannen</string>
<string name="shortcut_encode">Barcode genereren</string>
<string name="shortcut_preferences">Instellingen</string>
<string name="background_request_failed">Het achtergrondverzoek is mislukt</string>
<string name="entry_type">Type</string>
<string name="wifi_network">Wi-Fi network</string>
<string name="wifi_ssid">Name</string>
<string name="wifi_type">Authentication type</string>
<string name="wifi_password">Password</string>
<string name="wifi_hidden">Hidden network</string>
<string name="wifi_eap">EAP method</string>
<string name="wifi_anonymous_identity">Anonymous identity</string>
<string name="wifi_identity">Identity</string>
<string name="wifi_phase2">Phase 2 method</string>
</resources>
+24
View File
@@ -64,6 +64,12 @@
<string name="switch_camera">Przełącz aparat</string>
<string name="bulk_mode">Scan continuously</string>
<string name="bulk_mode_summary">Always start scanning continuously.</string>
<string name="bulk_mode_delay">Delay between continuous scans</string>
<string name="quarter_second">A quarter second</string>
<string name="half_second">Half a second</string>
<string name="a_second">One second</string>
<string name="two_seconds">Two seconds</string>
<string name="five_seconds">Five seconds</string>
<string name="toggle_flash">Przełącz lampę błyskową</string>
<string name="wifi_added">Wi-Fi dodane</string>
<string name="zoom_by_swiping">Przybliżaj kamerę, przesuwając w górę/dół</string>
@@ -86,12 +92,20 @@
<string name="copy_immediately_summary">Automatically copy scanned contents into clipboard. Please note that other apps may snoop on your clipboard in the background.</string>
<string name="show_crop_handle">Pokazuj ogranicznik przycinania</string>
<string name="show_crop_handle_summary">Restrict scanning to a customizable region.</string>
<string name="barcode_formats">Barcode formats</string>
<string name="search_web">Szukaj w sieci</string>
<string name="search_scan">Szukaj skanu</string>
<string name="export_database">Eksportuj do bazy danych SQLite</string>
<string name="ignore_consecutive_duplicates">Nie zapisuj kolejnych duplikatów</string>
<string name="ignore_consecutive_duplicates_summary">Do not save consecutive duplicates in the scan history.</string>
<string name="default_search_engine">Open unknown data in</string>
<string name="always_ask">Always ask</string>
<string name="open_with_url">Otwieraj nieznane dane za pomocą adresu URL</string>
<string name="clear_network_suggestions">Clear network suggestions</string>
<string name="clear_network_suggestions_summary">Remove all of the network suggestions that were previously provided by this app.</string>
<string name="really_remove_all_networks">Really remove all networks?</string>
<string name="clear_network_suggestions_success">Network suggestions cleared</string>
<string name="clear_network_suggestions_nothing_to_remove">Nothing to remove</string>
<string name="send_category">Forwarding</string>
<string name="send_scan_url">Send every scan to URL</string>
<string name="send_scan_type">Type of request for every scan</string>
@@ -129,4 +143,14 @@
<string name="save_as_file_name">Jak zapisać plik w pobranych?</string>
<string name="issue_number">Numer wydania</string>
<string name="background_request_failed">Background request failed</string>
<string name="entry_type">Type</string>
<string name="wifi_network">Wi-Fi network</string>
<string name="wifi_ssid">Name</string>
<string name="wifi_type">Authentication type</string>
<string name="wifi_password">Password</string>
<string name="wifi_hidden">Hidden network</string>
<string name="wifi_eap">EAP method</string>
<string name="wifi_anonymous_identity">Anonymous identity</string>
<string name="wifi_identity">Identity</string>
<string name="wifi_phase2">Phase 2 method</string>
</resources>
+120 -96
View File
@@ -1,8 +1,8 @@
<resources>
<string name="no_camera_no_fun">Esse aplicativo não faz sentido de uso sem acesso para a câmera. Adeus.</string>
<string name="camera_error">Sem acesso a câmera, por favor tente novamente</string>
<string name="scan_code">Escaneie o código de barras</string>
<string name="compose_barcode">Compor código de barras</string>
<string name="no_camera_no_fun">Não faz nenhum sentido usar este aplicativo sem acesso à câmera. Tchau.</string>
<string name="camera_error">Não foi possível acessar a câmera, por favor tente novamente</string>
<string name="scan_code">Escaneie código</string>
<string name="compose_barcode">Criar código</string>
<string name="decode_barcode">Decodificar código de barras</string>
<string name="content">Conteúdo</string>
<string name="binary_data">(binários)</string>
@@ -10,98 +10,112 @@
<item quantity="one">%2$d caractere, %1$s</item>
<item quantity="other">%2$d caracteres, %1$s</item>
</plurals>
<string name="error_correction_level">Error correction level</string>
<string name="error_correction_level_l" formatted="false">Low (~7&#37; correction)</string>
<string name="error_correction_level_m" formatted="false">Medium (~15&#37; correction)</string>
<string name="error_correction_level_q" formatted="false">Quartile (~25&#37; correction)</string>
<string name="error_correction_level_h" formatted="false">High (~30&#37; correction)</string>
<string name="issue_number">Issue number</string>
<string name="orientation">Orientation</string>
<string name="other_meta_data">Metadata</string>
<string name="pdf417_extra_metadata">PDF417 metadata</string>
<string name="possible_country">Possible country of manufacture</string>
<string name="suggested_price">Suggested price</string>
<string name="upc_ean_extension">UPC EAN extension</string>
<string name="error_correction_level">Nível de correção de erros</string>
<string name="error_correction_level_l" formatted="false">Baixo (~7&#37; correção)</string>
<string name="error_correction_level_m" formatted="false">Médio (~15&#37; correção)</string>
<string name="error_correction_level_q" formatted="false">Quartil (~25&#37; correção)</string>
<string name="error_correction_level_h" formatted="false">Alto (~30&#37; correção)</string>
<string name="issue_number">Número de emissão</string>
<string name="orientation">Orientação</string>
<string name="other_meta_data">Metadados</string>
<string name="pdf417_extra_metadata">Metadados PDF417</string>
<string name="possible_country">Possível país de fabricação</string>
<string name="suggested_price">Preço sugerido</string>
<string name="upc_ean_extension">Extensão UPC EAN</string>
<string name="toggle_flash">Ativar lanterna</string>
<string name="share">Compartilhar</string>
<string name="share_as">Share as?</string>
<string name="copy_to_clipboard">Copiar para área de transferência</string>
<string name="copied_to_clipboard">Colocar na área de transferência</string>
<string name="copy_password">Copy password into clipboard</string>
<string name="copied_password_to_clipboard">Password copied to clipboard</string>
<string name="open_url">Abrir url</string>
<string name="share_as">Compartilhar como?</string>
<string name="copy_to_clipboard">Copiar ao Clipboard</string>
<string name="copied_to_clipboard">Copiado ao Clipboard</string>
<string name="copy_password">Copiar senha ao Clipboard</string>
<string name="copied_password_to_clipboard">Senha copiada ao Clipboard</string>
<string name="open_url">Abrir URL</string>
<string name="cannot_resolve_action">Nenhuma aplicativo pode abrir isso</string>
<string name="pick_search_engine">Escolha um mecanismo de busca</string>
<string name="format">Formatar</string>
<string name="size">Tamanho em pixels</string>
<string name="pick_search_engine">Escolha um site de busca</string>
<string name="format">Formato</string>
<string name="size">Tamanho em píxeis</string>
<string name="width_by_height">%1$d×%2$d</string>
<string name="input_content_here">Insira o conteúdo aqui</string>
<string name="input_content_here">Digite um conteúdo aqui</string>
<string name="encode">CODIFICAR</string>
<string name="error_no_content">Conteúdo não disponível</string>
<string name="error_no_content">Conteúdo indisponível</string>
<string name="error_encoding_barcode">Não foi possível gerar o código de barras</string>
<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="bulk_mode">Scan continuously</string>
<string name="bulk_mode_summary">Always start scanning continuously.</string>
<string name="switch_camera">Alterar câmera</string>
<string name="bulk_mode">Escanear continuamente</string>
<string name="bulk_mode_summary">Sempre comece em modo contínuo.</string>
<string name="bulk_mode_delay">Atrasar em escaneamentos contínuos</string>
<string name="quarter_second">Um quarto de segundo</string>
<string name="half_second">Meio segundo</string>
<string name="a_second">Um segundo</string>
<string name="two_seconds">Dois segundos</string>
<string name="five_seconds">Cinco segundos</string>
<string name="history">Histórico</string>
<string name="preferences">Preferências</string>
<string name="scan_category">Scan</string>
<string name="content_category">Content</string>
<string name="locale_category">Language</string>
<string name="custom_locale">Custom language</string>
<string name="follow_system_settings">Follow system settings</string>
<string name="show_crop_handle">Show cropping limiter</string>
<string name="show_crop_handle_summary">Restrict scanning to a customizable region.</string>
<string name="zoom_by_swiping">Zoom camera by swiping up/down</string>
<string name="zoom_by_swiping_summary">Swipe up or down in camera screen to control the camera zoom.</string>
<string name="auto_rotate">Recognize 1D barcodes vertically</string>
<string name="auto_rotate_summary">Automatically rotate the camera frame to recognize vertical 1D barcodes. Depending on the device, this may affect performance.</string>
<string name="try_harder">Optimize reader for accuracy, not speed</string>
<string name="try_harder_summary">Enable this option for very hard to read codes. Will affect performance.</string>
<string name="show_toast_in_bulk_mode">Show data in continuous mode</string>
<string name="show_toast_in_bulk_mode_summary">Briefly show the scanned data when scanning continuously.</string>
<string name="vibrate">Vibrate on detection</string>
<string name="vibrate_summary">Enable this if you want your device to vibrate when a code is recognized.</string>
<string name="use_history">Salvar histórico de escaneamento</string>
<string name="use_history_summary">Save recognized codes on your device.</string>
<string name="ignore_consecutive_duplicates">Do not save consecutive duplicates</string>
<string name="ignore_consecutive_duplicates_summary">Do not save consecutive duplicates in the scan history.</string>
<string name="open_immediately">Skip inspection and open contents immediately</string>
<string name="open_immediately_summary">Skip inspection and open contents immediately. May open harmful content if enabled.</string>
<string name="copy_immediately">Automatically copy contents into clipboard</string>
<string name="copy_immediately_summary">Automatically copy scanned contents into clipboard. Please note that other apps may snoop on your clipboard in the background.</string>
<string name="show_meta_data">Show metadata</string>
<string name="show_meta_data_summary">Show additional data about the scanned barcoded.</string>
<string name="show_hex_dump">Show hex dump</string>
<string name="show_hex_dump_summary">Show a hex dump of the scanned contents.</string>
<string name="close_automatically">Go back after Copy/Share</string>
<string name="close_automatically_summary">Automatically return to the scan screen after copying or sharing the read contents.</string>
<string name="scan_category">Escanear</string>
<string name="content_category">Conteúdo</string>
<string name="locale_category">Idioma</string>
<string name="custom_locale">Idioma personalizado</string>
<string name="follow_system_settings">Seguir configurações do sistema</string>
<string name="show_crop_handle">Mostrar limitador de corte</string>
<string name="show_crop_handle_summary">Restringir escaneamento a uma área personalizável.</string>
<string name="barcode_formats">Formatos de código de barras</string>
<string name="zoom_by_swiping">Deslize para baixo/cima para usar zoom</string>
<string name="zoom_by_swiping_summary">Deslize para baixo/cima na tela para ajustar zoom da câmera.</string>
<string name="auto_rotate">Reconhecer código de barras 1D vertical</string>
<string name="auto_rotate_summary">Girar automaticamente a posição da câmera para reconhecer código de barras 1D vertical. Dependendo do dispositivo, isto pode afetar o desempenho.</string>
<string name="try_harder">Otimizar o leitor para precisão, não velocidade</string>
<string name="try_harder_summary">Ative esta opção para códigos muito difíceis de ler. Isto afetará o desempenho.</string>
<string name="show_toast_in_bulk_mode">Mostrar dados em modo contínuo</string>
<string name="show_toast_in_bulk_mode_summary">Mostrar brevemente os dados escaneados durante escaneamento contínuo.</string>
<string name="vibrate">Vibrar na detecção</string>
<string name="vibrate_summary">Ative isto se quiser que seu dispositivo vibre quando um código for reconhecido.</string>
<string name="use_history">Salvar histórico de escaneamentos</string>
<string name="use_history_summary">Salve códigos reconhecidos em seu dispositivo.</string>
<string name="ignore_consecutive_duplicates">Ignorar duplicatas consecutivas</string>
<string name="ignore_consecutive_duplicates_summary">Não salvar duplicatas consecutivas no histórico de escaneamentos.</string>
<string name="open_immediately">Abrir conteúdo imediatamente</string>
<string name="open_immediately_summary">Pular a inspeção e abrir o conteúdo imediatamente. Pode abrir conteúdo nocivo, se ativado.</string>
<string name="copy_immediately">Copiar ao Clipboard</string>
<string name="copy_immediately_summary">Copiar automaticamente o conteúdo escaneado ao Clipboard. Observe que outros aplicativos podem examinar seu Clipboard em segundo plano.</string>
<string name="show_meta_data">Mostrar metadados</string>
<string name="show_meta_data_summary">Mostrar dados adicionais sobre o código de barras escaneado.</string>
<string name="show_hex_dump">Mostrar impressão hexadecimal</string>
<string name="show_hex_dump_summary">Mostrar uma impressão hexadecimal do conteúdo escaneado.</string>
<string name="close_automatically">Voltar depois de Copiar/Compartilhar</string>
<string name="close_automatically_summary">Voltar automaticamente à tela de digitalização após copiar ou compartilhar o conteúdo visualizado.</string>
<string name="default_search_engine">Abrir dados desconhecidos em</string>
<string name="always_ask">Sempre perguntar</string>
<string name="open_with_url">Abrir dados desconhecidos com URL</string>
<string name="send_category">Forwarding</string>
<string name="send_scan_url">Send every scan to URL</string>
<string name="send_scan_type">Type of request for every scan</string>
<string name="send_type_get_add_content">GET and simply add content</string>
<string name="send_type_get_query_string">GET with compelete query string</string>
<string name="clear_network_suggestions">Remover sugestões da rede</string>
<string name="clear_network_suggestions_summary">Remover todas as sugestões da rede que foram fornecidas anteriormente por este aplicativo.</string>
<string name="really_remove_all_networks">Realmente remover todas as redes?</string>
<string name="clear_network_suggestions_success">Sugestões da rede removidas</string>
<string name="clear_network_suggestions_nothing_to_remove">Nada para remover</string>
<string name="send_category">Encaminhar</string>
<string name="send_scan_url">Enviar cada escaneamento para URL</string>
<string name="send_scan_type">Tipo de pedido para cada escaneamento</string>
<string name="send_type_get_add_content">GET e simplesmente adicionar conteúdo</string>
<string name="send_type_get_query_string">GET com cadeia de consulta completa</string>
<string name="send_type_post_form">POST application/x-www-form-urlencoded</string>
<string name="send_type_post_json">POST application/json</string>
<string name="test_url">Test URL</string>
<string name="really_remove_scan">Realmente deseja remover o escaneamento?</string>
<string name="really_remove_all_scans">Realmente deseja remover todos escaneamentos?</string>
<string name="really_remove_selected_scans">Really remove selected scans?</string>
<string name="test_url">Testar URL</string>
<string name="really_remove_scan">Realmente quer remover o escaneamento?</string>
<string name="really_remove_all_scans">Realmente quer remover todos os escaneamentos?</string>
<string name="really_remove_selected_scans">Realmente remover escaneamentos selecionados?</string>
<string name="clear_history">Limpar histórico</string>
<string name="copy_scan">Copy scan</string>
<string name="edit_scan">Edit label</string>
<string name="remove_scan">Remove scan</string>
<string name="enter_name">Enter a name to describe the scan</string>
<string name="enter_name_hint">Name of the scan</string>
<string name="no_barcode_found">Código de barras não encontrado</string>
<string name="copy_scan">Copiar escaneamento</string>
<string name="edit_scan">Editar ID</string>
<string name="remove_scan">Remover escaneamento</string>
<string name="enter_name">Digite um nome para descrever o escaneamento</string>
<string name="enter_name_hint">Nome do escaneamento</string>
<string name="no_barcode_found">Nenhum código de barras encontrado</string>
<string name="pick_list_separator">Como separar itens da lista?</string>
<string name="separator_line_break">Quebra de linha</string>
<string name="separator_ruler">Régua</string>
<string name="save_as_file_name">Salvar como arquivo de imagem?</string>
<string name="save_as_file_name">Salvar arquivo em Downloads?</string>
<string name="file_name">Nome do arquivo</string>
<string name="error_saving_file">Arquivo não pode ser salvo</string>
<string name="error_saving_file">Não foi possível salvar o arquivo</string>
<string name="error_file_exists">Arquivo já existe</string>
<string name="connect_to_wifi">Conectar para o WiFi</string>
<string name="wifi_config_failed">Não foi possível configurar o WiFi</string>
@@ -113,24 +127,34 @@
<string name="mail_send">Enviar e-mail</string>
<string name="mail_error">Não foi possível enviar o e-mail</string>
<string name="vcard_add">Adicionar para os contatos</string>
<string name="vcard_failed">NNão foi possível adicionar para os contatos</string>
<string name="vcard_failed">Não foi possível adicionar para os contatos</string>
<string name="vevent_add">Adicionar ao calendário</string>
<string name="vevent_failed">Não foi possível adicionar ao calendário</string>
<string name="otpauth_add">Add 2FA</string>
<string name="search_web">Search the web</string>
<string name="search_scan">Search scan</string>
<string name="export_to_file">Export to file</string>
<string name="export_as">Export as?</string>
<string name="export_csv_comma">CSV file with commas</string>
<string name="export_csv_semicolon">CSV file with semicolons</string>
<string name="export_json">JSON file</string>
<string name="export_database">SQLite database</string>
<string name="saved_in_downloads">Saved in downloads</string>
<string name="rotate_image_cw">Rotate image clockwise</string>
<string name="pick_file">Pick image file</string>
<string name="pick_code_to_scan">Pick code to scan</string>
<string name="shortcut_decode">Scan a barcode</string>
<string name="shortcut_encode">Create a barcode</string>
<string name="shortcut_preferences">Settings</string>
<string name="background_request_failed">Background request failed</string>
<string name="otpauth_add">Adicionar 2FA</string>
<string name="search_web">Pesquisar na internet</string>
<string name="search_scan">Pesquisar em escaneamentos</string>
<string name="export_to_file">Exportar para arquivo</string>
<string name="export_as">Exportar como?</string>
<string name="export_csv_comma">Arquivo CSV com vírgulas</string>
<string name="export_csv_semicolon">Arquivo CSV com ponto-e-vírgula</string>
<string name="export_json">Arquivo JSON</string>
<string name="export_database">Base de dados SQLite</string>
<string name="saved_in_downloads">Salvo em Downloads</string>
<string name="rotate_image_cw">Girar a imagem no sentido horário</string>
<string name="pick_file">Escolha um arquivo de imagem</string>
<string name="pick_code_to_scan">Escolha o código para escanear</string>
<string name="shortcut_decode">Escanear um código de barras</string>
<string name="shortcut_encode">Criar um código</string>
<string name="shortcut_preferences">Configurações</string>
<string name="background_request_failed">A solicitação de segundo plano falhou</string>
<string name="entry_type">Tipo</string>
<string name="wifi_network">Rede Wi-Fi</string>
<string name="wifi_ssid">Nome</string>
<string name="wifi_type">Tipo de autenticação</string>
<string name="wifi_password">Senha</string>
<string name="wifi_hidden">Rede oculta</string>
<string name="wifi_eap">Método EAP</string>
<string name="wifi_anonymous_identity">Identidade anônima</string>
<string name="wifi_identity">Identidade</string>
<string name="wifi_phase2">Método Phase 2</string>
</resources>
+50 -26
View File
@@ -1,9 +1,9 @@
<resources>
<string name="no_camera_no_fun">Это приложение не имеет никакого смысла без доступа к камере</string>
<string name="camera_error">Невозможно получить доступ к камере, попробуйте ещё раз</string>
<string name="scan_code">Сканирование штрих-кода</string>
<string name="compose_barcode">Создание штрих-кода</string>
<string name="decode_barcode">Декодирование штрих-кода</string>
<string name="scan_code">Сканировать штрих-код</string>
<string name="compose_barcode">Создать штрих-код</string>
<string name="decode_barcode">Декодировать штрих-код</string>
<string name="content">Текст</string>
<string name="binary_data">(двоичные данные)</string>
<plurals name="barcode_info">
@@ -46,6 +46,12 @@
<string name="switch_camera">Переключить камеру</string>
<string name="bulk_mode">Непрерывное сканирование</string>
<string name="bulk_mode_summary">Всегда запускать непрерывное сканирование.</string>
<string name="bulk_mode_delay">Задержка непрерывного сканирования</string>
<string name="quarter_second">Четверть секунды</string>
<string name="half_second">Полсекунды</string>
<string name="a_second">Одну секунду</string>
<string name="two_seconds">Две секунды</string>
<string name="five_seconds">Пять секунд</string>
<string name="history">История</string>
<string name="preferences">Настройки</string>
<string name="scan_category">Сканирование</string>
@@ -55,42 +61,50 @@
<string name="follow_system_settings">Как в системе</string>
<string name="show_crop_handle">Показывать область сканирования</string>
<string name="show_crop_handle_summary">Ограничить сканирование изменяемой областью.</string>
<string name="barcode_formats">Форматы штрих-кодов</string>
<string name="zoom_by_swiping">Масштабировать жестом вверх/вниз</string>
<string name="zoom_by_swiping_summary">Проведите пальцем вверх или вниз для управления масштабированием камеры.</string>
<string name="auto_rotate">Распознавать 1D штрих-коды вертикально</string>
<string name="auto_rotate_summary">Автоматически поворачивать камеру для распознавания вертикальных 1D штрих-кодов. В зависимости от устройства, это может повлиять на производительность.</string>
<string name="try_harder">Оптимизировать считывание на точность, а не скорость</string>
<string name="try_harder">Приоритет точности считывания</string>
<string name="try_harder_summary">Включите эту настройку для штрих-кодов, которые очень сложно прочитать. Влияет на производительность.</string>
<string name="show_toast_in_bulk_mode">Показывать данные в непрерывном режиме</string>
<string name="show_toast_in_bulk_mode_summary">Кратко показывать отсканированные данные в режиме непрерывного сканирования.</string>
<string name="vibrate">Вибрировать при обнаружении</string>
<string name="vibrate_summary">Включите эту настройку если хотите, чтобы устройство вибрировало, кода штрих-код распознан.</string>
<string name="show_toast_in_bulk_mode_summary">Кратко показывать считанные данные в режиме непрерывного сканирования.</string>
<string name="vibrate">Вибрация при обнаружении</string>
<string name="vibrate_summary">Включите эту настройку, если хотите, чтобы устройство вибрировало после распознавания штрих-кода.</string>
<string name="use_history">Сохранять историю сканирования</string>
<string name="use_history_summary">Сохранять распознанные штрих-коды на устройстве.</string>
<string name="ignore_consecutive_duplicates">Не сохранять последовательные дубликаты</string>
<string name="ignore_consecutive_duplicates">Не хранить последовательные дубликаты</string>
<string name="ignore_consecutive_duplicates_summary">Не сохранять последовательные дубликаты в истории сканирования.</string>
<string name="open_immediately">Пропускать проверку и сразу открыть содержимое</string>
<string name="open_immediately">Сразу открывать содержимое</string>
<string name="open_immediately_summary">Пропускать проверку и сразу открыть содержимое. Может привести к открытию небезопасного содержимого.</string>
<string name="copy_immediately">Автоматически копировать содержимое в буфер обмена</string>
<string name="copy_immediately_summary">Автоматически копировать содержимое отсканированного штрих-кода в буфер обмена. Имейте в виду, что другие приложения могут иметь доступ к буферу обмена в фоне.</string>
<string name="copy_immediately">Автокопирование в буфер обмена</string>
<string name="copy_immediately_summary">Автоматически копировать содержимое считанного штрих-кода в буфер обмена. Имейте в виду, что другие приложения могут иметь доступ к буферу обмена в фоне.</string>
<string name="show_meta_data">Показывать метаданные</string>
<string name="show_meta_data_summary">Показывать дополнительную информацию об отсканированных штрих-кодах.</string>
<string name="show_meta_data_summary">Показывать дополнительную информацию о считанных штрих-кодах.</string>
<string name="show_hex_dump">Показывать шестнадцатеричный дамп</string>
<string name="show_hex_dump_summary">Показывать шестнадцатеричный дамп содержимого отсканированного штрих-кода.</string>
<string name="close_automatically">Возвращаться после копирования/обмена</string>
<string name="show_hex_dump_summary">Показывать шестнадцатеричный дамп содержимого считанного штрих-кода.</string>
<string name="close_automatically">Возврат после копирования/обмена</string>
<string name="close_automatically_summary">Автоматически возвращаться к экрану сканирования после копирования или передачу через функцию «Поделиться» считанного содержимого.</string>
<string name="open_with_url">Открывать неизвестные данные с помощью URL</string>
<string name="default_search_engine">Поиск неизвестных данных в</string>
<string name="always_ask">Всегда спрашивать</string>
<string name="open_with_url">Открывать неизвестные данные по URL</string>
<string name="clear_network_suggestions">Очистить сетевые предложения</string>
<string name="clear_network_suggestions_summary">Удалить все сетевые предложения, ранее предложенные этим приложением.</string>
<string name="really_remove_all_networks">Удалить все сетевые предложения?</string>
<string name="clear_network_suggestions_success">Сетевые предложения удалены</string>
<string name="clear_network_suggestions_nothing_to_remove">Нечего удалять</string>
<string name="send_category">Отправка</string>
<string name="send_scan_url">Отправлять каждый отсканированный штрих-код на URL</string>
<string name="send_scan_type">Тип запроса для каждого отсканированного штрих-кода</string>
<string name="send_scan_url">Отправлять сканированные штрих-коды на URL</string>
<string name="send_scan_type">Тип запроса для отправки штрих-кодов</string>
<string name="send_type_get_add_content">GET с добавлением содержимого</string>
<string name="send_type_get_query_string">GET с полной строкой параметров запроса</string>
<string name="send_type_post_form">POST application/x-www-form-urlencoded</string>
<string name="send_type_post_json">POST application/json</string>
<string name="test_url">Проверка URL</string>
<string name="really_remove_scan">Действительно удалить сканирование?</string>
<string name="really_remove_all_scans">Действительно удалить все сканирования?</string>
<string name="really_remove_selected_scans">Действительно удалить выбранные штрих-коды?</string>
<string name="really_remove_scan">Удалить сканирование?</string>
<string name="really_remove_all_scans">Удалить все сканирования?</string>
<string name="really_remove_selected_scans">Удалить выбранные штрих-коды?</string>
<string name="clear_history">Очистить историю</string>
<string name="copy_scan">Копировать</string>
<string name="edit_scan">Редактировать</string>
@@ -98,7 +112,7 @@
<string name="enter_name">Укажите название сканирования</string>
<string name="enter_name_hint">Название сканирования</string>
<string name="no_barcode_found">Штрих-код не найден</string>
<string name="pick_list_separator">Чем разделять элементы списка?</string>
<string name="pick_list_separator">Разделение элементов списка</string>
<string name="separator_line_break">Разрыв строки</string>
<string name="separator_ruler">Горизонтальная линия</string>
<string name="save_as_file_name">Сохранить файл как</string>
@@ -119,20 +133,30 @@
<string name="vevent_add">Добавить в календарь</string>
<string name="vevent_failed">Невозможно добавить в календарь</string>
<string name="otpauth_add">Добавить 2FA</string>
<string name="search_web">Искать в сети</string>
<string name="search_web">Поиск в сети</string>
<string name="search_scan">Поиск сканирования</string>
<string name="export_to_file">Экспортировать в файл</string>
<string name="export_as">Формат экспортируемого файла</string>
<string name="export_csv_comma">CSV (разделитель - запятая)</string>
<string name="export_csv_semicolon">CSV (разделитель - точка с запятой)</string>
<string name="export_as">Формат файла экспорта</string>
<string name="export_csv_comma">CSV (разделитель запятая)</string>
<string name="export_csv_semicolon">CSV (разделитель точка с запятой)</string>
<string name="export_json">JSON</string>
<string name="export_database">База данных SQLite</string>
<string name="saved_in_downloads">Сохранено в загрузках</string>
<string name="rotate_image_cw">Повернуть изображение по часовой стрелке</string>
<string name="pick_file">Выберите файл с изображением</string>
<string name="pick_file">Открыть файл с изображением</string>
<string name="pick_code_to_scan">Выберите штрих-код для сканирования</string>
<string name="shortcut_decode">Сканировать штрих-код</string>
<string name="shortcut_encode">Создать штрих-код</string>
<string name="shortcut_preferences">Настройки</string>
<string name="background_request_failed">Фоновый запрос не выполнен</string>
<string name="entry_type">Тип</string>
<string name="wifi_network">Сеть Wi-Fi</string>
<string name="wifi_ssid">Имя</string>
<string name="wifi_type">Метод аутентификации</string>
<string name="wifi_password">Пароль</string>
<string name="wifi_hidden">Скрытая сеть</string>
<string name="wifi_eap">Тип EAP</string>
<string name="wifi_anonymous_identity">Аноним</string>
<string name="wifi_identity">Пользователь</string>
<string name="wifi_phase2">Двухэтапный метод</string>
</resources>
+24
View File
@@ -44,6 +44,12 @@
<string name="switch_camera">Kamerayı değiştir</string>
<string name="bulk_mode">Sürekli tara</string>
<string name="bulk_mode_summary">Always start scanning continuously.</string>
<string name="bulk_mode_delay">Delay between continuous scans</string>
<string name="quarter_second">A quarter second</string>
<string name="half_second">Half a second</string>
<string name="a_second">One second</string>
<string name="two_seconds">Two seconds</string>
<string name="five_seconds">Five seconds</string>
<string name="history">Geçmiş</string>
<string name="preferences">Tercihler</string>
<string name="scan_category">Tarama</string>
@@ -53,6 +59,7 @@
<string name="follow_system_settings">Sistem ayarlarını izle</string>
<string name="show_crop_handle">Kırpım kısıtlayıcıyı göster</string>
<string name="show_crop_handle_summary">Taramayı özelleştirilebilir bölgeyle sınırla.</string>
<string name="barcode_formats">Barcode formats</string>
<string name="zoom_by_swiping">Aşağı/yukarı kaydırarak yakınlaştır</string>
<string name="zoom_by_swiping_summary">Kamera yakınlığını denetlemek için kamera ekranında aşağı veya yukarı kaydır.</string>
<string name="auto_rotate">Yatay 1B barkodları tanı</string>
@@ -77,7 +84,14 @@
<string name="show_hex_dump_summary">Taranan içeriklerin hex yığınını göster.</string>
<string name="close_automatically">Go back after Copy/Share</string>
<string name="close_automatically_summary">Automatically return to the scan screen after copying or sharing the read contents.</string>
<string name="default_search_engine">Open unknown data in</string>
<string name="always_ask">Always ask</string>
<string name="open_with_url">URL\'si olan bilinmeyen veriyi aç</string>
<string name="clear_network_suggestions">Clear network suggestions</string>
<string name="clear_network_suggestions_summary">Remove all of the network suggestions that were previously provided by this app.</string>
<string name="really_remove_all_networks">Really remove all networks?</string>
<string name="clear_network_suggestions_success">Network suggestions cleared</string>
<string name="clear_network_suggestions_nothing_to_remove">Nothing to remove</string>
<string name="send_category">Yönlendirme</string>
<string name="send_scan_url">Her taramayı URL\'ye gönder</string>
<string name="send_scan_type">Her tarama için isteğin türü</string>
@@ -133,4 +147,14 @@
<string name="shortcut_encode">Barkod yarat</string>
<string name="shortcut_preferences">Ayarlar</string>
<string name="background_request_failed">Arka plan isteği başarısız</string>
<string name="entry_type">Type</string>
<string name="wifi_network">Wi-Fi network</string>
<string name="wifi_ssid">Name</string>
<string name="wifi_type">Authentication type</string>
<string name="wifi_password">Password</string>
<string name="wifi_hidden">Hidden network</string>
<string name="wifi_eap">EAP method</string>
<string name="wifi_anonymous_identity">Anonymous identity</string>
<string name="wifi_identity">Identity</string>
<string name="wifi_phase2">Phase 2 method</string>
</resources>
+38 -14
View File
@@ -12,10 +12,10 @@
<item quantity="many">%2$d символів, %1$s</item>
</plurals>
<string name="error_correction_level">Рівень виправлення помилок</string>
<string name="error_correction_level_l" formatted="false">Low (~7&#37; correction)</string>
<string name="error_correction_level_m" formatted="false">Medium (~15&#37; correction)</string>
<string name="error_correction_level_q" formatted="false">Quartile (~25&#37; correction)</string>
<string name="error_correction_level_h" formatted="false">High (~30&#37; correction)</string>
<string name="error_correction_level_l" formatted="false">Низький (~7&#37; виправлення)</string>
<string name="error_correction_level_m" formatted="false">Середній (~15&#37; виправлення)</string>
<string name="error_correction_level_q" formatted="false">Квартиль (~25&#37; виправлення)</string>
<string name="error_correction_level_h" formatted="false">Високий (~30&#37; виправлення)</string>
<string name="issue_number">Номер випуску</string>
<string name="orientation">Орієнтація</string>
<string name="other_meta_data">Метадані</string>
@@ -25,7 +25,7 @@
<string name="upc_ean_extension">Розширення UPC EAN</string>
<string name="toggle_flash">Увімкнути спалах</string>
<string name="share">Поділитися</string>
<string name="share_as">Share as?</string>
<string name="share_as">Поділитися як?</string>
<string name="copy_to_clipboard">Копіювати у буфер обміну</string>
<string name="copied_to_clipboard">Скопійовано у буфер обміну</string>
<string name="copy_password">Копіювати пароль у буфер обміну</string>
@@ -44,24 +44,31 @@
<string name="info">Інформація</string>
<string name="switch_camera">Переключити камеру</string>
<string name="bulk_mode">Сканувати безперервно</string>
<string name="bulk_mode_summary">Always start scanning continuously.</string>
<string name="bulk_mode_summary">Завжди починати безперервне сканування.</string>
<string name="bulk_mode_delay">Затримка між безперервним скануванням</string>
<string name="quarter_second">Чверть секунди</string>
<string name="half_second">Півсекунди</string>
<string name="a_second">Одна секунда</string>
<string name="two_seconds">Дві секунди</string>
<string name="five_seconds">П\'ять секунд</string>
<string name="history">Історія</string>
<string name="preferences">Налаштування</string>
<string name="scan_category">Сканування</string>
<string name="content_category">Вміст</string>
<string name="locale_category">Language</string>
<string name="custom_locale">Custom language</string>
<string name="follow_system_settings">Follow system settings</string>
<string name="locale_category">Мова</string>
<string name="custom_locale">Вибрати мову</string>
<string name="follow_system_settings">Дотримуватись системних налаштувань</string>
<string name="show_crop_handle">Обмежити область сканування</string>
<string name="show_crop_handle_summary">Обмежити сканування до налаштованої області.</string>
<string name="barcode_formats">Формати штрих-коду</string>
<string name="zoom_by_swiping">Проведіть пальцем вгору/вниз, для масштабування</string>
<string name="zoom_by_swiping_summary">Проведіть пальцем вгору або вниз по екрану камери, щоб керувати масштабуванням камери.</string>
<string name="auto_rotate">Розпізнавати вертикальні 1D штрихкоди</string>
<string name="auto_rotate_summary">Автоматично повертати кадр камери, щоб розпізнати вертикальні 1D штрих-коди. Залежно від пристрою, це може вплинути на продуктивність.</string>
<string name="try_harder">Оптимізувати зчитувач для точності</string>
<string name="try_harder_summary">Увімкніть цю опцію для дуже важких для зчитування кодів. Це вплине на продуктивність.</string>
<string name="show_toast_in_bulk_mode">Show data in continuous mode</string>
<string name="show_toast_in_bulk_mode_summary">Briefly show the scanned data when scanning continuously.</string>
<string name="show_toast_in_bulk_mode">Показувати дані в безперервному режимі</string>
<string name="show_toast_in_bulk_mode_summary">Коротко показати відскановані дані під час безперервного сканування.</string>
<string name="vibrate">Вібрувати при виявленні</string>
<string name="vibrate_summary">Увімкніть це, якщо хочете, щоб пристрій вібрував, коли код розпізнано.</string>
<string name="use_history">Зберігати історію сканування</string>
@@ -76,9 +83,16 @@
<string name="show_meta_data_summary">Показувати додаткові дані про відскановані штрих-коди.</string>
<string name="show_hex_dump">Показувати шістнадцятковий дамп</string>
<string name="show_hex_dump_summary">Показувати шістнадцятковий дамп відсканованого вмісту.</string>
<string name="close_automatically">Go back after Copy/Share</string>
<string name="close_automatically_summary">Automatically return to the scan screen after copying or sharing the read contents.</string>
<string name="close_automatically">Повернутися після копіювання/поширення</string>
<string name="close_automatically_summary">Автоматично повернутися на екран сканування після копіювання або поширення прочитаного вмісту.</string>
<string name="default_search_engine">Відкривати невідомі дані в</string>
<string name="always_ask">Завжди запитувати</string>
<string name="open_with_url">Відкривати невідомі дані за допомогою URL</string>
<string name="clear_network_suggestions">Очистити мережеві пропозиції</string>
<string name="clear_network_suggestions_summary">Видалити усі мережеві пропозиції, які раніше надавала ця програма.</string>
<string name="really_remove_all_networks">Ви впевнені, що хочете видалити всі мережі?</string>
<string name="clear_network_suggestions_success">Мережеві пропозиції очищено</string>
<string name="clear_network_suggestions_nothing_to_remove">Нічого видаляти</string>
<string name="send_category">Пересилання</string>
<string name="send_scan_url">Надсилати кожне сканування на URL</string>
<string name="send_scan_type">Тип запиту для кожного сканування</string>
@@ -86,7 +100,7 @@
<string name="send_type_get_query_string">GET з повним рядком параметрів запиту</string>
<string name="send_type_post_form">POST application/x-www-form-urlencoded</string>
<string name="send_type_post_json">POST application/json</string>
<string name="test_url">Test URL</string>
<string name="test_url">Перевірити URL</string>
<string name="really_remove_scan">Дійсно видалити сканування?</string>
<string name="really_remove_all_scans">Дійсно видалити всі сканування?</string>
<string name="really_remove_selected_scans">Дійсно видалити вибрані сканування?</string>
@@ -134,4 +148,14 @@
<string name="shortcut_encode">Створити штрих-код</string>
<string name="shortcut_preferences">Налаштування</string>
<string name="background_request_failed">Помилка фонового запиту</string>
<string name="entry_type">Тип</string>
<string name="wifi_network">Wi-Fi мережа</string>
<string name="wifi_ssid">Ім\'я</string>
<string name="wifi_type">Тип автентифікації</string>
<string name="wifi_password">Пароль</string>
<string name="wifi_hidden">Прихована мережа</string>
<string name="wifi_eap">Метод EAP</string>
<string name="wifi_anonymous_identity">Анонімна особа</string>
<string name="wifi_identity">Користувач</string>
<string name="wifi_phase2">Phase 2 метод</string>
</resources>
+160
View File
@@ -0,0 +1,160 @@
<resources>
<string name="no_camera_no_fun">Ứng dụng này không hoạt động nếu không có camera. Tạm biệt.</string>
<string name="camera_error">Không thể mở camera, hãy thử lại</string>
<string name="scan_code">Quét mã</string>
<string name="compose_barcode">Tạo mã vạch</string>
<string name="decode_barcode">Giải mã vạch</string>
<string name="content">Nội dung</string>
<string name="binary_data">(thông tin dạng nhị phân)</string>
<plurals name="barcode_info">
<item quantity="one">%2$d ký tự, %1$s</item>
<item quantity="other">%2$d ký tự, %1$s</item>
</plurals>
<string name="error_correction_level">Mức độ tự sửa mã</string>
<string name="error_correction_level_l" formatted="false">Thấp (sửa ~7&#37;)</string>
<string name="error_correction_level_m" formatted="false">Trung bình (sửa ~15&#37;)</string>
<string name="error_correction_level_q" formatted="false">Một phần tư (sửa ~25&#37;)</string>
<string name="error_correction_level_h" formatted="false">Cao (sửa ~30&#37;)</string>
<string name="issue_number">Số</string>
<string name="orientation">Hướng</string>
<string name="other_meta_data">Dữ liệu</string>
<string name="pdf417_extra_metadata">Dữ liệu PDF417</string>
<string name="possible_country">Có thể được sản xuất ở nước</string>
<string name="suggested_price">Giá được gợi ý</string>
<string name="upc_ean_extension">Phần mở rộng UPC EAN</string>
<string name="toggle_flash">Bật/tắt đèn</string>
<string name="share">Chia sẻ</string>
<string name="share_as">Chia sẻ dưới định dạng?</string>
<string name="copy_to_clipboard">Sao chép</string>
<string name="copied_to_clipboard">Đã sao chép</string>
<string name="copy_password">Sao chép mật khẩu</string>
<string name="copied_password_to_clipboard">Đã sao chép mật khẩu</string>
<string name="open_url">Mở đường dẫn</string>
<string name="cannot_resolve_action">Không có ứng dụng nào mở được nội dung này</string>
<string name="pick_search_engine">Chọn một trình tìm kiếm</string>
<string name="format">Định dạng</string>
<string name="size">Kích cỡ theo pixel</string>
<string name="width_by_height">%1$d×%2$d</string>
<string name="input_content_here">Nhập nội dung vào đây</string>
<string name="encode">MÃ HOÁ</string>
<string name="error_no_content">Thiếu nội dung</string>
<string name="error_encoding_barcode">Không thể tạo ra mã vạch</string>
<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="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>
<string name="quarter_second">Một phần tư giây</string>
<string name="half_second">Nửa giây</string>
<string name="a_second">Một giây</string>
<string name="two_seconds">Hai giây</string>
<string name="five_seconds">Năm giây</string>
<string name="history">Lịch sử</string>
<string name="preferences">Tuỳ chọn</string>
<string name="scan_category">Quét</string>
<string name="content_category">Nội dung</string>
<string name="locale_category">Ngôn ngữ</string>
<string name="custom_locale">Tùy chọn ngôn ngữ</string>
<string name="follow_system_settings">Theo cài đặt của máy</string>
<string name="show_crop_handle">Hiện giới hạn cắt hình</string>
<string name="show_crop_handle_summary">Giới hạn vùng quét.</string>
<string name="barcode_formats">Các định dạng mã vạch</string>
<string name="zoom_by_swiping">Vuốt lên/xuống để phóng to/thu nhỏ</string>
<string name="zoom_by_swiping_summary">Vuốt lên/xuống ở màn hình camera để điều chỉnh độ phóng.</string>
<string name="auto_rotate">Nhận diện mã vạch đứng một chiều</string>
<string name="auto_rotate_summary">Tự động xoay khung camera để nhận diện mã vạch đứng một chiều. Tùy theo máy, cài đặt này có thể ảnh hưởng đến tốc độ xử lý.</string>
<string name="try_harder">Tối ưu hoá độ chính xác</string>
<string name="try_harder_summary">Kích hoạt tùy chọn này đối với mã rất khó đọc. Có thể ảnh hưởng đến tốc độ xử lý.</string>
<string name="show_toast_in_bulk_mode">Hiện dữ liệ liên tục</string>
<string name="show_toast_in_bulk_mode_summary">Hiện nhanh dữ liệu trong khi quét liên tục.</string>
<string name="vibrate">Rung khi xác định được mã</string>
<string name="vibrate_summary">Kích hoạt nếu bạn muốn máy của bạn rung khi nhận dạng được mã.</string>
<string name="use_history">Lưu lịch sử quét</string>
<string name="use_history_summary">Lưu mã đã nhận dạng được trên máy của bạn.</string>
<string name="ignore_consecutive_duplicates">Bỏ qua trùng lặp</string>
<string name="ignore_consecutive_duplicates_summary">Không lưu các kết quả quét trùng lặp liên tục vào lịch sử.</string>
<string name="open_immediately">Mở ngay</string>
<string name="open_immediately_summary">Bỏ qua kiểm tra và mở ngay nội dung. Có thể mở nội dung nguy hiểm nếu kích hoạt.</string>
<string name="copy_immediately">Sao chép kết quả</string>
<string name="copy_immediately_summary">Tự động sao chép kết quả. Lưu ý: ứng dụng khác có thể xem nội dung bạn đã sao chép.</string>
<string name="show_meta_data">Hiện dữ liệu</string>
<string name="show_meta_data_summary">Hiện thêm thông tin về mã vạch quét được.</string>
<string name="show_hex_dump">Hiện mã thập lục phân</string>
<string name="show_hex_dump_summary">Hiện mã thập lục phân từ mã quét được.</string>
<string name="close_automatically">Quay lại sau khi Sao chép/Chia sẻ</string>
<string name="close_automatically_summary">Tự động quay trở về màn hình quét sao khi sao chép hoặc chia sẻ nội dung đọc được.</string>
<string name="default_search_engine">Mở dữ liệu không xác định bằng</string>
<string name="always_ask">Luôn hỏi</string>
<string name="open_with_url">Mở dữ liệu không xác định với URL</string>
<string name="clear_network_suggestions">Xoá gợi ý mạng</string>
<string name="clear_network_suggestions_summary">Xoá tất cả trang mạng được gợi ý bởi ứng dụng này.</string>
<string name="really_remove_all_networks">Thật sự xoá tất cả trang mạng?</string>
<string name="clear_network_suggestions_success">Gợi ý mạng đã xoá</string>
<string name="clear_network_suggestions_nothing_to_remove">Không còn gì để xoá</string>
<string name="send_category">Chuyển tới</string>
<string name="send_scan_url">Gửi tất cả mã quét được đến URL</string>
<string name="send_scan_type">Kiểu yêu cầu đối với mỗi lần quét</string>
<string name="send_type_get_add_content">GET và chỉ thêm nội dung</string>
<string name="send_type_get_query_string">GET với xâu truy vấn đầy đủ</string>
<string name="send_type_post_form">POST application/x-www-form-urlencoded</string>
<string name="send_type_post_json">POST application/json</string>
<string name="test_url">URL thử</string>
<string name="really_remove_scan">Thật sự xoá lần quét này?</string>
<string name="really_remove_all_scans">Thật sự xoá tất cả các lần quét?</string>
<string name="really_remove_selected_scans">Thật sự xoá các lần quét được chọn?</string>
<string name="clear_history">Xoá lịch sử</string>
<string name="copy_scan">Sao chép lần quét</string>
<string name="edit_scan">Sửa nhãn</string>
<string name="remove_scan">Xoá lần quét</string>
<string name="enter_name">Nhập tên để miêu tả lần quét</string>
<string name="enter_name_hint">Tên lần quét</string>
<string name="no_barcode_found">Không tìm thấy mã vạch</string>
<string name="pick_list_separator">Phân chia các mục như thế nào?</string>
<string name="separator_line_break">Ngắt dòng</string>
<string name="separator_ruler">Đường kẻ</string>
<string name="save_as_file_name">Lưu vào Downloads?</string>
<string name="file_name">Tên tệp</string>
<string name="error_saving_file">Không thể lưu tệp</string>
<string name="error_file_exists">Tệp đã tồn tại</string>
<string name="connect_to_wifi">Kết nối WiFi</string>
<string name="wifi_config_failed">Không thể thiết lập WiFi</string>
<string name="wifi_added">Đã thêm WiFi</string>
<string name="sms_send">Gửi tin nhắn SMS</string>
<string name="sms_error">Không thể gửi tin nhắn SMS</string>
<string name="tel_dial">Gọi theo số này</string>
<string name="tel_error">Không thể gọi số này</string>
<string name="mail_send">Gửi mail</string>
<string name="mail_error">Không thể gửi mail</string>
<string name="vcard_add">Thêm vào danh bạ</string>
<string name="vcard_failed">Không thể thêm vào danh bạ</string>
<string name="vevent_add">Thêm vào lịch</string>
<string name="vevent_failed">Không thể thêm vào lịch</string>
<string name="otpauth_add">Thêm xác thực hai bước</string>
<string name="search_web">Tìm kiếm web</string>
<string name="search_scan">Tìm kiếm lần quét</string>
<string name="export_to_file">Xuất thành tệp</string>
<string name="export_as">Xuất dưói dạng?</string>
<string name="export_csv_comma">Tệp CSV với dấu phẩy</string>
<string name="export_csv_semicolon">Tệp CSV với dấu chấm phẩy</string>
<string name="export_json">Tệp JSON</string>
<string name="export_database">Cơ sở dữ liệu SQLite</string>
<string name="saved_in_downloads">Lưu vào Downloads</string>
<string name="rotate_image_cw">Quay ảnh theo chiều kim đồng hồ</string>
<string name="pick_file">Chọn tệp ảnh</string>
<string name="pick_code_to_scan">Chọn mã để quét</string>
<string name="shortcut_decode">Quét mã vạch</string>
<string name="shortcut_encode">Tạo mã vạch</string>
<string name="shortcut_preferences">Cài đặt</string>
<string name="background_request_failed">Yêu cầu nền thất bại</string>
<string name="entry_type">Type</string>
<string name="wifi_network">Wi-Fi network</string>
<string name="wifi_ssid">Name</string>
<string name="wifi_type">Authentication type</string>
<string name="wifi_password">Password</string>
<string name="wifi_hidden">Hidden network</string>
<string name="wifi_eap">EAP method</string>
<string name="wifi_anonymous_identity">Anonymous identity</string>
<string name="wifi_identity">Identity</string>
<string name="wifi_phase2">Phase 2 method</string>
</resources>
@@ -43,6 +43,12 @@
<string name="switch_camera">切换摄像头</string>
<string name="bulk_mode">连续扫描</string>
<string name="bulk_mode_summary">始终开启连续扫描</string>
<string name="bulk_mode_delay">Delay between continuous scans</string>
<string name="quarter_second">A quarter second</string>
<string name="half_second">Half a second</string>
<string name="a_second">One second</string>
<string name="two_seconds">Two seconds</string>
<string name="five_seconds">Five seconds</string>
<string name="history">历史</string>
<string name="preferences">首选项</string>
<string name="scan_category">扫描</string>
@@ -52,6 +58,7 @@
<string name="follow_system_settings">跟随系统设置</string>
<string name="show_crop_handle">限制扫描区域</string>
<string name="show_crop_handle_summary">把扫描区域限制在选定范围内</string>
<string name="barcode_formats">Barcode formats</string>
<string name="zoom_by_swiping">上下滑动缩放</string>
<string name="zoom_by_swiping_summary">通过上下滑动在扫描界面控制相机缩放</string>
<string name="auto_rotate">识别竖直的1D条形码</string>
@@ -76,7 +83,14 @@
<string name="show_hex_dump_summary">显示已扫描条形码的16进制数据</string>
<string name="close_automatically">复制/分享后自动返回</string>
<string name="close_automatically_summary">复制或分享读取的内容后自动返回扫描主界面。</string>
<string name="default_search_engine">Open unknown data in</string>
<string name="always_ask">Always ask</string>
<string name="open_with_url">使用URL打开未知数据</string>
<string name="clear_network_suggestions">Clear network suggestions</string>
<string name="clear_network_suggestions_summary">Remove all of the network suggestions that were previously provided by this app.</string>
<string name="really_remove_all_networks">Really remove all networks?</string>
<string name="clear_network_suggestions_success">Network suggestions cleared</string>
<string name="clear_network_suggestions_nothing_to_remove">Nothing to remove</string>
<string name="send_category">转发</string>
<string name="send_scan_url">将每个扫描结果发送到URL</string>
<string name="send_scan_type">请求类型</string>
@@ -132,4 +146,14 @@
<string name="shortcut_encode">创建条形码</string>
<string name="shortcut_preferences">设置</string>
<string name="background_request_failed">后台请求失败</string>
<string name="entry_type">Type</string>
<string name="wifi_network">Wi-Fi network</string>
<string name="wifi_ssid">Name</string>
<string name="wifi_type">Authentication type</string>
<string name="wifi_password">Password</string>
<string name="wifi_hidden">Hidden network</string>
<string name="wifi_eap">EAP method</string>
<string name="wifi_anonymous_identity">Anonymous identity</string>
<string name="wifi_identity">Identity</string>
<string name="wifi_phase2">Phase 2 method</string>
</resources>
+142 -117
View File
@@ -1,135 +1,160 @@
<resources>
<string name="no_camera_no_fun">沒有相機權限的話,這個程式根本什麽都做不了。再見</string>
<string name="no_camera_no_fun">沒有相機權限的話,這個程式根本什麽都做不了。 再見!</string>
<string name="camera_error">不能開啓相機,請重試</string>
<string name="scan_code">掃描條碼</string>
<string name="compose_barcode">製作條碼</string>
<string name="decode_barcode">解讀條碼</string>
<string name="content">内容</string>
<string name="binary_data">(2進制碼)</string>
<string name="binary_data">(2 進制碼)</string>
<plurals name="barcode_info">
<item quantity="other">%2$d 個字符, %1$s</item>
<item quantity="one">%2$d 個字符 %1$s</item>
<item quantity="other">%2$d 個字符, %1$s</item>
</plurals>
<string name="error_correction_level">Error correction level</string>
<string name="error_correction_level_l" formatted="false">Low (~7&#37; correction)</string>
<string name="error_correction_level_m" formatted="false">Medium (~15&#37; correction)</string>
<string name="error_correction_level_q" formatted="false">Quartile (~25&#37; correction)</string>
<string name="error_correction_level_h" formatted="false">High (~30&#37; correction)</string>
<string name="issue_number">Issue number</string>
<string name="orientation">Orientation</string>
<string name="error_correction_level">糾錯等級</string>
<string name="error_correction_level_l" formatted="false"> (~7&#37; 準確度)</string>
<string name="error_correction_level_m" formatted="false"> (~15&#37; 準確度)</string>
<string name="error_correction_level_q" formatted="false">Quartile (~25&#37; 準確度)</string>
<string name="error_correction_level_h" formatted="false"> (~30&#37; 準確度)</string>
<string name="issue_number">發行編號</string>
<string name="orientation">方向</string>
<string name="other_meta_data">Metadata</string>
<string name="pdf417_extra_metadata">PDF417 metadata</string>
<string name="possible_country">Possible country of manufacture</string>
<string name="suggested_price">Suggested price</string>
<string name="upc_ean_extension">UPC EAN extension</string>
<string name="toggle_flash">閃光燈</string>
<string name="possible_country">製作國家</string>
<string name="suggested_price">建議價格</string>
<string name="upc_ean_extension">UPC EAN 擴充</string>
<string name="toggle_flash">開關閃光燈</string>
<string name="share">分享</string>
<string name="share_as">Share as?</string>
<string name="copy_to_clipboard">複製</string>
<string name="copied_to_clipboard">複製</string>
<string name="copy_password">Copy password into clipboard</string>
<string name="copied_password_to_clipboard">Password copied to clipboard</string>
<string name="open_url"></string>
<string name="cannot_resolve_action">無應用程式可以開</string>
<string name="pick_search_engine">選擇搜尋引擎</string>
<string name="share_as">以何種方式分享?</string>
<string name="copy_to_clipboard">複製到剪貼簿</string>
<string name="copied_to_clipboard">複製到剪貼簿</string>
<string name="copy_password">複製密碼到剪貼簿</string>
<string name="copied_password_to_clipboard">已複製密碼到剪貼簿</string>
<string name="open_url">啟連結</string>
<string name="cannot_resolve_action">沒有相關程式可以開啟它</string>
<string name="pick_search_engine">選擇一個搜尋引擎</string>
<string name="format">格式</string>
<string name="size">大小(pixels)</string>
<string name="size">圖片尺寸</string>
<string name="width_by_height">%1$d×%2$d</string>
<string name="input_content_here">此輸入</string>
<string name="encode">製作條</string>
<string name="error_no_content">找不到内</string>
<string name="error_encoding_barcode">條碼製作失敗</string>
<string name="input_content_here">這裡輸入內容</string>
<string name="encode"></string>
<string name="error_no_content">缺少內</string>
<string name="error_encoding_barcode">無法產生條碼</string>
<string name="view_barcode">檢視條碼</string>
<string name="info">資訊</string>
<string name="info">關於</string>
<string name="switch_camera">切換相機</string>
<string name="bulk_mode">Scan continuously</string>
<string name="bulk_mode_summary">Always start scanning continuously.</string>
<string name="history">歷史</string>
<string name="show_crop_handle">Show cropping limiter</string>
<string name="show_crop_handle_summary">Restrict scanning to a customizable region.</string>
<string name="zoom_by_swiping">Zoom camera by swiping up/down</string>
<string name="zoom_by_swiping_summary">Swipe up or down in camera screen to control the camera zoom.</string>
<string name="auto_rotate">Recognize 1D barcodes vertically</string>
<string name="auto_rotate_summary">Automatically rotate the camera frame to recognize vertical 1D barcodes. Depending on the device, this may affect performance.</string>
<string name="try_harder">Optimize reader for accuracy, not speed</string>
<string name="try_harder_summary">Enable this option for very hard to read codes. Will affect performance.</string>
<string name="show_toast_in_bulk_mode">Show data in continuous mode</string>
<string name="show_toast_in_bulk_mode_summary">Briefly show the scanned data when scanning continuously.</string>
<string name="vibrate">Vibrate on detection</string>
<string name="vibrate_summary">Enable this if you want your device to vibrate when a code is recognized.</string>
<string name="use_history">儲存掃描歷史</string>
<string name="use_history_summary">Save recognized codes on your device.</string>
<string name="ignore_consecutive_duplicates">Do not save consecutive duplicates</string>
<string name="ignore_consecutive_duplicates_summary">Do not save consecutive duplicates in the scan history.</string>
<string name="open_immediately">Skip inspection and open contents immediately</string>
<string name="open_immediately_summary">Skip inspection and open contents immediately. May open harmful content if enabled.</string>
<string name="copy_immediately">Automatically copy contents into clipboard</string>
<string name="copy_immediately_summary">Automatically copy scanned contents into clipboard. Please note that other apps may snoop on your clipboard in the background.</string>
<string name="show_meta_data">Show metadata</string>
<string name="show_meta_data_summary">Show additional data about the scanned barcoded.</string>
<string name="show_hex_dump">Show hex dump</string>
<string name="show_hex_dump_summary">Show a hex dump of the scanned contents.</string>
<string name="close_automatically">Go back after Copy/Share</string>
<string name="close_automatically_summary">Automatically return to the scan screen after copying or sharing the read contents.</string>
<string name="really_remove_scan">真的要移除掃描記錄?</string>
<string name="really_remove_all_scans">真的要移除所有掃描記錄?</string>
<string name="really_remove_selected_scans">Really remove selected scans?</string>
<string name="clear_history">清除記錄</string>
<string name="copy_scan">Copy scan</string>
<string name="edit_scan">Edit label</string>
<string name="remove_scan">Remove scan</string>
<string name="enter_name">Enter a name to describe the scan</string>
<string name="enter_name_hint">Name of the scan</string>
<string name="no_barcode_found">找不到條碼</string>
<string name="pick_list_separator">如何分開列表項目?</string>
<string name="separator_line_break">Line break</string>
<string name="separator_ruler">直尺</string>
<string name="save_as_file_name">儲存成檔案?</string>
<string name="file_name">檔案名稱</string>
<string name="error_saving_file">不能儲存檔案</string>
<string name="error_file_exists">檔案已存在</string>
<string name="connect_to_wifi">連接至 WiFi</string>
<string name="wifi_config_failed">WiFi連接設定失敗</string>
<string name="wifi_added">成功添加WiFi</string>
<string name="sms_send">傳送SMS</string>
<string name="sms_error">不能傳送SMS</string>
<string name="tel_dial">撥號</string>
<string name="tel_error">不能撥號</string>
<string name="mail_send">發送電郵</string>
<string name="mail_error">不能發送電郵</string>
<string name="vcard_add">添加至聯絡人</string>
<string name="vcard_failed">不能添加至聯絡人</string>
<string name="vevent_add">添加至行事曆</string>
<string name="vevent_failed">不能添加至行事曆</string>
<string name="preferences">Preferences</string>
<string name="scan_category">Scan</string>
<string name="content_category">Content</string>
<string name="locale_category">Language</string>
<string name="custom_locale">Custom language</string>
<string name="follow_system_settings">Follow system settings</string>
<string name="open_with_url">Open unknown data with URL</string>
<string name="send_category">Forwarding</string>
<string name="send_scan_url">Send every scan to URL</string>
<string name="send_scan_type">Type of request for every scan</string>
<string name="send_type_get_add_content">GET and simply add content</string>
<string name="send_type_get_query_string">GET with compelete query string</string>
<string name="bulk_mode">連續掃描</string>
<string name="bulk_mode_summary">始終開啟連續掃描</string>
<string name="bulk_mode_delay">Delay between continuous scans</string>
<string name="quarter_second">A quarter second</string>
<string name="half_second">Half a second</string>
<string name="a_second">One second</string>
<string name="two_seconds">Two seconds</string>
<string name="five_seconds">Five seconds</string>
<string name="history">歷史記錄</string>
<string name="preferences">偏好設定</string>
<string name="scan_category">掃描</string>
<string name="content_category">內容</string>
<string name="locale_category">語言</string>
<string name="custom_locale">設定語言</string>
<string name="follow_system_settings">跟隨系統設定</string>
<string name="show_crop_handle">限制掃描區域</string>
<string name="show_crop_handle_summary">把掃描區域限制在選定範圍內</string>
<string name="barcode_formats">Barcode formats</string>
<string name="zoom_by_swiping">上下滑動縮放</string>
<string name="zoom_by_swiping_summary">通過上下滑動在掃描界面控制相機縮放</string>
<string name="auto_rotate">識別豎直的 1D 條碼</string>
<string name="auto_rotate_summary">自動旋轉相機以識別豎直的 1D 條碼(可能會影響一些設備的掃描性能)</string>
<string name="try_harder">提高掃描準確度</string>
<string name="try_harder_summary">掃描很難識別的條碼時可啟用此選項,但會降低掃描速度</string>
<string name="show_toast_in_bulk_mode">在連續掃描模式中顯示資料</string>
<string name="show_toast_in_bulk_mode_summary">連續掃描時簡要顯示掃描資料。</string>
<string name="vibrate">振動提示</string>
<string name="vibrate_summary">掃描完成時振動提示</string>
<string name="use_history">儲存掃描記錄</string>
<string name="use_history_summary">在本機儲存掃描記錄</string>
<string name="ignore_consecutive_duplicates">不儲存重複歷史記錄</string>
<string name="ignore_consecutive_duplicates_summary">在掃描歷史中不儲存重複項目</string>
<string name="open_immediately">立即開啟</string>
<string name="open_immediately_summary">跳過檢查並立即開啟內容。 如果啟用,可能會開啟有害內容。</string>
<string name="copy_immediately">自動複製掃描結果到剪貼簿</string>
<string name="copy_immediately_summary">自動將掃描的內容複製到剪貼簿。 請注意,其他 App 可能會在背景監控剪貼簿。</string>
<string name="show_meta_data">顯示 Metadata</string>
<string name="show_meta_data_summary">顯示已掃描條碼的額外資訊</string>
<string name="show_hex_dump">顯示 Hex dump</string>
<string name="show_hex_dump_summary">顯示已掃描條碼的 Hex dump</string>
<string name="close_automatically">複製/分享後自動返回</string>
<string name="close_automatically_summary">複製或分享讀取的內容後自動返回掃描主要界面。</string>
<string name="default_search_engine">在開啟未知資料時</string>
<string name="always_ask">總是詢問</string>
<string name="open_with_url">使用 URL 開啟未知資料</string>
<string name="clear_network_suggestions">清除網路建議</string>
<string name="clear_network_suggestions_summary">移除此 App 之前提供的所有網路建議。</string>
<string name="really_remove_all_networks">真的要移除所有網路嗎?</string>
<string name="clear_network_suggestions_success">網路建議已清除</string>
<string name="clear_network_suggestions_nothing_to_remove">沒有什麼可以移除的</string>
<string name="send_category">轉發</string>
<string name="send_scan_url">將每個掃描結果傳送到 URL</string>
<string name="send_scan_type">每次掃描的請求類型</string>
<string name="send_type_get_add_content">GET 簡單附加資料</string>
<string name="send_type_get_query_string">GET 完整查詢資料</string>
<string name="send_type_post_form">POST application/x-www-form-urlencoded</string>
<string name="send_type_post_json">POST application/json</string>
<string name="test_url">Test URL</string>
<string name="otpauth_add">Add 2FA</string>
<string name="search_web">Search the web</string>
<string name="search_scan">Search scan</string>
<string name="export_to_file">Export to file</string>
<string name="export_as">Export as?</string>
<string name="export_csv_comma">CSV file with commas</string>
<string name="export_csv_semicolon">CSV file with semicolons</string>
<string name="export_json">JSON file</string>
<string name="export_database">SQLite database</string>
<string name="saved_in_downloads">Saved in downloads</string>
<string name="rotate_image_cw">Rotate image clockwise</string>
<string name="pick_file">Pick image file</string>
<string name="pick_code_to_scan">Pick code to scan</string>
<string name="shortcut_decode">Scan a barcode</string>
<string name="shortcut_encode">Create a barcode</string>
<string name="shortcut_preferences">Settings</string>
<string name="background_request_failed">Background request failed</string>
<string name="test_url">測試 URL</string>
<string name="really_remove_scan">確定刪除記錄?</string>
<string name="really_remove_all_scans">確定刪除全部掃描記錄?</string>
<string name="really_remove_selected_scans">確定刪除所選掃描記錄?</string>
<string name="clear_history">清空記錄</string>
<string name="copy_scan">複製掃描記錄</string>
<string name="edit_scan">編輯名稱</string>
<string name="remove_scan">刪除所選記錄</string>
<string name="enter_name">輸入名稱</string>
<string name="enter_name_hint">掃描描述</string>
<string name="no_barcode_found">未找到條碼</string>
<string name="pick_list_separator">如何分隔清單項目?</string>
<string name="separator_line_break">換行符</string>
<string name="separator_ruler">分割線</string>
<string name="save_as_file_name">儲存為檔案?</string>
<string name="file_name">檔案名稱</string>
<string name="error_saving_file">無法儲存檔案</string>
<string name="error_file_exists">檔案已存在</string>
<string name="connect_to_wifi">連線到 WiFi</string>
<string name="wifi_config_failed">無法配置 WiFi</string>
<string name="wifi_added">WiFi 已加入</string>
<string name="sms_send">發送簡訊</string>
<string name="sms_error">無法發送簡訊</string>
<string name="tel_dial">撥打號碼</string>
<string name="tel_error">無法撥打此號碼</string>
<string name="mail_send">發送郵件</string>
<string name="mail_error">無法發送郵件</string>
<string name="vcard_add">加入到通訊錄</string>
<string name="vcard_failed">無法加入到通訊錄</string>
<string name="vevent_add">加入到日歷</string>
<string name="vevent_failed">無法加入到日歷</string>
<string name="otpauth_add">加入雙重驗證(2FA)</string>
<string name="search_web">在網路上搜尋</string>
<string name="search_scan">搜尋掃描記錄</string>
<string name="export_to_file">匯出為檔案</string>
<string name="export_as">另存為?</string>
<string name="export_csv_comma">逗號分隔的 CSV</string>
<string name="export_csv_semicolon">分號分隔的 CSV</string>
<string name="export_json">JSON</string>
<string name="export_database">匯出 SQLite 資料庫</string>
<string name="saved_in_downloads">已儲存到下載目錄</string>
<string name="rotate_image_cw">旋轉圖片</string>
<string name="pick_file">選擇圖片檔案</string>
<string name="pick_code_to_scan">選擇掃描編碼</string>
<string name="shortcut_decode">掃描條碼</string>
<string name="shortcut_encode">建立條碼</string>
<string name="shortcut_preferences">設定</string>
<string name="background_request_failed">背景請求失敗</string>
<string name="entry_type">Type</string>
<string name="wifi_network">Wi-Fi network</string>
<string name="wifi_ssid">Name</string>
<string name="wifi_type">Authentication type</string>
<string name="wifi_password">Password</string>
<string name="wifi_hidden">Hidden network</string>
<string name="wifi_eap">EAP method</string>
<string name="wifi_anonymous_identity">Anonymous identity</string>
<string name="wifi_identity">Identity</string>
<string name="wifi_phase2">Phase 2 method</string>
</resources>
@@ -0,0 +1,40 @@
<resources>
<string-array name="barcode_formats_names">
<item>AZTEC</item>
<item>CODABAR</item>
<item>CODE 39</item>
<item>CODE 93</item>
<item>CODE 128</item>
<item>DATA MATRIX</item>
<item>EAN 8</item>
<item>EAN 13</item>
<item>ITF</item>
<item>MAXICODE</item>
<item>PDF 417</item>
<item>QR CODE</item>
<item>RSS 14</item>
<item>RSS EXPANDED</item>
<item>UPC A</item>
<item>UPC E</item>
<item>UPC EAN EXTENSION</item>
</string-array>
<string-array name="barcode_formats_values">
<item>AZTEC</item>
<item>CODABAR</item>
<item>CODE_39</item>
<item>CODE_93</item>
<item>CODE_128</item>
<item>DATA_MATRIX</item>
<item>EAN_8</item>
<item>EAN_13</item>
<item>ITF</item>
<item>MAXICODE</item>
<item>PDF_417</item>
<item>QR_CODE</item>
<item>RSS_14</item>
<item>RSS_EXPANDED</item>
<item>UPC_A</item>
<item>UPC_E</item>
<item>UPC_EAN_EXTENSION</item>
</string-array>
</resources>
@@ -0,0 +1,16 @@
<resources>
<string-array name="bulk_mode_delays_names">
<item>@string/quarter_second</item>
<item>@string/half_second</item>
<item>@string/a_second</item>
<item>@string/two_seconds</item>
<item>@string/five_seconds</item>
</string-array>
<string-array name="bulk_mode_delays_values">
<item>250</item>
<item>500</item>
<item>1000</item>
<item>2000</item>
<item>5000</item>
</string-array>
</resources>
+2
View File
@@ -16,6 +16,7 @@
<item>Turkish</item>
<item>Ukrainian</item>
<item>Chinese</item>
<item>Traditional Chinese</item>
<item>Chinese (Simplified Han, China)</item>
<item>Japanese</item>
<item>Czech</item>
@@ -37,6 +38,7 @@
<item>tr</item>
<item>uk</item>
<item>zh</item>
<item>zh-TW</item>
<item>zh-rCN</item>
<item>ja</item>
<item>cs</item>
@@ -1,5 +1,6 @@
<resources>
<string-array name="search_engines_names">
<item>@string/always_ask</item>
<item>Google</item>
<item>DuckDuckGo</item>
<item>Qwant</item>
@@ -10,6 +11,7 @@
<item>OpenPetFoodFacts.org</item>
</string-array>
<string-array name="search_engines_values">
<item></item>
<item>https://www.google.com/search?q=</item>
<item>https://duckduckgo.com/?q=</item>
<item>https://www.qwant.com/?q=</item>
+24
View File
@@ -44,6 +44,12 @@
<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="bulk_mode_delay">Delay between continuous scans</string>
<string name="quarter_second">A quarter second</string>
<string name="half_second">Half a second</string>
<string name="a_second">One second</string>
<string name="two_seconds">Two seconds</string>
<string name="five_seconds">Five seconds</string>
<string name="history">History</string>
<string name="preferences">Preferences</string>
<string name="scan_category">Scan</string>
@@ -53,6 +59,7 @@
<string name="follow_system_settings">Follow system settings</string>
<string name="show_crop_handle">Show cropping limiter</string>
<string name="show_crop_handle_summary">Restrict scanning to a customizable region.</string>
<string name="barcode_formats">Barcode formats</string>
<string name="zoom_by_swiping">Swipe up/down to zoom</string>
<string name="zoom_by_swiping_summary">Swipe up or down in camera screen to control the camera zoom.</string>
<string name="auto_rotate">Recognize vertical 1D barcodes</string>
@@ -77,7 +84,14 @@
<string name="show_hex_dump_summary">Show a hex dump of the scanned contents.</string>
<string name="close_automatically">Go back after Copy/Share</string>
<string name="close_automatically_summary">Automatically return to the scan screen after copying or sharing the read contents.</string>
<string name="default_search_engine">Open unknown data in</string>
<string name="always_ask">Always ask</string>
<string name="open_with_url">Open unknown data with URL</string>
<string name="clear_network_suggestions">Clear network suggestions</string>
<string name="clear_network_suggestions_summary">Remove all of the network suggestions that were previously provided by this app.</string>
<string name="really_remove_all_networks">Really remove all networks?</string>
<string name="clear_network_suggestions_success">Network suggestions cleared</string>
<string name="clear_network_suggestions_nothing_to_remove">Nothing to remove</string>
<string name="send_category">Forwarding</string>
<string name="send_scan_url">Send every scan to URL</string>
<string name="send_scan_type">Type of request for every scan</string>
@@ -133,4 +147,14 @@
<string name="shortcut_encode">Create a barcode</string>
<string name="shortcut_preferences">Settings</string>
<string name="background_request_failed">Background request failed</string>
<string name="entry_type">Type</string>
<string name="wifi_network">Wi-Fi network</string>
<string name="wifi_ssid">Name</string>
<string name="wifi_type">Authentication type</string>
<string name="wifi_password">Password</string>
<string name="wifi_hidden">Hidden network</string>
<string name="wifi_eap">EAP method</string>
<string name="wifi_anonymous_identity">Anonymous identity</string>
<string name="wifi_identity">Identity</string>
<string name="wifi_phase2">Phase 2 method</string>
</resources>
+122
View File
@@ -0,0 +1,122 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/preferences"
android:key="preferences">
<PreferenceCategory android:title="@string/scan_category">
<MultiSelectListPreference
android:key="barcode_formats"
android:title="@string/barcode_formats"
android:entries="@array/barcode_formats_names"
android:entryValues="@array/barcode_formats_values"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="true"
android:key="show_crop_handle"
android:title="@string/show_crop_handle"
android:summary="@string/show_crop_handle_summary"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="true"
android:key="zoom_by_swiping"
android:title="@string/zoom_by_swiping"
android:summary="@string/zoom_by_swiping_summary"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="false"
android:key="auto_rotate"
android:title="@string/auto_rotate"
android:summary="@string/auto_rotate_summary"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="false"
android:key="try_harder"
android:title="@string/try_harder"
android:summary="@string/try_harder_summary"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="false"
android:key="bulk_mode"
android:title="@string/bulk_mode"
android:summary="@string/bulk_mode_summary"/>
<ListPreference
android:key="bulk_mode_delay"
android:title="@string/bulk_mode_delay"
android:entries="@array/bulk_mode_delays_names"
android:entryValues="@array/bulk_mode_delays_values"
android:defaultValue="500"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="true"
android:key="show_toast_in_bulk_mode"
android:title="@string/show_toast_in_bulk_mode"
android:summary="@string/show_toast_in_bulk_mode_summary"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="true"
android:key="vibrate"
android:title="@string/vibrate"
android:summary="@string/vibrate_summary"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="true"
android:key="use_history"
android:title="@string/use_history"
android:summary="@string/use_history_summary"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="true"
android:key="ignore_consecutive_duplicates"
android:title="@string/ignore_consecutive_duplicates"
android:summary="@string/ignore_consecutive_duplicates_summary"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="false"
android:key="copy_immediately"
android:title="@string/copy_immediately"
android:summary="@string/copy_immediately_summary"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/send_category">
<de.markusfisch.android.binaryeye.preference.UrlPreference
android:key="send_scan_url"
android:title="@string/send_scan_url"/>
<ListPreference
android:key="send_scan_type"
android:title="@string/send_scan_type"
android:entries="@array/send_type_names"
android:entryValues="@array/send_type_values"
android:defaultValue="0"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/content_category">
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="false"
android:key="open_immediately"
android:title="@string/open_immediately"
android:summary="@string/open_immediately_summary"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="true"
android:key="show_meta_data"
android:title="@string/show_meta_data"
android:summary="@string/show_meta_data_summary"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="true"
android:key="show_hex_dump"
android:title="@string/show_hex_dump"
android:summary="@string/show_hex_dump_summary"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="true"
android:key="close_automatically"
android:title="@string/close_automatically"
android:summary="@string/close_automatically_summary"/>
<ListPreference
android:key="default_search_url"
android:title="@string/default_search_engine"
android:entries="@array/search_engines_names"
android:entryValues="@array/search_engines_values"
android:defaultValue=""/>
<de.markusfisch.android.binaryeye.preference.UrlPreference
android:key="open_with_url"
android:title="@string/open_with_url"/>
<Preference
android:key="clear_network_suggestions"
android:title="@string/clear_network_suggestions"
android:summary="@string/clear_network_suggestions_summary"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/locale_category">
<ListPreference
android:key="custom_locale"
android:title="@string/custom_locale"
android:entries="@array/locale_names"
android:entryValues="@array/locale_values"
android:defaultValue="0"/>
</PreferenceCategory>
</PreferenceScreen>
+16
View File
@@ -28,6 +28,12 @@
android:key="bulk_mode"
android:title="@string/bulk_mode"
android:summary="@string/bulk_mode_summary"/>
<ListPreference
android:key="bulk_mode_delay"
android:title="@string/bulk_mode_delay"
android:entries="@array/bulk_mode_delays_names"
android:entryValues="@array/bulk_mode_delays_values"
android:defaultValue="500"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="true"
android:key="show_toast_in_bulk_mode"
@@ -86,9 +92,19 @@
android:key="close_automatically"
android:title="@string/close_automatically"
android:summary="@string/close_automatically_summary"/>
<ListPreference
android:key="default_search_url"
android:title="@string/default_search_engine"
android:entries="@array/search_engines_names"
android:entryValues="@array/search_engines_values"
android:defaultValue=""/>
<de.markusfisch.android.binaryeye.preference.UrlPreference
android:key="open_with_url"
android:title="@string/open_with_url"/>
<Preference
android:key="clear_network_suggestions"
android:title="@string/clear_network_suggestions"
android:summary="@string/clear_network_suggestions_summary"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/locale_category">
<ListPreference
@@ -20,6 +20,30 @@ class WifiConnectorTest {
assertFalse(info.hidden)
}
@Test
fun anonymousIdentity() {
val info = simpleDataAccessor("WIFI:T:WPA2-EAP;S:wifi;P:password;I:ident;A:anonymous;;")
assertEquals("WPA2-EAP", info.securityType)
assertEquals("wifi", info.ssid)
assertEquals("password", info.password)
assertEquals("ident", info.identity)
assertEquals("anonymous", info.anonymousIdentity)
assertFalse(info.hidden)
}
@Test
fun anonymousIdentityAI() {
val info = simpleDataAccessor("WIFI:T:WPA2-EAP;S:wifi;P:password;I:ident;AI:anonymous;;")
assertEquals("WPA2-EAP", info.securityType)
assertEquals("wifi", info.ssid)
assertEquals("password", info.password)
assertEquals("ident", info.identity)
assertEquals("anonymous", info.anonymousIdentity)
assertFalse(info.hidden)
}
@Test
fun hidden() {
val info = simpleDataAccessor("WIFI:T:WPA;S:asdfz;P:password;H:true;;")
+2 -2
View File
@@ -1,7 +1,7 @@
buildscript {
ext {
kotlin_version = '1.4.10'
tools_version = '4.2.0'
kotlin_version = '1.5.30'
tools_version = '7.0.3'
build_tools_version = '30.0.2'
sdk_version = 30
support_version = '25.3.1'
@@ -0,0 +1,3 @@
* Update Bengali translation
* Update Simplified Chinese
@@ -0,0 +1,4 @@
* Add a setting to pick a default search engine
* Update Traditional Chinese
* Update Dutch translation
@@ -0,0 +1,4 @@
* Add a preference item to remove WiFi network suggestions
* Update Traditional Chinese Translation
* Update Russian language
@@ -0,0 +1,6 @@
* Add a setting to choose barcode formats to scan
* Ask before removing network suggestions
* Update Traditional Chinese Translation
* Update Russian language
* Update Dutch translation
@@ -0,0 +1,4 @@
* Update Spanish translation
* Update Japanese translation
* Fix in-app language switching for App Bundles
@@ -0,0 +1,4 @@
* Add a setting to set the delay for bulk mode
* Add support for MECARD contact format
* Remove unused permissions on Android Q
@@ -0,0 +1,11 @@
縦方向、横方向や、反転したバーコードも読み取ることができます。
バーコードの作成も可能な、マテリアルデザインを採用したバーコードスキャナのアプリです。
ZXing("Zebra Crossing") をバーコード読み込みライブラリに利用しています。
対応しているバーコード形式は次の通りです。
AZTEC, CODABAR, CODE 39, CODE 93, CODE 128,
DATA MATRIX, EAN 8, EAN 13, ITF, PDF417, QR CODE, RSS 14, RSS EXPANDED,
UPC A, UPC E and UPC EAN EXTENSION.
このアプリはオープンソースです。
ソースコード:https://github.com/markusfisch/BinaryEye
@@ -0,0 +1,2 @@
Yet another barcode scanner for Android. Free, no ads and open source.
Android向けの高機能なバーコードスキャナです。フリーで広告がなく、オープンソースです。
+1
View File
@@ -0,0 +1 @@
高機能なバーコードスキャナ
@@ -1,8 +1,10 @@
可以掃描各種條碼,Material設計,可以建立條碼,更開放原始碼。
可以用縱向和橫向的方式掃描條碼,也能讀取反向碼,
是 Material Design 的風格,也可以製作條碼。
基於ZXing ("Zebra Crossing") 條碼掃描
適用於各種格式:AZTECCODABARCODE 39CODE 93CODE 128
DATA MATRIXEAN 8EAN 13ITFPDF417QR CODERSS 14RSS EXPANDED
UPC AUPC E 和 UPC EAN EXTENSION
基於使用 ZXing (“斑馬線交叉”) 條碼掃描函式庫
支援的條碼格式為: AZTEC, CODABAR, CODE 39, CODE 93, CODE 128,
DATA MATRIX, EAN 8, EAN 13, ITF, PDF417, QR CODE, RSS 14, RSS EXPANDED,
UPC A, UPC E 和 UPC EAN EXTENSION.
原始碼:https://github.com/markusfisch/BinaryEye
此項目為開放原始碼:
https://github.com/markusfisch/BinaryEye
@@ -1 +1 @@
Android的條碼掃描器。免費,無廣告,開放原始碼。
Android 的條碼掃描器。 免費,無廣告,開放原始碼。
-1
View File
@@ -1,3 +1,2 @@
org.gradle.jvmargs=-Xmx1536m
kotlin.code.style=official
android.enableR8=true
+1 -1
View File
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip