0
0
mirror of https://github.com/markusfisch/BinaryEye.git synced 2024-09-19 19:42:18 +02:00

Add an option to show a checksum

For the decoded content. On request of #452.
This commit is contained in:
Markus Fisch 2024-05-10 20:37:32 +02:00
parent c2071d8d81
commit e4f17b9bdf
31 changed files with 143 additions and 5 deletions

View File

@ -6,8 +6,11 @@ import android.support.design.widget.FloatingActionButton
import android.support.v4.app.Fragment
import android.text.Editable
import android.text.Html
import android.text.Spannable
import android.text.SpannableString
import android.text.TextWatcher
import android.text.method.LinkMovementMethod
import android.text.style.TypefaceSpan
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuInflater
@ -49,6 +52,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.security.MessageDigest
import kotlin.math.roundToInt
class DecodeFragment : Fragment() {
@ -260,12 +264,19 @@ class DecodeFragment : Fragment() {
)
}
}
dataView.fillDataView(text)
dataView.fillDataView(text, bytes)
stampView.setTrackingLink(bytes, format)
}
private fun TableLayout.fillDataView(text: String) {
val items = LinkedHashMap<Int, String?>()
private fun TableLayout.fillDataView(text: String, bytes: ByteArray) {
val items = LinkedHashMap<Int, CharSequence?>()
when (prefs.showChecksum) {
"CRC4" -> items[R.string.crc4] = String.format("%X", crc4(bytes))
"MD5" -> items[R.string.md5] = bytes.md5().toHexString().fold()
"SHA1" -> items[R.string.sha1] = bytes.sha1().toHexString().fold()
"SHA256" -> items[R.string.sha256] = bytes.sha256().toHexString().fold()
else -> Unit
}
if (action is WifiAction) {
WifiConnector.parseMap(text)?.let { wifiData ->
items.putAll(
@ -287,7 +298,7 @@ class DecodeFragment : Fragment() {
}
private fun TableLayout.fillMetaView(scan: Scan) {
val items = linkedMapOf(
val items = linkedMapOf<Int, CharSequence?>(
R.string.error_correction_level to scan.errorCorrectionLevel,
R.string.sequence_size to scan.sequenceSize.positiveToString(),
R.string.sequence_index to scan.sequenceIndex.positiveToString(),
@ -317,7 +328,7 @@ class DecodeFragment : Fragment() {
}
private fun TableLayout.fill(
items: LinkedHashMap<Int, String?>
items: LinkedHashMap<Int, CharSequence?>
) {
removeAllViews()
visibility = if (items.isEmpty()) View.GONE else {
@ -643,3 +654,35 @@ private fun String.fromHtml() = if (
@Suppress("DEPRECATION")
Html.fromHtml(this)
}
private fun ByteArray.md5(): ByteArray = MessageDigest.getInstance("MD5").run {
update(this@md5)
digest()
}
private fun ByteArray.sha1(): ByteArray = MessageDigest.getInstance("SHA-1").run {
update(this@sha1)
digest()
}
private fun ByteArray.sha256(): ByteArray = MessageDigest.getInstance("SHA-256").run {
update(this@sha256)
digest()
}
private fun String.fold(): CharSequence {
val l = length
return if (l > 10) {
val half = l / 2
val s = substring(0, half) + "\n" + substring(half)
SpannableString(s).apply {
setSpan(
TypefaceSpan("monospace"),
0, s.length,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
}
} else {
this
}
}

View File

@ -133,6 +133,11 @@ class Preferences {
apply(SHOW_HEX_DUMP, value)
field = value
}
var showChecksum = ""
set(value) {
apply(SHOW_CHECKSUM, value)
field = value
}
var showRecreation = true
set(value) {
apply(SHOW_RECREATION, value)
@ -276,6 +281,9 @@ class Preferences {
)
showMetaData = preferences.getBoolean(SHOW_META_DATA, showMetaData)
showHexDump = preferences.getBoolean(SHOW_HEX_DUMP, showHexDump)
preferences.getString(SHOW_CHECKSUM, showChecksum)?.also {
showChecksum = it
}
showRecreation = preferences.getBoolean(SHOW_RECREATION, showRecreation)
closeAutomatically = preferences.getBoolean(
CLOSE_AUTOMATICALLY,
@ -410,6 +418,7 @@ class Preferences {
private const val COPY_IMMEDIATELY = "copy_immediately"
private const val SHOW_META_DATA = "show_meta_data"
private const val SHOW_HEX_DUMP = "show_hex_dump"
private const val SHOW_CHECKSUM = "show_checksum"
private const val SHOW_RECREATION = "show_recreation"
private const val CLOSE_AUTOMATICALLY = "close_automatically"
private const val DEFAULT_SEARCH_URL = "default_search_url"

View File

@ -106,6 +106,8 @@
<string name="show_meta_data_summary">Показване на допълнителни данни за сканирания баркод.</string>
<string name="show_hex_dump">Показване на шестнадесетичен дъмп</string>
<string name="show_hex_dump_summary">Показване на шестнадесетичен дъмп на сканираното съдържание.</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Показване на пресъздаден баркод</string>
<string name="show_recreation_summary">Създай и покажи баркод отново от прочетеното съдържание, ако е възможно.</string>
<string name="close_automatically">Върщане се след Копиране/Споделяне</string>

View File

@ -106,6 +106,8 @@
<string name="show_meta_data_summary">সনাক্তকৃত বারকোড নিয়ে অতিরিক্ত তথ্য দেখাও।</string>
<string name="show_hex_dump">ষড়(hex) সংকেত দেখাও</string>
<string name="show_hex_dump_summary">পড়া তথ্যের ষড় সংকেত দেখাও</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Show recreated barcode</string>
<string name="show_recreation_summary">Recreate and show barcode from read content if possible.</string>
<string name="close_automatically">অনুলিপি/ভাগ করার পরে পিছনে যাও</string>

View File

@ -108,6 +108,8 @@
<string name="show_meta_data_summary">Zobrazí další data o naskenovaném čárovém kódu.</string>
<string name="show_hex_dump">Zobrazit hex dump</string>
<string name="show_hex_dump_summary">Zobrazí hex dump naskenovaného obsahu.</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Zobrazit zrekonstruovaný kód</string>
<string name="show_recreation_summary">Zrekonstruovat a zobrazit čárový kód z přečteného obrazu, pokud je to možné.</string>
<string name="close_automatically">Vrátit se po zkopírování/sdílení</string>

View File

@ -106,6 +106,8 @@
<string name="show_meta_data_summary">Vis yderligere data om den scannede stregkode.</string>
<string name="show_hex_dump">Vis hex-dump</string>
<string name="show_hex_dump_summary">Vis et hex-dump af det scannede indhold.</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Vis genskabt stregkode</string>
<string name="show_recreation_summary">Genskab og vis stregkode fra læst indhold, hvis det er muligt.</string>
<string name="close_automatically">Gå tilbage efter Kopier/Del</string>

View File

@ -106,6 +106,8 @@
<string name="show_meta_data_summary">Zusätzliche Daten über den eingelesenen Barcode anzeigen.</string>
<string name="show_hex_dump">Hex Dump anzeigen</string>
<string name="show_hex_dump_summary">Zeigt einen Hexdump des eingelesenen Inhalts an.</string>
<string name="show_checksum">Prüfsumme anzeigen</string>
<string name="no_checksum">Keine Prüfsumme anzeigen</string>
<string name="show_recreation">Wiederhergestellten Barcode anzeigen</string>
<string name="show_recreation_summary">Barcode aus dem gelesenen Inhalt wiederherstellen und anzeigen, wenn möglich.</string>
<string name="close_automatically">Automatisch zurückkehren</string>

View File

@ -106,6 +106,8 @@
<string name="show_meta_data_summary">Muestra datos adicionales del código escaneado.</string>
<string name="show_hex_dump">Mostrar volcado hexadecimal</string>
<string name="show_hex_dump_summary">Muestra un volcado hexadecimal del contenido escaneado.</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Mostrar reconstrucción del código</string>
<string name="show_recreation_summary">Reconstruye y muestra el código de barras desde el contenido leído si es posible.</string>
<string name="close_automatically">Retroceder tras Copiar/Compartir</string>

View File

@ -106,6 +106,8 @@
<string name="show_meta_data_summary">نمایش داده‌های اضافی در مورد بارکد پویش شده.</string>
<string name="show_hex_dump">نمایش کد هگز استخراج شده</string>
<string name="show_hex_dump_summary">نمایش کد هگز استخراج شده از محتویات پویش شده.</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Show recreated barcode</string>
<string name="show_recreation_summary">Recreate and show barcode from read content if possible.</string>
<string name="close_automatically">بازگشت پس از رونوشت یا هم‌رسانی</string>

View File

@ -106,6 +106,8 @@
<string name="show_meta_data_summary">Afficher des informations supplémentaires sur le code-barres scanné.</string>
<string name="show_hex_dump">Afficher le dump hexadécimal</string>
<string name="show_hex_dump_summary">Afficher le dump hexadécimal du contenu scanné.</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Afficher le code-barres recréé</string>
<string name="show_recreation_summary">Recréer et afficher, si possible, le code-barres à partir du contenu scanné.</string>
<string name="close_automatically">Revenir après une copie/partage</string>

View File

@ -106,6 +106,8 @@
<string name="show_meta_data_summary">További adatok megjelenítése a beolvasott vonalkódokról.</string>
<string name="show_hex_dump">Hexakiírás megjelenítése</string>
<string name="show_hex_dump_summary">A beolvasott tartalom hexakiírásának megjelenítése.</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Show recreated barcode</string>
<string name="show_recreation_summary">Recreate and show barcode from read content if possible.</string>
<string name="close_automatically">Ugrás vissza másolás vagy megosztás után</string>

View File

@ -105,6 +105,8 @@
<string name="show_meta_data_summary">Tampilkan data tambahan tentang barcode yang dipindai.</string>
<string name="show_hex_dump">Tampilkan hex dump</string>
<string name="show_hex_dump_summary">Tampilkan hex dump dari konten hasil pemindaian.</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Tampilkan barcode yang dibuat ulang</string>
<string name="show_recreation_summary">Buat ulang dan tampilkan barcode dari isi konten jika memungkinkan.</string>
<string name="close_automatically">Kembali setelah Salin/Berbagi</string>

View File

@ -106,6 +106,8 @@
<string name="show_meta_data_summary">Visualizza dati aggiuntivi codice a barre scansionato.</string>
<string name="show_hex_dump">Visualizza dump esadecimale</string>
<string name="show_hex_dump_summary">Visualizza un dump esadecimale dei contenuti scansionati.</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Visualizza codice a barre ricreato</string>
<string name="show_recreation_summary">Ricrea e visualizza, se possibile, il codice a barre, dal contenuto letto.</string>
<string name="close_automatically">Vai indietro dopo la copia/condivisione</string>

View File

@ -105,6 +105,8 @@
<string name="show_meta_data_summary">スキャンされたバーコードの追加データを確認できるようにします。</string>
<string name="show_hex_dump">16進数を表示</string>
<string name="show_hex_dump_summary">スキャンされたコンテンツの16進数データを確認できるようにします。</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">再生成したバーコードを表示</string>
<string name="show_recreation_summary">可能であれば、読み取ったコンテンツからバーコードを再生成して表示します。</string>
<string name="close_automatically">コピー/共有後に戻る</string>

View File

@ -106,6 +106,8 @@
<string name="show_meta_data_summary">სკანირებულ შტრიხ-კოდებზე დამატებითი ინფორმაციის ჩვენება.</string>
<string name="show_hex_dump">თექვსმეტობითი dump-ის ჩვენება</string>
<string name="show_hex_dump_summary">სკანირებული შტრიხ-კოდის კონტენტის თექვსმეტობითი dump-ის ჩვენება.</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Show recreated barcode</string>
<string name="show_recreation_summary">Recreate and show barcode from read content if possible.</string>
<string name="close_automatically">Go back after Copy/Share</string>

View File

@ -105,6 +105,8 @@
<string name="show_meta_data_summary">Show additional data about the scanned barcode.</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="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Show recreated barcode</string>
<string name="show_recreation_summary">Recreate and show barcode from read content if possible.</string>
<string name="close_automatically">Go back after Copy/Share</string>

View File

@ -106,6 +106,8 @@
<string name="show_meta_data_summary">Toon extra gegevens over de gescande barcode.</string>
<string name="show_hex_dump">Hex-dump tonen</string>
<string name="show_hex_dump_summary">Hex-dump van de gescande inhoud tonen.</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Show recreated barcode</string>
<string name="show_recreation_summary">Recreate and show barcode from read content if possible.</string>
<string name="close_automatically">Teruggaan na kopiëren/delen</string>

View File

@ -76,6 +76,8 @@
</plurals>
<string name="show_hex_dump">Pokazuj zrzut szesnastkowy</string>
<string name="show_hex_dump_summary">Pokaż zeskanowaną zawartośc w postaci szesnastkowej</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Show recreated barcode</string>
<string name="show_recreation_summary">Recreate and show barcode from read content if possible.</string>
<string name="close_automatically">Wróć po skopiowaniu/udostępnieniu</string>

View File

@ -106,6 +106,8 @@
<string name="show_meta_data_summary">Mostrar dados adicionais de código digitalizado.</string>
<string name="show_hex_dump">Mostrar impressão hexadecimal</string>
<string name="show_hex_dump_summary">Mostrar impressão hexadecimal de conteúdo digitalizado.</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Mostrar código recuperado</string>
<string name="show_recreation_summary">Se possível, recupere e mostre código do conteúdo lido.</string>
<string name="close_automatically">Voltar após copiar/compartilhar</string>

View File

@ -108,6 +108,8 @@
<string name="show_meta_data_summary">Показывать дополнительную информацию о считанных штрих-кодах.</string>
<string name="show_hex_dump">Показывать шестнадцатеричный дамп</string>
<string name="show_hex_dump_summary">Показывать шестнадцатеричный дамп содержимого считанного штрих-кода.</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Показывать восстановленный штрих-код</string>
<string name="show_recreation_summary">Показывать штрих-код, восстановленный из считанного содержимого.</string>
<string name="close_automatically">Возврат после копирования/обмена</string>

View File

@ -106,6 +106,8 @@
<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="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Yeniden oluşturulan barkodu göster</string>
<string name="show_recreation_summary">Mümkünse okunan içerikten barkodu yeniden oluştur ve göster.</string>
<string name="close_automatically">Kopyala/Paylaş\'tan sonra geri dön</string>

View File

@ -107,6 +107,8 @@
<string name="show_meta_data_summary">Показувати додаткові дані про відскановані штрих-коди.</string>
<string name="show_hex_dump">Показувати шістнадцятковий дамп</string>
<string name="show_hex_dump_summary">Показувати шістнадцятковий дамп відсканованого вмісту.</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Показати відновлений штрих-код</string>
<string name="show_recreation_summary">Відтворити і показати штрих-код із прочитаного вмісту, якщо це можливо.</string>
<string name="close_automatically">Повернутися після копіювання/поширення</string>

View File

@ -105,6 +105,8 @@
<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="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Show recreated barcode</string>
<string name="show_recreation_summary">Recreate and show barcode from read content if possible.</string>
<string name="close_automatically">Quay lại sau khi Sao chép/Chia sẻ</string>

View File

@ -105,6 +105,8 @@
<string name="show_meta_data_summary">显示已扫描条码的额外数据</string>
<string name="show_hex_dump">显示16进制数据</string>
<string name="show_hex_dump_summary">显示已扫描条码的16进制数据</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">显示重新创建的条码</string>
<string name="show_recreation_summary">如果可以,就从读取内容中重新创建并显示条码。</string>
<string name="close_automatically">复制/分享后自动返回</string>

View File

@ -105,6 +105,8 @@
<string name="show_meta_data_summary">顯示已掃描條碼的額外資訊</string>
<string name="show_hex_dump">顯示 Hex dump</string>
<string name="show_hex_dump_summary">顯示已掃描條碼的十六進位轉儲資訊</string>
<string name="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">顯示重新產生的條碼</string>
<string name="show_recreation_summary">如果可以,從讀取內容中重新建立並顯示條碼</string>
<string name="close_automatically">複製 / 分享後自動返回</string>

View File

@ -4,4 +4,8 @@
<string name="url_hint_add_content" translatable="false">http://example.com/?content=</string>
<string name="project_url" translatable="false">https://github.com/markusfisch/BinaryEye</string>
<string name="no_bluetooth_hosts_paired_value" translatable="false" />
<string name="crc4" translatable="false">CRC4</string>
<string name="md5" translatable="false">MD5</string>
<string name="sha1" translatable="false">SHA1</string>
<string name="sha256" translatable="false">SHA256</string>
</resources>

View File

@ -0,0 +1,16 @@
<resources>
<string-array name="checksum_names">
<item>@string/no_checksum</item>
<item>@string/crc4</item>
<item>@string/md5</item>
<item>@string/sha1</item>
<item>@string/sha256</item>
</string-array>
<string-array name="checksum_values">
<item></item>
<item>CRC4</item>
<item>MD5</item>
<item>SHA1</item>
<item>SHA256</item>
</string-array>
</resources>

View File

@ -106,6 +106,8 @@
<string name="show_meta_data_summary">Show additional data about the scanned barcode.</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="show_checksum">Show checksum</string>
<string name="no_checksum">No checksum</string>
<string name="show_recreation">Show recreated barcode</string>
<string name="show_recreation_summary">Recreate and show barcode from read content if possible.</string>
<string name="close_automatically">Go back after Copy/Share</string>

View File

@ -120,6 +120,12 @@
android:key="show_hex_dump"
android:title="@string/show_hex_dump"
android:summary="@string/show_hex_dump_summary"/>
<ListPreference
android:key="show_checksum"
android:title="@string/show_checksum"
android:entries="@array/checksum_names"
android:entryValues="@array/checksum_values"
android:defaultValue="@string/no_checksum"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="true"
android:key="show_recreation"

View File

@ -120,6 +120,12 @@
android:key="show_hex_dump"
android:title="@string/show_hex_dump"
android:summary="@string/show_hex_dump_summary"/>
<ListPreference
android:key="show_checksum"
android:title="@string/show_checksum"
android:entries="@array/checksum_names"
android:entryValues="@array/checksum_values"
android:defaultValue="@string/no_checksum"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="true"
android:key="show_recreation"

View File

@ -115,6 +115,12 @@
android:key="show_hex_dump"
android:title="@string/show_hex_dump"
android:summary="@string/show_hex_dump_summary"/>
<ListPreference
android:key="show_checksum"
android:title="@string/show_checksum"
android:entries="@array/checksum_names"
android:entryValues="@array/checksum_values"
android:defaultValue="@string/no_checksum"/>
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="true"
android:key="show_recreation"