Recently Written · git

subread-dictionary

Pop-up dictionary for Android that reads Yomitan dictionaries, with local audio

git clone https://github.com/equwal/subread-dictionary

Log | Files | Refs


commit 2298839156c5fd0122902bdeb52ab4b0b0dcd347
equwal <13551856+equwal@users.noreply.github.com>
2026-09-26 13:58:28 -0700

Add a More apps section with links to the other apps

The end of the settings screen shows the other sites and apps of the
author. A tap on an entry opens its page in the browser.

The Google Play build (-PplayStore=true) does not show the section. It
does not show the Ko-fi link either.

Add a More projects section to the README.

 README.md                                          | 23 +++++++++++++++
 .../space/subread/dictionary/MainActivity.kt       | 21 ++++++++++++++
 .../kotlin/space/subread/dictionary/MoreApps.kt    | 33 ++++++++++++++++++++++
 app/src/main/res/values/strings.xml                | 30 ++++++++++++++++++++
 4 files changed, 107 insertions(+)
diff --git a/README.md b/README.md
index 75808f0..6804768 100644
--- a/README.md
+++ b/README.md
@@ -86,6 +86,29 @@ imported dictionaries of the debug build are gone after it.
 
 `-PplayStore=true` leaves the Ko-fi link out of the build for Google Play.
 
+## More projects
+
+- [SubRead](https://subread.space/): read along with an audiobook, in the browser.
+  Also [for Android](https://github.com/equwal/subread-android/releases/latest),
+  [for YouTube](https://github.com/equwal/subread-extension/releases/latest)
+  and [for KOReader](https://github.com/equwal/subread.koplugin).
+- [SubRead Overlay](https://github.com/equwal/subread-overlay/releases/latest): subtitle lines over any Android media player.
+- [SubRead Anki](https://github.com/equwal/subread-anki): one tap makes an Anki card from any Android app.
+- [Subrep](https://github.com/equwal/subrep-android/releases/latest): live captions of the sound of your phone.
+- [Book Simulator](https://booksimulator.com/): a reading room for Aozora Bunko and Project Gutenberg books.
+- [honjimaku.com](https://honjimaku.com/): subtitles for Japanese audiobooks.
+- [sbm Sync](https://sbmsync.com/): your bookmarks, the same on every device,
+  with [sbm](https://github.com/equwal/sbm) for dmenu,
+  [sbm for Android](https://github.com/equwal/sbm-android/releases/latest)
+  and the [sbm add-on](https://github.com/equwal/sbm-extension/releases/latest) for Firefox and Chrome.
+- [Rebind](https://github.com/equwal/rebind/releases): remap the hardware buttons of e-ink readers and Android,
+  with [Ink Recents](https://github.com/equwal/ink-recents/releases/latest),
+  [Ink Dim](https://github.com/equwal/ink-dim/releases/latest)
+  and [Ink Update](https://github.com/equwal/ink-update/releases/latest).
+- [dickt.store](https://dickt.store/): language-learning tools, flashcards and web toys.
+- [hentaibun.online](https://hentaibun.online/): learn kanbun and kobun.
+- [Recently Written](https://recentlywritten.com/): the blog, and a list of [all projects](https://recentlywritten.com/projects.html).
+
 ## Licence
 
 AGPL-3.0. See `LICENSE`.
diff --git a/app/src/main/kotlin/space/subread/dictionary/MainActivity.kt b/app/src/main/kotlin/space/subread/dictionary/MainActivity.kt
index b59124d..06d0efa 100644
--- a/app/src/main/kotlin/space/subread/dictionary/MainActivity.kt
+++ b/app/src/main/kotlin/space/subread/dictionary/MainActivity.kt
@@ -10,6 +10,9 @@ import android.net.Uri
 import android.os.Bundle
 import android.provider.OpenableColumns
 import android.text.InputType
+import android.text.SpannableString
+import android.text.Spanned
+import android.text.style.UnderlineSpan
 import android.view.View
 import android.widget.Button
 import android.widget.EditText
@@ -155,6 +158,24 @@ class MainActivity : Activity() {
             content.addView(button(getString(R.string.install_anki)) { open(Anki.INSTALL) }, wide())
         }
         if (BuildConfig.DONATE_LINK) content.addView(button(getString(R.string.donate)) { open(KOFI) }, wide())
+        // The Google Play build (-PplayStore=true) has no Ko-fi link, and no More apps either.
+        if (BuildConfig.DONATE_LINK) moreApps()
+    }
+
+    /** The other sites and apps of the same author. A tap on an entry opens its page in the browser. */
+    private fun moreApps() {
+        step(R.string.more_apps, "", null) {}
+        for (app in MORE_APPS) {
+            val name = getString(app.name)
+            content.addView(TextView(this).apply {
+                text = SpannableString("$name\n${getString(app.line)}").apply {
+                    setSpan(UnderlineSpan(), 0, name.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
+                }
+                textSize = 15f
+                setTextColor(Color.BLACK)
+                setOnClickListener { open(app.url) }
+            }, wide(top = 12))
+        }
     }
 
     @Deprecated("The platform Activity has no other result API, and this app has no AndroidX activity.")
diff --git a/app/src/main/kotlin/space/subread/dictionary/MoreApps.kt b/app/src/main/kotlin/space/subread/dictionary/MoreApps.kt
new file mode 100644
index 0000000..1fc1886
--- /dev/null
+++ b/app/src/main/kotlin/space/subread/dictionary/MoreApps.kt
@@ -0,0 +1,33 @@
+package space.subread.dictionary
+
+import androidx.annotation.StringRes
+
+/** One link of the "More apps" section: a name, one line about it, and the page that a tap opens. */
+class MoreApp(@param:StringRes val name: Int, @param:StringRes val line: Int, val url: String)
+
+/**
+ * The other sites and apps of the same author, in the order of the catalog: the sites,
+ * then the Android apps, then the list of all projects. SubRead Dictionary is not in it.
+ */
+val MORE_APPS = listOf(
+    MoreApp(R.string.more_subread, R.string.more_subread_line, "https://subread.space/"),
+    MoreApp(R.string.more_book_simulator, R.string.more_book_simulator_line, "https://booksimulator.com/"),
+    MoreApp(R.string.more_honjimaku, R.string.more_honjimaku_line, "https://honjimaku.com/"),
+    MoreApp(R.string.more_sbm_sync, R.string.more_sbm_sync_line, "https://sbmsync.com/"),
+    MoreApp(R.string.more_subread_android, R.string.more_subread_android_line,
+        "https://github.com/equwal/subread-android/releases/latest"),
+    MoreApp(R.string.more_subread_overlay, R.string.more_subread_overlay_line,
+        "https://github.com/equwal/subread-overlay/releases/latest"),
+    MoreApp(R.string.more_subread_anki, R.string.more_subread_anki_line, "https://github.com/equwal/subread-anki"),
+    MoreApp(R.string.more_subrep, R.string.more_subrep_line,
+        "https://github.com/equwal/subrep-android/releases/latest"),
+    MoreApp(R.string.more_sbm_android, R.string.more_sbm_android_line,
+        "https://github.com/equwal/sbm-android/releases/latest"),
+    MoreApp(R.string.more_rebind, R.string.more_rebind_line, "https://github.com/equwal/rebind/releases"),
+    MoreApp(R.string.more_ink_recents, R.string.more_ink_recents_line,
+        "https://github.com/equwal/ink-recents/releases/latest"),
+    MoreApp(R.string.more_ink_dim, R.string.more_ink_dim_line, "https://github.com/equwal/ink-dim/releases/latest"),
+    MoreApp(R.string.more_ink_update, R.string.more_ink_update_line,
+        "https://github.com/equwal/ink-update/releases/latest"),
+    MoreApp(R.string.more_all_projects, R.string.more_all_projects_line, "https://recentlywritten.com/projects.html"),
+)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index da306f0..ff6cc7c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -64,4 +64,34 @@
     <string name="audio_failed">The audio did not play: %1$s</string>
     <string name="settings">Settings</string>
     <string name="close">Close</string>
+
+    <string name="more_apps">More apps</string>
+    <string name="more_subread">SubRead</string>
+    <string name="more_subread_line">Read along with an audiobook.</string>
+    <string name="more_book_simulator">Book Simulator</string>
+    <string name="more_book_simulator_line">A reading room for Aozora Bunko and Project Gutenberg books.</string>
+    <string name="more_honjimaku">honjimaku.com</string>
+    <string name="more_honjimaku_line">Subtitles for Japanese audiobooks.</string>
+    <string name="more_sbm_sync">sbm Sync</string>
+    <string name="more_sbm_sync_line">Your bookmarks, the same on every device.</string>
+    <string name="more_subread_android">SubRead for Android</string>
+    <string name="more_subread_android_line">Times an audiobook against its ebook on the device.</string>
+    <string name="more_subread_overlay">SubRead Overlay</string>
+    <string name="more_subread_overlay_line">Subtitle lines over any Android media player.</string>
+    <string name="more_subread_anki">SubRead Anki</string>
+    <string name="more_subread_anki_line">One tap makes an Anki card from any app.</string>
+    <string name="more_subrep">Subrep</string>
+    <string name="more_subrep_line">Live captions of the sound of your phone.</string>
+    <string name="more_sbm_android">sbm for Android</string>
+    <string name="more_sbm_android_line">Fuzzy search for your bookmarks.</string>
+    <string name="more_rebind">Rebind</string>
+    <string name="more_rebind_line">Remap the hardware buttons of e-ink readers and Android.</string>
+    <string name="more_ink_recents">Ink Recents</string>
+    <string name="more_ink_recents_line">A recent-apps switcher for e-ink.</string>
+    <string name="more_ink_dim">Ink Dim</string>
+    <string name="more_ink_dim_line">Frontlight below the lowest system level.</string>
+    <string name="more_ink_update">Ink Update</string>
+    <string name="more_ink_update_line">Tells you when Rebind and its extensions update.</string>
+    <string name="more_all_projects">All projects</string>
+    <string name="more_all_projects_line">Everything, with source code.</string>
 </resources>