Compare commits

...
11 Commits
Author SHA1 Message Date
Markus Fisch 9dbb78ce67 Advance version number to 1.46.2 2021-12-10 19:52:21 +01:00
Markus Fisch 47c252ab18 Fix requesting write permissions on Q and above
Requesting WRITE_EXTERNAL_STORAGE is only required before Android Q.
2021-12-10 19:45:50 +01:00
Markus Fisch 10e02b3164 Update tools version 2021-12-10 19:45:45 +01:00
Markus Fisch 7e82dbe730 Update changelogs for F-Droid 2021-12-06 19:43:55 +01:00
Markus Fisch e91c30f7c2 Advance version number to 1.46.1 2021-12-06 19:42:38 +01:00
Markus Fisch 30a36e7e07 Update Kotlin version 2021-12-04 19:35:54 +01:00
Markus Fisch 5f91fe2f02 Fix setting number of coordinates in DetectorView
mapResultToView() already gives the number of components (in
the target array), not points. So this number doesn't need to
be doubled.
2021-12-04 19:06:12 +01:00
Markus Fisch cab8d6c038 Restore/save crop limiter settings in PickActivity
Use the same setup that the user configured (in CameraActivity)
in PickActivity, too. There's no good reason to change the
scanning experience for scanning from an image.
2021-12-04 18:58:23 +01:00
Markus Fisch 4aac5dc61b Remove extra link on result screen
Because the very same functionality is already available with
the FAB, which is the default action for all content that can
be opened or shared.

I don't like having an extra element just for URLs that doesn't
add anything over the already available default action button.

So I tried, but I just don't like it. Sorry.

This reverts commit 9fb2eb2d2b.
2021-11-27 17:45:15 +01:00
Oğuz ErsenandGitHub fbbc20d327 Update Turkish translation 2021-11-25 18:45:24 +01:00
Markus Fisch 5595b68ff4 Update changelogs for F-Droid 2021-11-13 15:46:33 +01:00
13 changed files with 107 additions and 96 deletions
+8
View File
@@ -1,5 +1,13 @@
# Change Log
## 1.46.2
* Fix saving external files on Android Q and newer
## 1.46.1
* Use cropping limiter settings for image picking too
* Remove extra link on result screen
* Update Turkish translation
## 1.46.0
* Support deep links
* Support "A:" in WIFI codes
+2 -2
View File
@@ -9,8 +9,8 @@ android {
minSdkVersion 9
targetSdkVersion sdk_version
versionCode 87
versionName '1.46.0'
versionCode 89
versionName '1.46.2'
// It's recommended to set this value to the lowest API level
// able to provide all the functionality.
@@ -155,7 +155,7 @@ class CameraActivity : AppCompatActivity() {
resetPreProcessor()
fallbackBuffer = null
saveZoom()
saveCropHandlePos()
detectorView.saveCropHandlePos()
rs.destroy()
}
@@ -489,22 +489,7 @@ class CameraActivity : AppCompatActivity() {
recreatePreprocessor = true
}
detectorView.setPaddingFromWindowInsets()
restoreCropHandlePos()
}
private fun saveCropHandlePos() {
val pos = detectorView.getCropHandlePos()
prefs.cropHandleX = pos.x
prefs.cropHandleY = pos.y
prefs.cropHandleOrientation = detectorView.currentOrientation
}
private fun restoreCropHandlePos() {
detectorView.setCropHandlePos(
prefs.cropHandleX,
prefs.cropHandleY,
prefs.cropHandleOrientation
)
detectorView.restoreCropHandlePos()
}
private fun updateFlashFab(unavailable: Boolean) {
@@ -74,11 +74,7 @@ class PickActivity : AppCompatActivity() {
colorSystemAndToolBars(this@PickActivity)
}
val bitmap = fixTransparency(
rs,
getBitmapFromIntent()
)
val bitmap = fixTransparency(rs, getBitmapFromIntent())
if (bitmap == null) {
applicationContext.toast(R.string.error_no_content)
finish()
@@ -97,6 +93,7 @@ class PickActivity : AppCompatActivity() {
scanWithinBounds(bitmap)
}
detectorView.setPaddingFromWindowInsets()
detectorView.restoreCropHandlePos()
findViewById(R.id.scan).setOnClickListener {
showResult()
@@ -159,6 +156,7 @@ class PickActivity : AppCompatActivity() {
override fun onDestroy() {
super.onDestroy()
detectorView.saveCropHandlePos()
rs.destroy()
}
@@ -194,12 +192,13 @@ class PickActivity : AppCompatActivity() {
}
private fun showResult() {
result?.let {
showResult(this, it, vibrator)
val r = result
if (r != null) {
showResult(this, r, vibrator)
finish()
return
} else {
applicationContext.toast(R.string.no_barcode_found)
}
applicationContext.toast(R.string.no_barcode_found)
}
}
@@ -152,7 +152,7 @@ class BarcodeFragment : Fragment() {
@SuppressLint("InflateParams")
private fun askForFileNameAndSave(fileType: FileType) {
val ac = activity ?: return
// write permission is only required before Android Q
// Write permission is only required before Android Q.
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q &&
!hasWritePermission(ac) { askForFileNameAndSave(fileType) }
) {
@@ -6,7 +6,6 @@ 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
@@ -38,7 +37,6 @@ class DecodeFragment : Fragment() {
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
@@ -86,7 +84,6 @@ 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) {
@@ -118,8 +115,6 @@ 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
@@ -349,7 +344,10 @@ class DecodeFragment : Fragment() {
private fun askForFileNameAndSave(raw: ByteArray) {
val ac = activity ?: return
if (!hasWritePermission(ac) { askForFileNameAndSave(raw) }) {
// Write permission is only required before Android Q.
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q &&
!hasWritePermission(ac) { askForFileNameAndSave(raw) }
) {
return
}
scope.launch(Dispatchers.Main) {
@@ -364,7 +364,10 @@ class HistoryFragment : Fragment() {
scope.launch {
val ac = activity ?: return@launch
progressView.useVisibility {
if (!hasWritePermission(ac) { askToExportToFile() }) {
// Write permission is only required before Android Q.
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q &&
!hasWritePermission(ac) { askToExportToFile() }
) {
return@useVisibility
}
val options = context.resources.getStringArray(
@@ -21,12 +21,12 @@ 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 currentOrientation = resources.configuration.orientation
private val invalidateRunnable: Runnable = Runnable {
coordinatesLast = 0
invalidate()
@@ -78,7 +78,28 @@ class DetectorView : View {
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) :
super(context, attrs, defStyleAttr)
fun setCropHandlePos(x: Int, y: Int, orientation: Int) {
fun saveCropHandlePos() {
val pos = getCropHandlePos()
prefs.cropHandleX = pos.x
prefs.cropHandleY = pos.y
prefs.cropHandleOrientation = currentOrientation
}
private fun getCropHandlePos() = if (handleActive) {
handlePos
} else {
Point(-1, -1)
}
fun restoreCropHandlePos() {
setCropHandlePos(
prefs.cropHandleX,
prefs.cropHandleY,
prefs.cropHandleOrientation
)
}
private fun setCropHandlePos(x: Int, y: Int, orientation: Int) {
if (orientation == currentOrientation) {
handlePos.set(x, y)
} else {
@@ -89,14 +110,8 @@ class DetectorView : View {
}
}
fun getCropHandlePos() = if (handleActive) {
handlePos
} else {
Point(-1, -1)
}
fun update(numberOfResultPoints: Int) {
coordinatesLast = numberOfResultPoints * 2
fun update(numberOfCoordinates: Int) {
coordinatesLast = numberOfCoordinates
invalidate()
removeCallbacks(invalidateRunnable)
postDelayed(invalidateRunnable, 500)
+4 -15
View File
@@ -51,10 +51,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/data"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp" />
android:layout_marginRight="16dp"/>
<TextView
android:id="@+id/hex"
android:layout_width="match_parent"
@@ -65,20 +65,9 @@
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="16dp"
android:textSize="12sp"
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" />
tools:text="54 65 73 74 20 51 52 20 Test QR\n43 6F 64 65 Code"/>
</RelativeLayout>
</de.markusfisch.android.binaryeye.widget.ConfinedScrollView>
<android.support.design.widget.CoordinatorLayout
@@ -89,6 +78,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>
+33 -33
View File
@@ -1,6 +1,6 @@
<resources>
<string name="no_camera_no_fun">Bu uygulama kamera izni olmadan anlamsızdır. Güle güle.</string>
<string name="camera_error">Kameraya erişilemiyor, lütfen yeniden dene</string>
<string name="camera_error">Kameraya erişilemiyor, lütfen yeniden deneyin</string>
<string name="scan_code">Kod tara</string>
<string name="compose_barcode">Barkod yarat</string>
<string name="decode_barcode">Barkod çöz</string>
@@ -43,13 +43,13 @@
<string name="info">Bilgi</string>
<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="bulk_mode_summary">Her zaman sürekli taramaya başla.</string>
<string name="bulk_mode_delay">Sürekli taramalar arasındaki gecikme</string>
<string name="quarter_second">Çeyrek saniye</string>
<string name="half_second">Yarım saniye</string>
<string name="a_second">Bir saniye</string>
<string name="two_seconds">İki saniye</string>
<string name="five_seconds">Beş saniye</string>
<string name="history">Geçmiş</string>
<string name="preferences">Tercihler</string>
<string name="scan_category">Tarama</string>
@@ -59,15 +59,15 @@
<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="barcode_formats">Barkod biçimleri</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>
<string name="auto_rotate_summary">Yatay 1B barkodları tanımak için kamera çerçevesini kendiliğinden döndür. Bu, aygıta bağlı olarak performansı etkileyebilir.</string>
<string name="try_harder">Kesinlik için okuyucuyu iyileştir</string>
<string name="try_harder_summary">Okuması zor barkodlar için bu seçeneği etkinleştir. Performansı etkileyecektir.</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="try_harder_summary">Okuması zor barkodlar için bu seçeneği etkinleştirin. Performansı etkileyecektir.</string>
<string name="show_toast_in_bulk_mode">Sürekli kipte verileri göster</string>
<string name="show_toast_in_bulk_mode_summary">Sürekli tarama yaparken taranan verileri kısaca göster.</string>
<string name="vibrate">Tanıyınca titre</string>
<string name="vibrate_summary">Kod tanındığında aygıtınızın titremesini istiyorsanız bunu etkinleştirin.</string>
<string name="use_history">Tarama geçmişini kaydet</string>
@@ -82,16 +82,16 @@
<string name="show_meta_data_summary">Taranan barkod ile ilgili ek veriyi göster</string>
<string name="show_hex_dump">Hex yığınını göster</string>
<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="close_automatically">Kopyala/Paylaş\'tan sonra geri dön</string>
<string name="close_automatically_summary">Okunan içeriği kopyaladıktan veya paylaştıktan sonra kendiliğinden tarama ekranına dön.</string>
<string name="default_search_engine">Bilinmeyen verileri şurada aç</string>
<string name="always_ask">Her zaman sor</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="clear_network_suggestions">Ağ önerilerini temizle</string>
<string name="clear_network_suggestions_summary">Bu uygulama tarafından daha önce sağlanan tüm ağ önerilerini kaldır.</string>
<string name="really_remove_all_networks">Tüm ağlar gerçekten kaldırılsın mı?</string>
<string name="clear_network_suggestions_success">Ağ önerileri temizlendi</string>
<string name="clear_network_suggestions_nothing_to_remove">Kaldırılacak bir şey yok</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>
@@ -99,7 +99,7 @@
<string name="send_type_get_query_string">GET ile tam sorgu dizgesi</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\'yi sına</string>
<string name="really_remove_scan">Tarama gerçekten silinsin mi?</string>
<string name="really_remove_all_scans">Tüm taramalar gerçekten silinsin mi?</string>
<string name="really_remove_selected_scans">Seçili taramalar gerçekten silinsin mi?</string>
@@ -134,7 +134,7 @@
<string name="search_web">Web\'i ara</string>
<string name="search_scan">Taramayı ara</string>
<string name="export_to_file">Dosyaya dışa aktar</string>
<string name="export_as">Ne olarak dışa aktar?</string>
<string name="export_as">Ne olarak dışa aktarılsın?</string>
<string name="export_csv_comma">Virgüller ile CSV</string>
<string name="export_csv_semicolon">Noktalı virgüller ile CSV</string>
<string name="export_json">JSON olarak dışa aktar</string>
@@ -147,14 +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>
<string name="entry_type">Tür</string>
<string name="wifi_network">Wi-Fi ağı</string>
<string name="wifi_ssid">Ad</string>
<string name="wifi_type">Kimlik doğrulama türü</string>
<string name="wifi_password">Parola</string>
<string name="wifi_hidden">Gizli ağ</string>
<string name="wifi_eap">EAP yöntemi</string>
<string name="wifi_anonymous_identity">Anonim kimlik</string>
<string name="wifi_identity">Kimlik</string>
<string name="wifi_phase2">2. aşama yöntemi</string>
</resources>
+2 -2
View File
@@ -1,7 +1,7 @@
buildscript {
ext {
kotlin_version = '1.5.30'
tools_version = '7.0.3'
kotlin_version = '1.6.0'
tools_version = '7.0.4'
build_tools_version = '30.0.2'
sdk_version = 30
support_version = '25.3.1'
@@ -0,0 +1,10 @@
* 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
@@ -0,0 +1,4 @@
* Use cropping limiter settings for image picking too
* Remove extra link on result screen
* Update Turkish translation