From b908ea2dd1c26e4c265e925e87e675a2537eb90a Mon Sep 17 00:00:00 2001 From: Dave Craig Date: Thu, 9 Jul 2026 15:32:32 +0100 Subject: [PATCH 01/23] Update docs on branches and github actions We moved the multiplatform branch to main and so we needed to rejig. --- docs/developers/branch-strategy.md | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/docs/developers/branch-strategy.md b/docs/developers/branch-strategy.md index e840c7e8d..5dd8e68c4 100644 --- a/docs/developers/branch-strategy.md +++ b/docs/developers/branch-strategy.md @@ -11,18 +11,17 @@ This page describes which branches are active, what each is for, and how the CI ## Today -There are three branches a contributor needs to know about: +There are two branches a contributor needs to know about: -| Branch | Purpose | -|-----------------|------------------------------------------------------------------------------------------------------------| -| `v1.0` | Active maintenance branch for the 1.0.x line. All bug fixes that need to ship to users land here. | -| `main` | The branch the 1.0 release was cut from. Receives no new feature work and is being prepared for the KMP cutover (see below). | -| `multiplatform` | Work-in-progress port to Kotlin Multiplatform. Not yet a release target. Will replace `main` (see below). | +| Branch | Purpose | +|-------------------------|-------------------------------------------------------------------------------------------------------------| +| `v1.0` | Active maintenance branch for the 1.x.x line. All bug fixes that need to ship to users in v1.x.x land here. | +| `main` | Work-in-progress port to Kotlin Multiplatform for iOS and Android. | ### Where to send pull requests * **Bug fixes for the shipped 1.0.x app** — open the PR against `v1.0`. -* **KMP work** — open the PR against `multiplatform` for now. After the cutover described below, KMP PRs will target `main`. +* **KMP work** — open the PR against `main` for now. ### What CI runs where @@ -34,18 +33,3 @@ The workflow file that GitHub uses to decide whether to trigger is the one on th * `build-app.yaml` and `run-maestro-tests.yaml` — manual (`workflow_dispatch`) only. Pick the branch when you run them. See [GitHub actions]({% link developers/actions.md %}) for the per-workflow detail. - -## Upcoming: KMP cutover - -The `multiplatform` branch will soon be **force-pushed onto `main`**. After that: - -* `main` becomes the KMP development branch. All future KMP work — new features, refactors, dependency bumps — happens there. -* Every workflow on `main` builds **both Android and iOS** from the same source. PR tests, nightly builds and release builds all produce both platforms, and the matrices/artifact names in `nightly.yaml` and `build-app.yaml` will expand accordingly. -* `v1.0` continues to exist as the Android-only maintenance branch for the 1.0.x line. Critical fixes for shipped users will keep landing on `v1.0` until 1.0 reaches end of life. -* The `multiplatform` branch goes away once the cutover is complete. - -### Things to be aware of around the cutover - -* It is a **force-push**, not a merge. The history of `main` as it exists today will be overwritten. Anyone with local clones will need to reset their `main` to match the new remote (`git fetch origin && git reset --hard origin/main`). Do not try to rebase old `main` work onto the new `main` — the histories are unrelated. -* Any open PRs targeting `main` at the time of the cutover should be reviewed and either merged before the cutover or closed and re-opened against the appropriate branch afterwards. -* The CI configuration on `main` will be inherited from whatever the `multiplatform` branch had at the moment of the force-push. The nightly matrix and other workflow tweaks made for the v1.0 maintenance window may need to be re-applied to the new `main` afterwards. From 08a3ca464827266da352098ed939fbb309cef02e Mon Sep 17 00:00:00 2001 From: Dave Craig Date: Thu, 9 Jul 2026 15:42:48 +0100 Subject: [PATCH 02/23] More docs updating for branch changes --- docs/developers/branch-strategy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/developers/branch-strategy.md b/docs/developers/branch-strategy.md index 5dd8e68c4..797624c78 100644 --- a/docs/developers/branch-strategy.md +++ b/docs/developers/branch-strategy.md @@ -7,7 +7,7 @@ has_toc: false # Branch strategy -This page describes which branches are active, what each is for, and how the CI workflows are wired to them. It also describes the upcoming switch to Kotlin Multiplatform (KMP) on `main`. +This page describes which branches are active, what each is for, and how the CI workflows are wired to them. ## Today From 73244a90f9d0151b82d1db0bee9e0ef26aa7804b Mon Sep 17 00:00:00 2001 From: Dave Craig Date: Sat, 11 Jul 2026 14:01:12 +0100 Subject: [PATCH 03/23] Reinstate safe mode for iOS screens Ignoring the safe mode resulted in parts of the screen being drawn behind camera slots etc. --- iosApp/iosApp/iOSApp.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/iosApp/iosApp/iOSApp.swift b/iosApp/iosApp/iOSApp.swift index d46d83463..b2d378cdf 100644 --- a/iosApp/iosApp/iOSApp.swift +++ b/iosApp/iosApp/iOSApp.swift @@ -17,7 +17,6 @@ struct iOSApp: App { WindowGroup { ZStack { ComposeView() - .ignoresSafeArea(.all) .onOpenURL { url in IntentBridge.shared.handle(url: url) } From 013fa15a7703b45ed474f26af3ee9e7f9ca3bf8e Mon Sep 17 00:00:00 2001 From: Dave Craig Date: Mon, 13 Jul 2026 10:06:05 +0100 Subject: [PATCH 04/23] Debugging iOS runner --- .github/workflows/run-tests.yaml | 4 ++-- iosApp/project.yml | 2 +- .../screens/onboarding/audiobeacons/AudioBeacons.kt | 8 ++------ 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index 6c4ee6d31..4d32ffe27 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -155,7 +155,7 @@ jobs: # test sources to catch Kotlin/iOS errors; the XCTest step below # exercises the linked code via xcodebuild. - name: Compile shared Kotlin/Native tests for iOS simulator - run: ./gradlew :shared:compileTestKotlinIosSimulatorArm64 + run: ./gradlew --configure-on-demand :shared:compileTestKotlinIosSimulatorArm64 # The runner image does not always pre-register a concrete simulator # device (xcodebuild only sees the "Any iOS Simulator" placeholder), so @@ -274,7 +274,7 @@ jobs: - name: Boot simulator run: | - xcrun simctl boot "$SIMULATOR_UDID" || true + open -a Simulator --args -CurrentDeviceUDID "$SIMULATOR_UDID" xcrun simctl bootstatus "$SIMULATOR_UDID" -b - name: Build iOS app for simulator diff --git a/iosApp/project.yml b/iosApp/project.yml index 642354662..be3570794 100644 --- a/iosApp/project.yml +++ b/iosApp/project.yml @@ -133,7 +133,7 @@ targets: - name: "Build Kotlin Framework" script: | cd "$SRCROOT/.." - ./gradlew :shared:embedAndSignAppleFrameworkForXcode + ./gradlew --configure-on-demand :shared:embedAndSignAppleFrameworkForXcode basedOnDependencyAnalysis: false iosAppTests: diff --git a/shared/src/commonMain/kotlin/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeacons.kt b/shared/src/commonMain/kotlin/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeacons.kt index 167944429..edc82cca6 100644 --- a/shared/src/commonMain/kotlin/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeacons.kt +++ b/shared/src/commonMain/kotlin/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeacons.kt @@ -8,11 +8,8 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.requiredHeight -import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.items import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll @@ -133,14 +130,13 @@ fun AudioBeacons( ) Spacer(modifier = Modifier.height(spacing.large)) - LazyColumn( + Column( modifier = Modifier .clip(RoundedCornerShape(spacing.extraSmall)) .fillMaxWidth() - .heightIn(spacing.extraLarge, spacing.extraLarge * 5) .background(MaterialTheme.colorScheme.surfaceContainer) ) { - items(beacons) { beacon -> + for (beacon in beacons) { AudioBeaconItem( text = stringResource(getBeaconResourceId(beacon)), foregroundColor = MaterialTheme.colorScheme.onSurface, From 58cd391f5219a48ca56d1e38dde51655d4ee05fd Mon Sep 17 00:00:00 2001 From: davecraig <8530624+davecraig@users.noreply.github.com> Date: Mon, 13 Jul 2026 10:48:48 +0000 Subject: [PATCH 05/23] Bump version to 1.1.2, version code 204 --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index dbcc2d705..0a4cb8587 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -55,8 +55,8 @@ android { applicationId = "org.scottishtecharmy.soundscape" minSdk = 30 targetSdk = 35 - versionCode = 203 - versionName = "1.1.1" + versionCode = 204 + versionName = "1.1.2" // Maintaining this list means that we can exclude translations that aren't complete yet resourceConfigurations.addAll(listOf( From 45334be00a56061ad43b36dc9d84f2d3e5edfa24 Mon Sep 17 00:00:00 2001 From: davecraig <8530624+davecraig@users.noreply.github.com> Date: Mon, 13 Jul 2026 10:59:52 +0000 Subject: [PATCH 06/23] New documentation screenshots --- docs/documentationScreens/homeScreen.png | Bin 400418 -> 400418 bytes .../homeScreenWithRoute.png | Bin 316263 -> 316263 bytes docs/documentationScreens/routeDetails.png | Bin 230044 -> 230044 bytes docs/documentationScreens/routeEdit.png | Bin 124145 -> 124145 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/documentationScreens/homeScreen.png b/docs/documentationScreens/homeScreen.png index 3a3667789146bb2f670885abf4f7f5974fb62e70..1380388a627b1f718f6bda0e0925f2690e97d221 100644 GIT binary patch delta 198 zcmZ3qLt@bmi3yqY?7UpoMu#@9ea^tZpjzS@QIe8al4_M)lnSI6j0}v-bPddP4UIz# z4XjKptxU|d4GgRd3{KCT$AqFGH$NpatrE9}T?f?m0X1mAZ79jiO)V}-RLCvB)MRP^ gvE|7P%fe<3#&!-y5M}~mW*}w(V%F^(jBHZU0OzfDZI4#sv4Mi6EKVrC#_0bfDZI4#sv4Mi6EKV&?4}j4bh&08mXc=Kufz diff --git a/docs/documentationScreens/routeDetails.png b/docs/documentationScreens/routeDetails.png index 9359ca4de6cf713530807f2be11cdf41a2dd983f..152f17a31779bb58ffbab23af4cf645e2a70fa33 100644 GIT binary patch delta 186 zcmbQ!$~UK#Z$f50J1>{D(V@+2pEEEpsFt`!l%yncptHiBg*8#PCKn)sj8%i>BQ;SOy6>~>+V}lSw zV=E&|D?=k~0|P4qgZxEF4^cGa=BH$)RpQnl_y1NbP=f~ChLX(O)Z&svh1>!xnoJ?K S^!Og-Y35+u&cVp|@-YB!=QBqD From 6605f374466fd4cf84368c4e59b61dcf910bcdb6 Mon Sep 17 00:00:00 2001 From: Dave Craig Date: Mon, 13 Jul 2026 15:18:12 +0100 Subject: [PATCH 07/23] Fix main-thread ANR from TTS getVoices() binder call TextToSpeech.getVoices() makes a synchronous Binder IPC to the system TTS service, which can block for a long time on some OEM builds. It was being called from viewModelScope's default Main dispatcher, blocking the UI thread and triggering ANRs. Move it and getAvailableSpeechEngines() to Dispatchers.IO. Co-Authored-By: Claude Sonnet 5 --- .../soundscape/viewmodels/SettingsViewModel.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/scottishtecharmy/soundscape/viewmodels/SettingsViewModel.kt b/app/src/main/java/org/scottishtecharmy/soundscape/viewmodels/SettingsViewModel.kt index d227f03ae..d7048a1a2 100644 --- a/app/src/main/java/org/scottishtecharmy/soundscape/viewmodels/SettingsViewModel.kt +++ b/app/src/main/java/org/scottishtecharmy/soundscape/viewmodels/SettingsViewModel.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.viewModelScope import androidx.preference.PreferenceManager import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.qualifiers.ApplicationContext +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -18,6 +19,7 @@ import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import org.scottishtecharmy.soundscape.MainActivity import org.scottishtecharmy.soundscape.SoundscapeServiceConnection import org.scottishtecharmy.soundscape.screens.onboarding.audiobeacons.getBeaconResourceId @@ -90,9 +92,16 @@ class SettingsViewModel @Inject constructor( if (initialized) { // Only once the TextToSpeech engine is initialized can we populate the // members of these lists. - val audioEngineTypes = audioEngine.getAvailableSpeechEngines() - - val audioEngineVoiceTypes = audioEngine.getAvailableSpeechVoices() + // getAvailableSpeechEngines/getAvailableSpeechVoices end up making a + // synchronous Binder call into the system TTS service + // (ITextToSpeechService.getVoices), which can block for a long time on + // some OEM builds. Run them off the main thread to avoid ANRs. + val (audioEngineTypes, audioEngineVoiceTypes) = withContext(Dispatchers.IO) { + Pair( + audioEngine.getAvailableSpeechEngines(), + audioEngine.getAvailableSpeechVoices() + ) + } val voiceTypes = mutableListOf() // The list of voices will start of with those in the current locale From 6f48e6393fc87bfe54a5bc8bddab1fca23638a49 Mon Sep 17 00:00:00 2001 From: Dave Craig Date: Sat, 18 Jul 2026 11:42:26 +0100 Subject: [PATCH 08/23] Fix ANR from MediaPlayer.release() called inside its own completion/error callback Calling release() synchronously from within OnCompletionListener/OnErrorListener re-enters MediaPlayer's native teardown while its EventHandler is still dispatching that very callback, which can hang the main thread waiting on native locks. Posting the release to the next message-loop iteration breaks the reentrancy. Co-Authored-By: Claude Sonnet 5 --- .../java/org/scottishtecharmy/soundscape/MainActivity.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/scottishtecharmy/soundscape/MainActivity.kt b/app/src/main/java/org/scottishtecharmy/soundscape/MainActivity.kt index 47d516fd5..6f68d786e 100644 --- a/app/src/main/java/org/scottishtecharmy/soundscape/MainActivity.kt +++ b/app/src/main/java/org/scottishtecharmy/soundscape/MainActivity.kt @@ -340,8 +340,13 @@ class MainActivity : AppCompatActivity() { afd.close() player.prepare() player.setVolume(0.7f, 0.7f) - player.setOnCompletionListener { finishSplashSound() } - player.setOnErrorListener { _, _, _ -> finishSplashSound(); true } + // Posted rather than called inline - MediaPlayer.release() called + // synchronously from within its own completion/error callback (still + // dispatching on this same EventHandler) can hang the main thread waiting on + // native teardown, causing an ANR. Posting breaks that reentrancy by letting + // the callback dispatch return first. + player.setOnCompletionListener { content.post { finishSplashSound() } } + player.setOnErrorListener { _, _, _ -> content.post { finishSplashSound() }; true } player.start() } catch (e: Exception) { Log.e(TAG, "Failed to play splash sound: $e") From 3f2623ac5a5554ac876c3a86e01fde5312049406 Mon Sep 17 00:00:00 2001 From: Dave Craig Date: Sat, 18 Jul 2026 11:51:33 +0100 Subject: [PATCH 09/23] Fix ANR: "Input dispatching timed out (No focused window)" during splash Our own worst-case splash hold time (maxSplashDelay=7000ms) exceeded Android's 5s "no focused window" input-dispatch ANR timeout, so a tap during a slow/never-completing splash sound could outlast the system's patience for the window to become focusable. Cuts the safety net to 3000ms, comfortably under that threshold. Also replaces the hand-rolled ViewTreeObserver.OnPreDrawListener that held the splash open by suppressing the content view's first draw with the platform's own SplashScreen.setKeepOnScreenCondition/ setOnExitAnimationListener APIs, which are coordinated with WindowManagerService's window-focus bookkeeping rather than working around it. Co-Authored-By: Claude Sonnet 5 --- .../main/assets/DoubleTap/dt_soundscape.mp3 | Bin 216878 -> 67612 bytes .../soundscape/MainActivity.kt | 101 ++++++++++++------ 2 files changed, 68 insertions(+), 33 deletions(-) diff --git a/app/src/main/assets/DoubleTap/dt_soundscape.mp3 b/app/src/main/assets/DoubleTap/dt_soundscape.mp3 index f986eca91953cb3311fc02542f92a75d595b582f..3a1261339daf80465c8d70578af4489d413d1c91 100644 GIT binary patch literal 67612 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
  • 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

    )x(|Lr!W5$H6gM!~k5 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 literal 216878 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

    gqJRJOq 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 O(u+c-82!IA{eJ-b4YQvB diff --git a/app/src/main/java/org/scottishtecharmy/soundscape/MainActivity.kt b/app/src/main/java/org/scottishtecharmy/soundscape/MainActivity.kt index 6f68d786e..6f54f084c 100644 --- a/app/src/main/java/org/scottishtecharmy/soundscape/MainActivity.kt +++ b/app/src/main/java/org/scottishtecharmy/soundscape/MainActivity.kt @@ -14,12 +14,13 @@ import android.net.Uri import android.os.Build import android.os.Bundle import android.os.Environment +import android.os.Handler +import android.os.Looper import android.os.StrictMode import android.provider.Settings import android.text.Html import android.util.Log import android.view.View -import android.view.ViewTreeObserver import android.view.accessibility.AccessibilityManager import android.widget.Toast import androidx.activity.compose.setContent @@ -308,23 +309,50 @@ class MainActivity : AppCompatActivity() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { val timeNow = System.currentTimeMillis() - installSplashScreen() + val splashScreen = installSplashScreen() // Keep the splash screen visible until the sound has finished playing, with a minimum // delay for attribution acknowledgements and a hard upper bound so that it can never - // hang if the sound never reports completion. + // hang if the sound never reports completion. maxSplashDelay must stay comfortably + // under Android's 5s "Input dispatching timed out (No focused window)" ANR timeout - + // holding the splash open (and so the real window un-drawn/unfocused) for longer than + // that risks that exact ANR if the user taps the screen during the hold. val attributionDelay = 1500L - val maxSplashDelay = 7000L + val maxSplashDelay = 3500L val content: View = findViewById(android.R.id.content) var splashSoundFinished = false - // Open the splash gate, release the player and nudge a redraw so the - // OnPreDrawListener below re-evaluates its conditions. + var contentLaunched = false + // Set the real content as soon as the hold condition is met, rather than waiting for + // the splash exit animation - setOnExitAnimationListener only fires once the DecorView + // has already drawn a frame, and at that point nothing would be composed yet if we + // waited until then to call continueLaunch(), leaving a black screen once the splash + // view is removed. + val tryLaunchContent = { + val minDelayPassed = (System.currentTimeMillis() - timeNow) > attributionDelay + if (!contentLaunched && minDelayPassed && splashSoundFinished) { + contentLaunched = true + continueLaunch(isFirstLaunch) + } + } + // Open the splash gate and nudge a redraw so setKeepOnScreenCondition below + // re-evaluates its condition. Deliberately doesn't touch splashPlayer - the gate can + // open (via the maxSplashDelay safety net) before the sound has actually finished, and + // we want playback to carry on uninterrupted in the background rather than being cut + // off, so the player is only ever released once it reports real completion/error. + val openSplashGate = { + if (!splashSoundFinished) { + splashSoundFinished = true + content.invalidate() + tryLaunchContent() + } + } + + // The sound has actually finished (or errored) - release the player and open the gate. val finishSplashSound = { - splashSoundFinished = true splashPlayer?.release() splashPlayer = null - content.invalidate() + openSplashGate() } if (splashPlayed) { @@ -344,9 +372,13 @@ class MainActivity : AppCompatActivity() { // synchronously from within its own completion/error callback (still // dispatching on this same EventHandler) can hang the main thread waiting on // native teardown, causing an ANR. Posting breaks that reentrancy by letting - // the callback dispatch return first. - player.setOnCompletionListener { content.post { finishSplashSound() } } - player.setOnErrorListener { _, _, _ -> content.post { finishSplashSound() }; true } + // the callback dispatch return first. Uses a plain main-looper Handler rather + // than content.post {} - the sound is allowed to keep playing after MainActivity + // hands off to OnboardingActivity on first launch, and by then content's window + // is gone, so a post to it would silently never run. + val mainHandler = Handler(Looper.getMainLooper()) + player.setOnCompletionListener { mainHandler.post { finishSplashSound() } } + player.setOnErrorListener { _, _, _ -> mainHandler.post { finishSplashSound() }; true } player.start() } catch (e: Exception) { Log.e(TAG, "Failed to play splash sound: $e") @@ -359,24 +391,25 @@ class MainActivity : AppCompatActivity() { // Safety net: never let the splash hang. If the sound hasn't reported completion by // maxSplashDelay (e.g. the MediaPlayer was reclaimed before its callback could fire) - // open the gate anyway. - content.postDelayed({ if (!splashSoundFinished) finishSplashSound() }, maxSplashDelay) - - content.viewTreeObserver.addOnPreDrawListener( - object : ViewTreeObserver.OnPreDrawListener { - override fun onPreDraw(): Boolean { - val minDelayPassed = - (System.currentTimeMillis() - timeNow) > attributionDelay - return if (minDelayPassed && splashSoundFinished) { - content.viewTreeObserver.removeOnPreDrawListener(this) - continueLaunch(isFirstLaunch) - true - } else { - false - } - } - } - ) + // open the gate anyway - the sound (if still playing) carries on regardless. + content.postDelayed({ openSplashGate() }, maxSplashDelay) + + // Covers the case where the sound finishes (or was never played) before + // attributionDelay has elapsed - tryLaunchContent() re-checks the delay itself. + content.postDelayed({ tryLaunchContent() }, attributionDelay) + + // Uses the platform's own splash/focus handshake (androidx.core.splashscreen) rather + // than a hand-rolled ViewTreeObserver.OnPreDrawListener that suppresses the content + // view's first draw directly - the latter isn't coordinated with WindowManagerService's + // bookkeeping for when the window becomes focusable, which risks the same "No focused + // window" ANR mentioned above. + splashScreen.setKeepOnScreenCondition { + val minDelayPassed = (System.currentTimeMillis() - timeNow) > attributionDelay + !(minDelayPassed && splashSoundFinished) + } + splashScreen.setOnExitAnimationListener { splashScreenView -> + splashScreenView.remove() + } } // The remaining code in this function can be run whilst the splash screen is visible. @@ -499,10 +532,12 @@ class MainActivity : AppCompatActivity() { override fun onDestroy() { sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferencesListener) - // Release the splash sound player if it's still playing (e.g. the activity is recreated - // before playback finishes) so it doesn't leak or overlap with a fresh instance. - splashPlayer?.release() - splashPlayer = null + // Deliberately don't release a still-playing splashPlayer here: on first launch, + // continueLaunch() finishes this activity to hand off to OnboardingActivity while the + // splash sound may still be playing, and we want that playback to carry on rather than + // being cut short. It self-releases via its own completion/error listener (posted through + // a main-looper Handler, so it still fires after this activity is gone). LAST_SPLASH_RELEASE_KEY + // is committed before playback starts, so a recreated MainActivity won't start a second player. super.onDestroy() } From ae113dfe4a691c5c2954b6f27d3afc2274da9690 Mon Sep 17 00:00:00 2001 From: davecraig <8530624+davecraig@users.noreply.github.com> Date: Sun, 19 Jul 2026 10:40:08 +0000 Subject: [PATCH 10/23] Bump version to 1.1.3, version code 205 --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 0a4cb8587..cf084c0bf 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -55,8 +55,8 @@ android { applicationId = "org.scottishtecharmy.soundscape" minSdk = 30 targetSdk = 35 - versionCode = 204 - versionName = "1.1.2" + versionCode = 205 + versionName = "1.1.3" // Maintaining this list means that we can exclude translations that aren't complete yet resourceConfigurations.addAll(listOf( From a4f30506ce31dddec47e03886c0777729c13a3bc Mon Sep 17 00:00:00 2001 From: davecraig <8530624+davecraig@users.noreply.github.com> Date: Sun, 19 Jul 2026 10:50:33 +0000 Subject: [PATCH 11/23] New documentation screenshots --- docs/documentationScreens/homeScreen.png | Bin 400418 -> 400418 bytes .../homeScreenWithRoute.png | Bin 316263 -> 316263 bytes docs/documentationScreens/routeDetails.png | Bin 230044 -> 230044 bytes docs/documentationScreens/routeEdit.png | Bin 124145 -> 124145 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/documentationScreens/homeScreen.png b/docs/documentationScreens/homeScreen.png index 1380388a627b1f718f6bda0e0925f2690e97d221..e947b519fcf7b97004a90755657be8f4321a587e 100644 GIT binary patch delta 189 zcmZ3qLt@bmi3wTt!dyo3&oZ*g85kH;OI#yLQW8s2t&)pUffR$0fsvW6fw``sWr(4H zm8pT1k)^hQft7(lXm+g~iiX_$l+3hB+!|EOjy3@`XuxeK$;?eHE=kOt_>x-$X1cK< h#PpuDRZE&V7~44*L6`}MnSq!Eh*`IDFtSNW0{}ckGPM8z delta 189 zcmZ3qLt@bmi3wTtyj<2shc>T$&cMK+TH+c}l9E`GYL#4+3Zxi}42;Zl4a{{7jYA9# ztV}JfOw6?n46Fx-$X1cK< c#PpuDRZE&V7~44*L6`}MnYVK=vcz8k0PEN?;s5{u delta 181 zcmaF9O!)aS;R#vwyj<2shc>T$&cMK+TH+c}l9E`GYL#4+3Zxi}42;Zl4a{{7jYA9# ztV}JfOw6?n46FRdP`(kYX@0Ff!9MFxNG-3^6pY zGBvO=veY&(ure?R&91dW(U6;;l9^VCTZ4+((I%h<4Y&;@nYpROC5gEcUvi7UOgA=! ZnBJ4NYDqH(V><^U2s3TxU}T=s2mrqDFcAO% delta 177 zcmbQ!$~UK#Z$ef*FPF8^q0MWbGcYiymbgZgq$HN4S|t~y0x1R~10yqC19M$N;}Amw zD^p7=6LW0?11kfA({txBp=ij>PsvQH#I0f10kwTV4H|G8N-}d(i%Sx7C%)tsfthY< a05Sc^4a>r24#sv4Mi6G&&cVn$r4ay_)HAvO diff --git a/docs/documentationScreens/routeEdit.png b/docs/documentationScreens/routeEdit.png index 288f03aaa42d1e60f2e013b966cf3f334e5931be..37b6b48e5c441c2ef37c088924dfbb3ea2e36bce 100644 GIT binary patch delta 169 zcmex(lKtaJ_6b?_!dylQ0etRW3=9maC9V-ADTyViR>?)FK#IZ0z{pJ3z+BhRGQ`lp z%GAKh$Wq(Dz{ Date: Mon, 20 Jul 2026 11:55:10 +0100 Subject: [PATCH 12/23] Fix offline search for localized (name:xx) POI names TileSearch only ever resolved fuzzy hits back to a feature via the literal "name" tag, so POIs whose matching text lived under name:hi, name:pa etc. (very common in OSM/OpenMapTiles data) were found by the fuzzy pass but silently dropped during feature resolution, leaving non-English searches (e.g. Hindi) empty. Also surface the actual matched name variant instead of always re-reading the Latin "name" tag, and stop normalizeForSearch from stripping non-Latin combining marks (Devanagari matras/virama etc.) that it was only meant to strip for Latin/Greek/Cyrillic accents. Co-Authored-By: Claude Sonnet 5 --- .../geoengine/utils/geocoders/TileSearch.kt | 38 ++-- .../scottishtecharmy/soundscape/SearchTest.kt | 204 +++++++++++++----- 2 files changed, 172 insertions(+), 70 deletions(-) diff --git a/app/src/main/java/org/scottishtecharmy/soundscape/geoengine/utils/geocoders/TileSearch.kt b/app/src/main/java/org/scottishtecharmy/soundscape/geoengine/utils/geocoders/TileSearch.kt index 9c4d79801..dd311e2a1 100644 --- a/app/src/main/java/org/scottishtecharmy/soundscape/geoengine/utils/geocoders/TileSearch.kt +++ b/app/src/main/java/org/scottishtecharmy/soundscape/geoengine/utils/geocoders/TileSearch.kt @@ -323,13 +323,10 @@ class TileSearch(val offlineExtractPath: String, for(layer in tile.layersList) { // Was the string found in transportation or POI? TODO: Or both? if((layer.name == "transportation") || (layer.name == "poi")){ - var nameTag = -1 - for ((index, value) in layer.keysList.withIndex()) { - if (value == "name") { - nameTag = index - break - } - } + val nameTagIndices = layer.keysList.withIndex() + .filter { (_, key) -> isNameKey(key) } + .map { it.index } + .toSet() var stringKey = -1 for ((index, value) in layer.valuesList.withIndex()) { @@ -361,7 +358,7 @@ class TileSearch(val offlineExtractPath: String, var found = false for (tag in feature.tagsList) { if (firstInPair) { - skip = (tag != nameTag) + skip = (tag !in nameTagIndices) } else { if(!skip) { val raw = layer.getValues(tag) @@ -546,8 +543,10 @@ class TileSearch(val offlineExtractPath: String, val streetResults = whittledResults.map { result -> val mvt = MvtFeature() - // Copy in the MVT properties - mvt.name = result.properties.get("name") as? String? + // Copy in the MVT properties. Use the exact name variant that was actually matched + // during search (which may be a localized name:xx tag rather than plain "name"), so + // the result surfaces the name that matched rather than always the Latin "name" tag. + mvt.name = result.string mvt.featureClass = result.properties.get("class") as? String? mvt.featureSubClass = result.properties.get("subclass") as? String? mvt.properties = result.properties @@ -658,6 +657,13 @@ class TileSearch(val offlineExtractPath: String, } } +// OSM/OpenMapTiles tags a feature's name under several keys depending on script/language: plain +// "name", BCP-47/ISO-639 language-tagged variants ("name:hi", "name:en", "name:pa", ...), and +// OpenMapTiles-generated fallbacks ("name_int", "int_name"). All of these count as a name tag when +// resolving a fuzzy search hit back to the feature that produced it. +fun isNameKey(key: String): Boolean = + key == "name" || key.startsWith("name:") || key == "name_int" || key == "int_name" + private val apostrophes = setOf('\'', '’', '‘', '‛', 'ʻ', 'ʼ', 'ʹ', 'ꞌ', ''') fun normalizeForSearch(input: String): String { // Unicode normalize (decompose accents etc.) @@ -667,9 +673,17 @@ fun normalizeForSearch(input: String): String { var lastWasSpace = false for (ch in normalizedString) { - // Remove combining marks (diacritics) val type = Character.getType(ch) - if (type == Character.NON_SPACING_MARK.toInt()) continue + if (type == Character.NON_SPACING_MARK.toInt()) { + // Only strip Latin/Greek/Cyrillic combining diacritics, which is what NFKD produces + // for accented letters (e.g. é -> e + U+0301). Combining marks from other scripts + // (Devanagari matras/virama, Arabic harakat, Hebrew niqqud, etc.) are semantically + // essential, not decorative, so keep them verbatim. + if (ch.code in 0x0300..0x036F) continue + sb.append(ch) + lastWasSpace = false + continue + } // Make apostrophes disappear completely (missing/extra apostrophes become irrelevant) if (ch in apostrophes) continue diff --git a/app/src/test/java/org/scottishtecharmy/soundscape/SearchTest.kt b/app/src/test/java/org/scottishtecharmy/soundscape/SearchTest.kt index 027b7bac5..1b9059145 100644 --- a/app/src/test/java/org/scottishtecharmy/soundscape/SearchTest.kt +++ b/app/src/test/java/org/scottishtecharmy/soundscape/SearchTest.kt @@ -32,14 +32,17 @@ class SearchTest { val offlineGeocoder = OfflineGeocoder(gridState, settlementState, tileSearch) val result8 = offlineGeocoder.getAddressFromLngLat( - UserGeometry(LngLatAlt( -4.3118, 55.9400), 90.0), + UserGeometry(LngLatAlt(-4.3118, 55.9400), 90.0), null, ignoreHouseNumbers = true ) - assertEquals("On Crossveggate between Killermont Road to dead end and Glasgow Road", result8!!.name) + assertEquals( + "On Crossveggate between Killermont Road to dead end and Glasgow Road", + result8!!.name + ) val result7 = offlineGeocoder.getAddressFromLngLat( - UserGeometry(LngLatAlt( -4.3108846, 55.9495440), 180.0), + UserGeometry(LngLatAlt(-4.3108846, 55.9495440), 180.0), null, ignoreHouseNumbers = true ) @@ -47,39 +50,51 @@ class SearchTest { val result5 = offlineGeocoder.getAddressFromLngLat( - UserGeometry(LngLatAlt( -4.3117919, 55.9486518), 0.0), + UserGeometry(LngLatAlt(-4.3117919, 55.9486518), 0.0), null, ignoreHouseNumbers = true ) assertEquals("On Craigmillar Avenue, 220 metres since Tannoch Drive", result5!!.name) val result6 = offlineGeocoder.getAddressFromLngLat( - UserGeometry(LngLatAlt( -4.3107229, 55.9438725), 0.0), + UserGeometry(LngLatAlt(-4.3107229, 55.9438725), 0.0), null, ignoreHouseNumbers = true ) - assertEquals("On Strathblane Road between Kersland Lane and Path to Kersland Drive", result6!!.name) + assertEquals( + "On Strathblane Road between Kersland Lane and Path to Kersland Drive", + result6!!.name + ) val result1 = offlineGeocoder.getAddressFromLngLat( UserGeometry(LngLatAlt(-4.3103500, 55.9396160), 90.0), null, ignoreHouseNumbers = true ) - assertEquals("On Dougalston Avenue between Glasgow Road and Path to Dougalston Gardens North", result1!!.name) + assertEquals( + "On Dougalston Avenue between Glasgow Road and Path to Dougalston Gardens North", + result1!!.name + ) val result2 = offlineGeocoder.getAddressFromLngLat( UserGeometry(LngLatAlt(-4.3088339, 55.9396215), 90.0), null, ignoreHouseNumbers = true ) - assertEquals("On Dougalston Avenue between South Glassford Street and Briarwell Road", result2!!.name) + assertEquals( + "On Dougalston Avenue between South Glassford Street and Briarwell Road", + result2!!.name + ) val result3 = offlineGeocoder.getAddressFromLngLat( UserGeometry(LngLatAlt(-4.3069511, 55.9400774), 90.0), null, ignoreHouseNumbers = true ) - assertEquals("On Dougalston Avenue between Briarwell Road and Connell Crescent to dead end", result3!!.name) + assertEquals( + "On Dougalston Avenue between Briarwell Road and Connell Crescent to dead end", + result3!!.name + ) // Check that the street address also works val result4 = offlineGeocoder.getAddressFromLngLat( @@ -101,74 +116,122 @@ class SearchTest { val tileSearch = TileSearch(offlineExtractPath, gridState, settlementState) val offlineGeocoder = OfflineGeocoder(gridState, settlementState, tileSearch) - var results = offlineGeocoder.getAddressFromLocationName( "Greggs", currentLocation, null)!! + var results = + offlineGeocoder.getAddressFromLocationName("Greggs", currentLocation, null)!! assertEquals("Greggs", results[0].name) assertEquals("OSM Feature", results[0].featureName?.additionalText ?: "") - results = offlineGeocoder.getAddressFromLocationName("5 buchanan street milngavie", currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "5 buchanan street milngavie", + currentLocation, + null + )!! assertEquals("5 Buchanan Street", results[0].name) assertEquals("5 Buchanan Street, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "12 roselea drive", currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "12 roselea drive", + currentLocation, + null + )!! assertEquals(1, results.size) - results = offlineGeocoder.getAddressFromLocationName("5 buchanan street mulngaviy", currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "5 buchanan street mulngaviy", + currentLocation, + null + )!! assertEquals("5 Buchanan Street", results[0].name) assertEquals("5 Buchanan Street, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName("5 buchanan street north woodside",currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "5 buchanan street north woodside", + currentLocation, + null + )!! assertEquals("5 Buchanan Street", results[0].name) assertEquals("5 Buchanan Street, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName("5 buchanan street clachan of campsie",currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "5 buchanan street clachan of campsie", + currentLocation, + null + )!! assertEquals("5 Buchanan Street", results[0].name) assertEquals("5 Buchanan Street, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName("5 buchanan street",currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "5 buchanan street", + currentLocation, + null + )!! assertEquals("5 Buchanan Street", results[0].name) assertEquals("5 Buchanan Street, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName("post office", currentLocation, null)!! + results = + offlineGeocoder.getAddressFromLocationName("post office", currentLocation, null)!! assertEquals("Craigash Road Post Office", results[0].name) assertEquals("34 Craigash Road, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "roselea dr 8", currentLocation, null)!! + results = + offlineGeocoder.getAddressFromLocationName("roselea dr 8", currentLocation, null)!! assertEquals("8 Roselea Drive", results[0].name) assertEquals("8 Roselea Drive, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "20 roselea drive milngavie", currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "20 roselea drive milngavie", + currentLocation, + null + )!! assertEquals("20 Roselea Drive", results[0].name) assertEquals("20 Roselea Drive, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "greggs ", currentLocation, null)!! + results = + offlineGeocoder.getAddressFromLocationName("greggs ", currentLocation, null)!! assertEquals("Greggs", results[0].name) assertEquals("6 Douglas Street, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "milverton avenue", currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "milverton avenue", + currentLocation, + null + )!! assertEquals("Milverton Avenue", results[0].name) assertEquals("Milverton Avenue, Bearsden", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "milverto avenue", currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "milverto avenue", + currentLocation, + null + )!! assertEquals("Milverton Avenue", results[0].name) assertEquals("Milverton Avenue, Bearsden", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "roselea dr", currentLocation, null)!! + results = + offlineGeocoder.getAddressFromLocationName("roselea dr", currentLocation, null)!! assertEquals("Roselea Drive", results[0].name) assertEquals("Roselea Drive, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "dirleton gate", currentLocation, null)!! + results = + offlineGeocoder.getAddressFromLocationName("dirleton gate", currentLocation, null)!! assertEquals("Dirleton Gate", results[0].name) assertEquals("Dirleton Gate, Netherton", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "dirleton gate", currentLocation, null)!! + results = + offlineGeocoder.getAddressFromLocationName("dirleton gate", currentLocation, null)!! assertEquals("Dirleton Gate", results[0].name) assertEquals("Dirleton Gate, Netherton", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "dirleton gate 20", currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "dirleton gate 20", + currentLocation, + null + )!! assertEquals("Dirleton Gate", results[0].name) assertEquals("Dirleton Gate, Netherton", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "craigton road", currentLocation, null)!! + results = + offlineGeocoder.getAddressFromLocationName("craigton road", currentLocation, null)!! assertEquals("Craigton Road", results[0].name) assertEquals("Craigton Road, Milngavie", results[0].description) } @@ -177,7 +240,8 @@ class SearchTest { @Test fun testSearch() { // This does a really crude search through the "name" property of the POI features - val gridState = getGridStateForLocation(sixtyAcresCloseTestLocation, MAX_ZOOM_LEVEL, GRID_SIZE) + val gridState = + getGridStateForLocation(sixtyAcresCloseTestLocation, MAX_ZOOM_LEVEL, GRID_SIZE) val testPoiCollection = gridState.getFeatureCollection(TreeId.POIS) // As there isn't much going on in the tiles then it should return the local village shop/coffee place @@ -198,21 +262,22 @@ class SearchTest { // Most of the code here is getting some locations along a known road to walk along val roadTree = gridState.getFeatureTree(TreeId.ROADS) - var way : Way? = null - for(road in roadTree.getAllCollection()) { - if((road as Way).name == streetName) { + var way: Way? = null + for (road in roadTree.getAllCollection()) { + if ((road as Way).name == streetName) { way = road break } } - if(way != null) { + if (way != null) { val ways = mutableListOf>() - val intersection = way.intersections[WayEnd.END.id] ?: way.intersections[WayEnd.START.id] - if(intersection != null) { + val intersection = + way.intersections[WayEnd.END.id] ?: way.intersections[WayEnd.START.id] + if (intersection != null) { way.followWays(intersection, ways) for (segment in ways) { - for(point in (segment.second.geometry as LineString).coordinates) { + for (point in (segment.second.geometry as LineString).coordinates) { val nearestHouse = streetTrees[streetName]?.getNearestFeature( point, gridState.ruler @@ -230,9 +295,11 @@ class SearchTest { } } - fun streetDescription(location: LngLatAlt, - streetName: String, - describeLocations: List) { + fun streetDescription( + location: LngLatAlt, + streetName: String, + describeLocations: List + ) { val gridState = getGridStateForLocation(location, MAX_ZOOM_LEVEL, GRID_SIZE) val nearbyWays = gridState.getFeatureTree(TreeId.WAYS_SELECTION) .getNearestCollection( @@ -242,50 +309,48 @@ class SearchTest { gridState.ruler ) var matchedWay: Way? = null - for(way in nearbyWays) { - if((way as Way).name == streetName) { + for (way in nearbyWays) { + if ((way as Way).name == streetName) { matchedWay = way break } } - if(matchedWay == null) return + if (matchedWay == null) return val description = StreetDescription(streetName, gridState) description.createDescription(matchedWay, null) description.describeStreet() - for(location in describeLocations) { + for (location in describeLocations) { val nearestWay = description.nearestWayOnStreet(location) - if(nearestWay != null) { + if (nearestWay != null) { val houseNumber = description.getStreetNumber(nearestWay.first, location) - println("Interpolated address: ${if(houseNumber.second) "Opposite" else ""} ${houseNumber.first} ${nearestWay.first.name}") - val result = description.describeLocation(location, 90.0, nearestWay.first,null) + println("Interpolated address: ${if (houseNumber.second) "Opposite" else ""} ${houseNumber.first} ${nearestWay.first.name}") + val result = description.describeLocation(location, 90.0, nearestWay.first, null) if ( (result.ahead.distance < 10.0) && - ((result.ahead.distance < result.behind.distance) || result.behind.name.isEmpty())) - { + ((result.ahead.distance < result.behind.distance) || result.behind.name.isEmpty()) + ) { println("At ${result.ahead.name}") - } - else if (result.behind.distance < 10.0) { + } else if (result.behind.distance < 10.0) { println("At ${result.behind.name}") - } - else if(result.behind.name.isNotEmpty() && result.ahead.name.isNotEmpty()) { + } else if (result.behind.name.isNotEmpty() && result.ahead.name.isNotEmpty()) { // TODO: Ideally we'd know the user direction here so that we could give the fraction // as an increasing value e.g. half way, three quarters of the way etc. - val fraction = result.behind.distance/(result.behind.distance + result.ahead.distance) + val fraction = + result.behind.distance / (result.behind.distance + result.ahead.distance) when (fraction) { in 0.2..0.3 -> println("Quarter of the way between: ${result.behind.name} and ${result.ahead.name}") in 0.4..0.6 -> println("Half way between: ${result.behind.name} and ${result.ahead.name}") in 0.7..0.8 -> println("Three quarters way between: ${result.behind.name} and ${result.ahead.name}") else -> { - if(result.ahead.distance < result.behind.distance) + if (result.ahead.distance < result.behind.distance) println("Between: ${result.ahead.name} and ${result.behind.name}, ${result.ahead.distance} from ${result.ahead.name}") else println("Between: ${result.behind.name} and ${result.ahead.name}, ${result.behind.distance} from ${result.behind.name}") } } - } - else if(result.behind.distance < result.ahead.distance) { + } else if (result.behind.distance < result.ahead.distance) { val distance = formatDistanceAndDirection(result.behind.distance, null, null) println("$distance along from ${result.behind.name}") } else { @@ -369,8 +434,8 @@ class SearchTest { gridState.ruler ) var matchedWay: Way? = null - for(way in nearbyWays) { - if((way as Way).name == streetName) { + for (way in nearbyWays) { + if ((way as Way).name == streetName) { matchedWay = way break } @@ -405,7 +470,30 @@ class SearchTest { val buchananStreet = LngLatAlt(-4.3134938, 55.9449487) testLineSearchLocation(buchananStreet, "Buchanan Street") - val buchananStreet2 = LngLatAlt( -4.3136986, 55.9455014) + val buchananStreet2 = LngLatAlt(-4.3136986, 55.9455014) testLineSearchLocation(buchananStreet2, "Buchanan Street") } + + @Test + fun multilingualSearch() { + runBlocking { + val currentLocation = LngLatAlt(-3.2003818, 55.9487360) + val gridState = getGridStateForLocation(currentLocation, MAX_ZOOM_LEVEL, GRID_SIZE) + val settlementState = getGridStateForLocation(currentLocation, 12, 3) + val tileSearch = TileSearch(offlineExtractPath, gridState, settlementState) + val offlineGeocoder = OfflineGeocoder(gridState, settlementState, tileSearch) + + var results = + offlineGeocoder.getAddressFromLocationName("एडिनबर्ग किला", currentLocation, null)!! + assertEquals("एडिनबर्ग किला", results[0].name) + + results = + offlineGeocoder.getAddressFromLocationName("エディンバラ城", currentLocation, null)!! + assertEquals("エディンバラ城", results[0].name) + + results = + offlineGeocoder.getAddressFromLocationName("Эдинбург қамалы", currentLocation, null)!! + assertEquals("Эдинбург қамалы", results[0].name) + } + } } \ No newline at end of file From c24812b8dc74e8a1419635f742d97d62b20f19cf Mon Sep 17 00:00:00 2001 From: Dave Craig Date: Mon, 20 Jul 2026 12:26:59 +0100 Subject: [PATCH 13/23] Add test coverage for Photon search language fallback (Arabic etc.) The Photon server only supports en/fr/de + each location's local language, and getPhotonLanguage() already correctly omits the lang param for anything else so Photon falls back to local-language matching - verified this against the live production server for an Arabic query. There was no test coverage for this behavior at all, so add a fast unit test for the fallback logic plus an instrumented end-to-end check against the real server. Co-Authored-By: Claude Sonnet 5 --- .../soundscape/GeocoderTest.kt | 30 ++++++++ .../soundscape/GeoEngineLanguageTest.kt | 71 +++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 app/src/test/java/org/scottishtecharmy/soundscape/GeoEngineLanguageTest.kt diff --git a/app/src/androidTest/java/org/scottishtecharmy/soundscape/GeocoderTest.kt b/app/src/androidTest/java/org/scottishtecharmy/soundscape/GeocoderTest.kt index 61481d6c7..b874a4fee 100644 --- a/app/src/androidTest/java/org/scottishtecharmy/soundscape/GeocoderTest.kt +++ b/app/src/androidTest/java/org/scottishtecharmy/soundscape/GeocoderTest.kt @@ -15,6 +15,8 @@ import kotlinx.coroutines.withTimeoutOrNull import okhttp3.internal.platform.PlatformRegistry.applicationContext import org.json.JSONObject +import org.junit.Assert.assertNotNull +import org.junit.Assert.assertTrue import org.junit.Test import org.junit.runner.RunWith import org.scottishtecharmy.soundscape.components.LocationSource @@ -434,6 +436,34 @@ class GeocoderTest { } } + /** + * The Photon search server is only built with English, French, German and each location's + * local language (see getPhotonLanguage()). A device whose default language is something + * else, e.g. Arabic, isn't one of those, so the language query param must be omitted rather + * than passed through - Photon then falls back to matching/returning the local language, + * which for this Egyptian POI is Arabic. This confirms that end-to-end against the real + * production Photon server, not just the language-selection logic in isolation. + */ + @Test + fun arabicPhotonSearchTest() { + runBlocking { + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + val photonGeocoder = PhotonGeocoder(appContext) + + // Tenth of Ramadan City, Egypt - location of a hospital named "الهلال الاخضر" + // (Al-Hilal Al-Akhdar / "The Green Crescent") in OSM. + val nearby = LngLatAlt(31.7357622, 30.2869636) + val results = photonGeocoder.getAddressFromLocationName( + "الهلال الاخضر", + nearby, + appContext + ) + assertNotNull(results) + assertTrue(results!!.isNotEmpty()) + assertTrue(results.any { it.name.contains("الهلال") }) + } + } + @OptIn(ExperimentalCoroutinesApi::class) @Test fun osmNameAddition() { diff --git a/app/src/test/java/org/scottishtecharmy/soundscape/GeoEngineLanguageTest.kt b/app/src/test/java/org/scottishtecharmy/soundscape/GeoEngineLanguageTest.kt new file mode 100644 index 000000000..f45ab99f0 --- /dev/null +++ b/app/src/test/java/org/scottishtecharmy/soundscape/GeoEngineLanguageTest.kt @@ -0,0 +1,71 @@ +package org.scottishtecharmy.soundscape + +import android.content.SharedPreferences +import org.junit.Test +import org.scottishtecharmy.soundscape.MainActivity.Companion.SEARCH_LANGUAGE_KEY +import org.scottishtecharmy.soundscape.geoengine.getPhotonLanguage +import java.util.Locale +import kotlin.test.assertEquals +import kotlin.test.assertNull + +private class FakeSharedPreferences(private val values: Map) : SharedPreferences { + override fun getString(key: String?, defValue: String?) = values[key] ?: defValue + override fun getAll() = throw NotImplementedError() + override fun getStringSet(key: String?, defValues: MutableSet?) = throw NotImplementedError() + override fun getInt(key: String?, defValue: Int) = throw NotImplementedError() + override fun getLong(key: String?, defValue: Long) = throw NotImplementedError() + override fun getFloat(key: String?, defValue: Float) = throw NotImplementedError() + override fun getBoolean(key: String?, defValue: Boolean) = throw NotImplementedError() + override fun contains(key: String?) = throw NotImplementedError() + override fun edit(): SharedPreferences.Editor = throw NotImplementedError() + override fun registerOnSharedPreferenceChangeListener( + listener: SharedPreferences.OnSharedPreferenceChangeListener? + ) = throw NotImplementedError() + override fun unregisterOnSharedPreferenceChangeListener( + listener: SharedPreferences.OnSharedPreferenceChangeListener? + ) = throw NotImplementedError() +} + +/** + * The Photon search server (https://photon.soundscape.scottishtecharmy.org) is only built with + * English, French, German and each location's local language. Passing any other "lang" query + * param makes Photon return an error, so getPhotonLanguage() must fall back to not passing a + * language at all for unsupported languages (e.g. Arabic) - Photon then returns results matched + * and named in the local language, which is exactly what's wanted. + */ +class GeoEngineLanguageTest { + private fun withDefaultLocale(language: String, block: () -> Unit) { + val original = Locale.getDefault() + try { + Locale.setDefault(Locale.Builder().setLanguage(language).build()) + block() + } finally { + Locale.setDefault(original) + } + } + + @Test + fun unsupportedDeviceLanguageFallsBackToNull() { + withDefaultLocale("ar") { + assertNull(getPhotonLanguage(null)) + assertNull(getPhotonLanguage(FakeSharedPreferences(mapOf(SEARCH_LANGUAGE_KEY to "auto")))) + } + } + + @Test + fun explicitSupportedLanguageOverridesDeviceLocale() { + withDefaultLocale("ar") { + assertEquals("en", getPhotonLanguage(FakeSharedPreferences(mapOf(SEARCH_LANGUAGE_KEY to "en")))) + } + } + + @Test + fun supportedDeviceLanguageIsPassedThrough() { + withDefaultLocale("de") { + assertEquals("de", getPhotonLanguage(null)) + } + withDefaultLocale("fr") { + assertEquals("fr", getPhotonLanguage(FakeSharedPreferences(mapOf(SEARCH_LANGUAGE_KEY to "auto")))) + } + } +} From cc1835a1458599265d6dec05d8b58351cd87452b Mon Sep 17 00:00:00 2001 From: Dave Craig Date: Mon, 20 Jul 2026 13:46:17 +0100 Subject: [PATCH 14/23] Improve audio beacons onboarding screen The main change here is removing the audio beacons being a scrolling list within the screen and instead just having the screen be bigger an containing the whole list. This makes Maestro tests much easier as swipping upwards works the same at any point on the screen. Rows had been split into separate beacon+icon by mistake at some point. That's fixed. --- .../soundscape/GeocoderTest.kt | 3 +- .../audiobeacons/AudioBeaconItem.kt | 6 ++-- .../onboarding/audiobeacons/AudioBeacons.kt | 30 +++++++++++++------ 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/app/src/androidTest/java/org/scottishtecharmy/soundscape/GeocoderTest.kt b/app/src/androidTest/java/org/scottishtecharmy/soundscape/GeocoderTest.kt index b874a4fee..f628972f1 100644 --- a/app/src/androidTest/java/org/scottishtecharmy/soundscape/GeocoderTest.kt +++ b/app/src/androidTest/java/org/scottishtecharmy/soundscape/GeocoderTest.kt @@ -444,7 +444,8 @@ class GeocoderTest { * which for this Egyptian POI is Arabic. This confirms that end-to-end against the real * production Photon server, not just the language-selection logic in isolation. */ - @Test + //@Test + // This test requires the photon server to be available - but it's unknown here fun arabicPhotonSearchTest() { runBlocking { val appContext = InstrumentationRegistry.getInstrumentation().targetContext diff --git a/app/src/main/java/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeaconItem.kt b/app/src/main/java/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeaconItem.kt index d021aad24..fe2df675f 100644 --- a/app/src/main/java/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeaconItem.kt +++ b/app/src/main/java/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeaconItem.kt @@ -45,7 +45,7 @@ fun AudioBeaconItem( Icons.Rounded.Done, contentDescription = null, tint = foregroundColor, - modifier = modifier + modifier = Modifier .size(spacing.icon) ) } @@ -57,7 +57,7 @@ fun AudioBeaconItem( ) Row( horizontalArrangement = Arrangement.End, - modifier = modifier + modifier = Modifier .fillMaxWidth() .padding(end = spacing.small) ) { @@ -65,7 +65,7 @@ fun AudioBeaconItem( Icons.Rounded.ChevronRight, contentDescription = null, tint = foregroundColor, - modifier = modifier + modifier = Modifier .size(spacing.icon) ) } diff --git a/app/src/main/java/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeacons.kt b/app/src/main/java/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeacons.kt index 1535e747c..a1b125d0a 100644 --- a/app/src/main/java/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeacons.kt +++ b/app/src/main/java/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeacons.kt @@ -10,11 +10,8 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.requiredHeight -import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.items import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll @@ -31,6 +28,10 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource +import androidx.compose.ui.semantics.CollectionInfo +import androidx.compose.ui.semantics.CollectionItemInfo +import androidx.compose.ui.semantics.collectionInfo +import androidx.compose.ui.semantics.collectionItemInfo import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.style.TextAlign @@ -159,14 +160,16 @@ fun AudioBeacons( ) Spacer(modifier = Modifier.height(spacing.large)) - LazyColumn( + Column( modifier = Modifier - .clip(RoundedCornerShape(spacing.extraSmall)) .fillMaxWidth() - .heightIn(spacing.extraLarge, spacing.extraLarge * 5) + .clip(RoundedCornerShape(spacing.extraSmall)) .background(MaterialTheme.colorScheme.surfaceContainer) + .semantics { + collectionInfo = CollectionInfo(rowCount = beacons.size, columnCount = 1) + } ) { - items(beacons) { beacon -> + beacons.forEachIndexed { index, beacon -> AudioBeaconItem( text = stringResource(getBeaconResourceId(beacon)), foregroundColor = MaterialTheme.colorScheme.onSurface, @@ -174,8 +177,17 @@ fun AudioBeacons( onSelect = { onBeaconSelected(beacon) }, - modifier = Modifier.testTag("${beacon}Button") - .focusable(), + modifier = Modifier + .testTag("${beacon}Button") + .focusable() + .semantics { + collectionItemInfo = CollectionItemInfo( + rowIndex = index, + rowSpan = 1, + columnIndex = 0, + columnSpan = 1 + ) + }, ) } } From 178e40dc1be3c97e7e4d80bf11b48577a29c69f2 Mon Sep 17 00:00:00 2001 From: Dave Craig Date: Mon, 20 Jul 2026 11:55:10 +0100 Subject: [PATCH 15/23] Fix offline search for localized (name:xx) POI names TileSearch only ever resolved fuzzy hits back to a feature via the literal "name" tag, so POIs whose matching text lived under name:hi, name:pa etc. (very common in OSM/OpenMapTiles data) were found by the fuzzy pass but silently dropped during feature resolution, leaving non-English searches (e.g. Hindi) empty. Also surface the actual matched name variant instead of always re-reading the Latin "name" tag, and stop normalizeForSearch from stripping non-Latin combining marks (Devanagari matras/virama etc.) that it was only meant to strip for Latin/Greek/Cyrillic accents. Co-Authored-By: Claude Sonnet 5 --- .../geoengine/utils/geocoders/TileSearch.kt | 38 ++-- .../scottishtecharmy/soundscape/SearchTest.kt | 204 +++++++++++++----- 2 files changed, 172 insertions(+), 70 deletions(-) diff --git a/app/src/main/java/org/scottishtecharmy/soundscape/geoengine/utils/geocoders/TileSearch.kt b/app/src/main/java/org/scottishtecharmy/soundscape/geoengine/utils/geocoders/TileSearch.kt index 9c4d79801..dd311e2a1 100644 --- a/app/src/main/java/org/scottishtecharmy/soundscape/geoengine/utils/geocoders/TileSearch.kt +++ b/app/src/main/java/org/scottishtecharmy/soundscape/geoengine/utils/geocoders/TileSearch.kt @@ -323,13 +323,10 @@ class TileSearch(val offlineExtractPath: String, for(layer in tile.layersList) { // Was the string found in transportation or POI? TODO: Or both? if((layer.name == "transportation") || (layer.name == "poi")){ - var nameTag = -1 - for ((index, value) in layer.keysList.withIndex()) { - if (value == "name") { - nameTag = index - break - } - } + val nameTagIndices = layer.keysList.withIndex() + .filter { (_, key) -> isNameKey(key) } + .map { it.index } + .toSet() var stringKey = -1 for ((index, value) in layer.valuesList.withIndex()) { @@ -361,7 +358,7 @@ class TileSearch(val offlineExtractPath: String, var found = false for (tag in feature.tagsList) { if (firstInPair) { - skip = (tag != nameTag) + skip = (tag !in nameTagIndices) } else { if(!skip) { val raw = layer.getValues(tag) @@ -546,8 +543,10 @@ class TileSearch(val offlineExtractPath: String, val streetResults = whittledResults.map { result -> val mvt = MvtFeature() - // Copy in the MVT properties - mvt.name = result.properties.get("name") as? String? + // Copy in the MVT properties. Use the exact name variant that was actually matched + // during search (which may be a localized name:xx tag rather than plain "name"), so + // the result surfaces the name that matched rather than always the Latin "name" tag. + mvt.name = result.string mvt.featureClass = result.properties.get("class") as? String? mvt.featureSubClass = result.properties.get("subclass") as? String? mvt.properties = result.properties @@ -658,6 +657,13 @@ class TileSearch(val offlineExtractPath: String, } } +// OSM/OpenMapTiles tags a feature's name under several keys depending on script/language: plain +// "name", BCP-47/ISO-639 language-tagged variants ("name:hi", "name:en", "name:pa", ...), and +// OpenMapTiles-generated fallbacks ("name_int", "int_name"). All of these count as a name tag when +// resolving a fuzzy search hit back to the feature that produced it. +fun isNameKey(key: String): Boolean = + key == "name" || key.startsWith("name:") || key == "name_int" || key == "int_name" + private val apostrophes = setOf('\'', '’', '‘', '‛', 'ʻ', 'ʼ', 'ʹ', 'ꞌ', ''') fun normalizeForSearch(input: String): String { // Unicode normalize (decompose accents etc.) @@ -667,9 +673,17 @@ fun normalizeForSearch(input: String): String { var lastWasSpace = false for (ch in normalizedString) { - // Remove combining marks (diacritics) val type = Character.getType(ch) - if (type == Character.NON_SPACING_MARK.toInt()) continue + if (type == Character.NON_SPACING_MARK.toInt()) { + // Only strip Latin/Greek/Cyrillic combining diacritics, which is what NFKD produces + // for accented letters (e.g. é -> e + U+0301). Combining marks from other scripts + // (Devanagari matras/virama, Arabic harakat, Hebrew niqqud, etc.) are semantically + // essential, not decorative, so keep them verbatim. + if (ch.code in 0x0300..0x036F) continue + sb.append(ch) + lastWasSpace = false + continue + } // Make apostrophes disappear completely (missing/extra apostrophes become irrelevant) if (ch in apostrophes) continue diff --git a/app/src/test/java/org/scottishtecharmy/soundscape/SearchTest.kt b/app/src/test/java/org/scottishtecharmy/soundscape/SearchTest.kt index 027b7bac5..1b9059145 100644 --- a/app/src/test/java/org/scottishtecharmy/soundscape/SearchTest.kt +++ b/app/src/test/java/org/scottishtecharmy/soundscape/SearchTest.kt @@ -32,14 +32,17 @@ class SearchTest { val offlineGeocoder = OfflineGeocoder(gridState, settlementState, tileSearch) val result8 = offlineGeocoder.getAddressFromLngLat( - UserGeometry(LngLatAlt( -4.3118, 55.9400), 90.0), + UserGeometry(LngLatAlt(-4.3118, 55.9400), 90.0), null, ignoreHouseNumbers = true ) - assertEquals("On Crossveggate between Killermont Road to dead end and Glasgow Road", result8!!.name) + assertEquals( + "On Crossveggate between Killermont Road to dead end and Glasgow Road", + result8!!.name + ) val result7 = offlineGeocoder.getAddressFromLngLat( - UserGeometry(LngLatAlt( -4.3108846, 55.9495440), 180.0), + UserGeometry(LngLatAlt(-4.3108846, 55.9495440), 180.0), null, ignoreHouseNumbers = true ) @@ -47,39 +50,51 @@ class SearchTest { val result5 = offlineGeocoder.getAddressFromLngLat( - UserGeometry(LngLatAlt( -4.3117919, 55.9486518), 0.0), + UserGeometry(LngLatAlt(-4.3117919, 55.9486518), 0.0), null, ignoreHouseNumbers = true ) assertEquals("On Craigmillar Avenue, 220 metres since Tannoch Drive", result5!!.name) val result6 = offlineGeocoder.getAddressFromLngLat( - UserGeometry(LngLatAlt( -4.3107229, 55.9438725), 0.0), + UserGeometry(LngLatAlt(-4.3107229, 55.9438725), 0.0), null, ignoreHouseNumbers = true ) - assertEquals("On Strathblane Road between Kersland Lane and Path to Kersland Drive", result6!!.name) + assertEquals( + "On Strathblane Road between Kersland Lane and Path to Kersland Drive", + result6!!.name + ) val result1 = offlineGeocoder.getAddressFromLngLat( UserGeometry(LngLatAlt(-4.3103500, 55.9396160), 90.0), null, ignoreHouseNumbers = true ) - assertEquals("On Dougalston Avenue between Glasgow Road and Path to Dougalston Gardens North", result1!!.name) + assertEquals( + "On Dougalston Avenue between Glasgow Road and Path to Dougalston Gardens North", + result1!!.name + ) val result2 = offlineGeocoder.getAddressFromLngLat( UserGeometry(LngLatAlt(-4.3088339, 55.9396215), 90.0), null, ignoreHouseNumbers = true ) - assertEquals("On Dougalston Avenue between South Glassford Street and Briarwell Road", result2!!.name) + assertEquals( + "On Dougalston Avenue between South Glassford Street and Briarwell Road", + result2!!.name + ) val result3 = offlineGeocoder.getAddressFromLngLat( UserGeometry(LngLatAlt(-4.3069511, 55.9400774), 90.0), null, ignoreHouseNumbers = true ) - assertEquals("On Dougalston Avenue between Briarwell Road and Connell Crescent to dead end", result3!!.name) + assertEquals( + "On Dougalston Avenue between Briarwell Road and Connell Crescent to dead end", + result3!!.name + ) // Check that the street address also works val result4 = offlineGeocoder.getAddressFromLngLat( @@ -101,74 +116,122 @@ class SearchTest { val tileSearch = TileSearch(offlineExtractPath, gridState, settlementState) val offlineGeocoder = OfflineGeocoder(gridState, settlementState, tileSearch) - var results = offlineGeocoder.getAddressFromLocationName( "Greggs", currentLocation, null)!! + var results = + offlineGeocoder.getAddressFromLocationName("Greggs", currentLocation, null)!! assertEquals("Greggs", results[0].name) assertEquals("OSM Feature", results[0].featureName?.additionalText ?: "") - results = offlineGeocoder.getAddressFromLocationName("5 buchanan street milngavie", currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "5 buchanan street milngavie", + currentLocation, + null + )!! assertEquals("5 Buchanan Street", results[0].name) assertEquals("5 Buchanan Street, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "12 roselea drive", currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "12 roselea drive", + currentLocation, + null + )!! assertEquals(1, results.size) - results = offlineGeocoder.getAddressFromLocationName("5 buchanan street mulngaviy", currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "5 buchanan street mulngaviy", + currentLocation, + null + )!! assertEquals("5 Buchanan Street", results[0].name) assertEquals("5 Buchanan Street, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName("5 buchanan street north woodside",currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "5 buchanan street north woodside", + currentLocation, + null + )!! assertEquals("5 Buchanan Street", results[0].name) assertEquals("5 Buchanan Street, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName("5 buchanan street clachan of campsie",currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "5 buchanan street clachan of campsie", + currentLocation, + null + )!! assertEquals("5 Buchanan Street", results[0].name) assertEquals("5 Buchanan Street, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName("5 buchanan street",currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "5 buchanan street", + currentLocation, + null + )!! assertEquals("5 Buchanan Street", results[0].name) assertEquals("5 Buchanan Street, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName("post office", currentLocation, null)!! + results = + offlineGeocoder.getAddressFromLocationName("post office", currentLocation, null)!! assertEquals("Craigash Road Post Office", results[0].name) assertEquals("34 Craigash Road, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "roselea dr 8", currentLocation, null)!! + results = + offlineGeocoder.getAddressFromLocationName("roselea dr 8", currentLocation, null)!! assertEquals("8 Roselea Drive", results[0].name) assertEquals("8 Roselea Drive, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "20 roselea drive milngavie", currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "20 roselea drive milngavie", + currentLocation, + null + )!! assertEquals("20 Roselea Drive", results[0].name) assertEquals("20 Roselea Drive, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "greggs ", currentLocation, null)!! + results = + offlineGeocoder.getAddressFromLocationName("greggs ", currentLocation, null)!! assertEquals("Greggs", results[0].name) assertEquals("6 Douglas Street, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "milverton avenue", currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "milverton avenue", + currentLocation, + null + )!! assertEquals("Milverton Avenue", results[0].name) assertEquals("Milverton Avenue, Bearsden", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "milverto avenue", currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "milverto avenue", + currentLocation, + null + )!! assertEquals("Milverton Avenue", results[0].name) assertEquals("Milverton Avenue, Bearsden", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "roselea dr", currentLocation, null)!! + results = + offlineGeocoder.getAddressFromLocationName("roselea dr", currentLocation, null)!! assertEquals("Roselea Drive", results[0].name) assertEquals("Roselea Drive, Milngavie", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "dirleton gate", currentLocation, null)!! + results = + offlineGeocoder.getAddressFromLocationName("dirleton gate", currentLocation, null)!! assertEquals("Dirleton Gate", results[0].name) assertEquals("Dirleton Gate, Netherton", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "dirleton gate", currentLocation, null)!! + results = + offlineGeocoder.getAddressFromLocationName("dirleton gate", currentLocation, null)!! assertEquals("Dirleton Gate", results[0].name) assertEquals("Dirleton Gate, Netherton", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "dirleton gate 20", currentLocation, null)!! + results = offlineGeocoder.getAddressFromLocationName( + "dirleton gate 20", + currentLocation, + null + )!! assertEquals("Dirleton Gate", results[0].name) assertEquals("Dirleton Gate, Netherton", results[0].description) - results = offlineGeocoder.getAddressFromLocationName( "craigton road", currentLocation, null)!! + results = + offlineGeocoder.getAddressFromLocationName("craigton road", currentLocation, null)!! assertEquals("Craigton Road", results[0].name) assertEquals("Craigton Road, Milngavie", results[0].description) } @@ -177,7 +240,8 @@ class SearchTest { @Test fun testSearch() { // This does a really crude search through the "name" property of the POI features - val gridState = getGridStateForLocation(sixtyAcresCloseTestLocation, MAX_ZOOM_LEVEL, GRID_SIZE) + val gridState = + getGridStateForLocation(sixtyAcresCloseTestLocation, MAX_ZOOM_LEVEL, GRID_SIZE) val testPoiCollection = gridState.getFeatureCollection(TreeId.POIS) // As there isn't much going on in the tiles then it should return the local village shop/coffee place @@ -198,21 +262,22 @@ class SearchTest { // Most of the code here is getting some locations along a known road to walk along val roadTree = gridState.getFeatureTree(TreeId.ROADS) - var way : Way? = null - for(road in roadTree.getAllCollection()) { - if((road as Way).name == streetName) { + var way: Way? = null + for (road in roadTree.getAllCollection()) { + if ((road as Way).name == streetName) { way = road break } } - if(way != null) { + if (way != null) { val ways = mutableListOf>() - val intersection = way.intersections[WayEnd.END.id] ?: way.intersections[WayEnd.START.id] - if(intersection != null) { + val intersection = + way.intersections[WayEnd.END.id] ?: way.intersections[WayEnd.START.id] + if (intersection != null) { way.followWays(intersection, ways) for (segment in ways) { - for(point in (segment.second.geometry as LineString).coordinates) { + for (point in (segment.second.geometry as LineString).coordinates) { val nearestHouse = streetTrees[streetName]?.getNearestFeature( point, gridState.ruler @@ -230,9 +295,11 @@ class SearchTest { } } - fun streetDescription(location: LngLatAlt, - streetName: String, - describeLocations: List) { + fun streetDescription( + location: LngLatAlt, + streetName: String, + describeLocations: List + ) { val gridState = getGridStateForLocation(location, MAX_ZOOM_LEVEL, GRID_SIZE) val nearbyWays = gridState.getFeatureTree(TreeId.WAYS_SELECTION) .getNearestCollection( @@ -242,50 +309,48 @@ class SearchTest { gridState.ruler ) var matchedWay: Way? = null - for(way in nearbyWays) { - if((way as Way).name == streetName) { + for (way in nearbyWays) { + if ((way as Way).name == streetName) { matchedWay = way break } } - if(matchedWay == null) return + if (matchedWay == null) return val description = StreetDescription(streetName, gridState) description.createDescription(matchedWay, null) description.describeStreet() - for(location in describeLocations) { + for (location in describeLocations) { val nearestWay = description.nearestWayOnStreet(location) - if(nearestWay != null) { + if (nearestWay != null) { val houseNumber = description.getStreetNumber(nearestWay.first, location) - println("Interpolated address: ${if(houseNumber.second) "Opposite" else ""} ${houseNumber.first} ${nearestWay.first.name}") - val result = description.describeLocation(location, 90.0, nearestWay.first,null) + println("Interpolated address: ${if (houseNumber.second) "Opposite" else ""} ${houseNumber.first} ${nearestWay.first.name}") + val result = description.describeLocation(location, 90.0, nearestWay.first, null) if ( (result.ahead.distance < 10.0) && - ((result.ahead.distance < result.behind.distance) || result.behind.name.isEmpty())) - { + ((result.ahead.distance < result.behind.distance) || result.behind.name.isEmpty()) + ) { println("At ${result.ahead.name}") - } - else if (result.behind.distance < 10.0) { + } else if (result.behind.distance < 10.0) { println("At ${result.behind.name}") - } - else if(result.behind.name.isNotEmpty() && result.ahead.name.isNotEmpty()) { + } else if (result.behind.name.isNotEmpty() && result.ahead.name.isNotEmpty()) { // TODO: Ideally we'd know the user direction here so that we could give the fraction // as an increasing value e.g. half way, three quarters of the way etc. - val fraction = result.behind.distance/(result.behind.distance + result.ahead.distance) + val fraction = + result.behind.distance / (result.behind.distance + result.ahead.distance) when (fraction) { in 0.2..0.3 -> println("Quarter of the way between: ${result.behind.name} and ${result.ahead.name}") in 0.4..0.6 -> println("Half way between: ${result.behind.name} and ${result.ahead.name}") in 0.7..0.8 -> println("Three quarters way between: ${result.behind.name} and ${result.ahead.name}") else -> { - if(result.ahead.distance < result.behind.distance) + if (result.ahead.distance < result.behind.distance) println("Between: ${result.ahead.name} and ${result.behind.name}, ${result.ahead.distance} from ${result.ahead.name}") else println("Between: ${result.behind.name} and ${result.ahead.name}, ${result.behind.distance} from ${result.behind.name}") } } - } - else if(result.behind.distance < result.ahead.distance) { + } else if (result.behind.distance < result.ahead.distance) { val distance = formatDistanceAndDirection(result.behind.distance, null, null) println("$distance along from ${result.behind.name}") } else { @@ -369,8 +434,8 @@ class SearchTest { gridState.ruler ) var matchedWay: Way? = null - for(way in nearbyWays) { - if((way as Way).name == streetName) { + for (way in nearbyWays) { + if ((way as Way).name == streetName) { matchedWay = way break } @@ -405,7 +470,30 @@ class SearchTest { val buchananStreet = LngLatAlt(-4.3134938, 55.9449487) testLineSearchLocation(buchananStreet, "Buchanan Street") - val buchananStreet2 = LngLatAlt( -4.3136986, 55.9455014) + val buchananStreet2 = LngLatAlt(-4.3136986, 55.9455014) testLineSearchLocation(buchananStreet2, "Buchanan Street") } + + @Test + fun multilingualSearch() { + runBlocking { + val currentLocation = LngLatAlt(-3.2003818, 55.9487360) + val gridState = getGridStateForLocation(currentLocation, MAX_ZOOM_LEVEL, GRID_SIZE) + val settlementState = getGridStateForLocation(currentLocation, 12, 3) + val tileSearch = TileSearch(offlineExtractPath, gridState, settlementState) + val offlineGeocoder = OfflineGeocoder(gridState, settlementState, tileSearch) + + var results = + offlineGeocoder.getAddressFromLocationName("एडिनबर्ग किला", currentLocation, null)!! + assertEquals("एडिनबर्ग किला", results[0].name) + + results = + offlineGeocoder.getAddressFromLocationName("エディンバラ城", currentLocation, null)!! + assertEquals("エディンバラ城", results[0].name) + + results = + offlineGeocoder.getAddressFromLocationName("Эдинбург қамалы", currentLocation, null)!! + assertEquals("Эдинбург қамалы", results[0].name) + } + } } \ No newline at end of file From 30a69de3aa46a67dcecbc9fb91a73b7757618755 Mon Sep 17 00:00:00 2001 From: Dave Craig Date: Mon, 20 Jul 2026 12:26:59 +0100 Subject: [PATCH 16/23] Add test coverage for Photon search language fallback (Arabic etc.) The Photon server only supports en/fr/de + each location's local language, and getPhotonLanguage() already correctly omits the lang param for anything else so Photon falls back to local-language matching - verified this against the live production server for an Arabic query. There was no test coverage for this behavior at all, so add a fast unit test for the fallback logic plus an instrumented end-to-end check against the real server. Co-Authored-By: Claude Sonnet 5 --- .../soundscape/GeocoderTest.kt | 30 ++++++++ .../soundscape/GeoEngineLanguageTest.kt | 71 +++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 app/src/test/java/org/scottishtecharmy/soundscape/GeoEngineLanguageTest.kt diff --git a/app/src/androidTest/java/org/scottishtecharmy/soundscape/GeocoderTest.kt b/app/src/androidTest/java/org/scottishtecharmy/soundscape/GeocoderTest.kt index 61481d6c7..b874a4fee 100644 --- a/app/src/androidTest/java/org/scottishtecharmy/soundscape/GeocoderTest.kt +++ b/app/src/androidTest/java/org/scottishtecharmy/soundscape/GeocoderTest.kt @@ -15,6 +15,8 @@ import kotlinx.coroutines.withTimeoutOrNull import okhttp3.internal.platform.PlatformRegistry.applicationContext import org.json.JSONObject +import org.junit.Assert.assertNotNull +import org.junit.Assert.assertTrue import org.junit.Test import org.junit.runner.RunWith import org.scottishtecharmy.soundscape.components.LocationSource @@ -434,6 +436,34 @@ class GeocoderTest { } } + /** + * The Photon search server is only built with English, French, German and each location's + * local language (see getPhotonLanguage()). A device whose default language is something + * else, e.g. Arabic, isn't one of those, so the language query param must be omitted rather + * than passed through - Photon then falls back to matching/returning the local language, + * which for this Egyptian POI is Arabic. This confirms that end-to-end against the real + * production Photon server, not just the language-selection logic in isolation. + */ + @Test + fun arabicPhotonSearchTest() { + runBlocking { + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + val photonGeocoder = PhotonGeocoder(appContext) + + // Tenth of Ramadan City, Egypt - location of a hospital named "الهلال الاخضر" + // (Al-Hilal Al-Akhdar / "The Green Crescent") in OSM. + val nearby = LngLatAlt(31.7357622, 30.2869636) + val results = photonGeocoder.getAddressFromLocationName( + "الهلال الاخضر", + nearby, + appContext + ) + assertNotNull(results) + assertTrue(results!!.isNotEmpty()) + assertTrue(results.any { it.name.contains("الهلال") }) + } + } + @OptIn(ExperimentalCoroutinesApi::class) @Test fun osmNameAddition() { diff --git a/app/src/test/java/org/scottishtecharmy/soundscape/GeoEngineLanguageTest.kt b/app/src/test/java/org/scottishtecharmy/soundscape/GeoEngineLanguageTest.kt new file mode 100644 index 000000000..f45ab99f0 --- /dev/null +++ b/app/src/test/java/org/scottishtecharmy/soundscape/GeoEngineLanguageTest.kt @@ -0,0 +1,71 @@ +package org.scottishtecharmy.soundscape + +import android.content.SharedPreferences +import org.junit.Test +import org.scottishtecharmy.soundscape.MainActivity.Companion.SEARCH_LANGUAGE_KEY +import org.scottishtecharmy.soundscape.geoengine.getPhotonLanguage +import java.util.Locale +import kotlin.test.assertEquals +import kotlin.test.assertNull + +private class FakeSharedPreferences(private val values: Map) : SharedPreferences { + override fun getString(key: String?, defValue: String?) = values[key] ?: defValue + override fun getAll() = throw NotImplementedError() + override fun getStringSet(key: String?, defValues: MutableSet?) = throw NotImplementedError() + override fun getInt(key: String?, defValue: Int) = throw NotImplementedError() + override fun getLong(key: String?, defValue: Long) = throw NotImplementedError() + override fun getFloat(key: String?, defValue: Float) = throw NotImplementedError() + override fun getBoolean(key: String?, defValue: Boolean) = throw NotImplementedError() + override fun contains(key: String?) = throw NotImplementedError() + override fun edit(): SharedPreferences.Editor = throw NotImplementedError() + override fun registerOnSharedPreferenceChangeListener( + listener: SharedPreferences.OnSharedPreferenceChangeListener? + ) = throw NotImplementedError() + override fun unregisterOnSharedPreferenceChangeListener( + listener: SharedPreferences.OnSharedPreferenceChangeListener? + ) = throw NotImplementedError() +} + +/** + * The Photon search server (https://photon.soundscape.scottishtecharmy.org) is only built with + * English, French, German and each location's local language. Passing any other "lang" query + * param makes Photon return an error, so getPhotonLanguage() must fall back to not passing a + * language at all for unsupported languages (e.g. Arabic) - Photon then returns results matched + * and named in the local language, which is exactly what's wanted. + */ +class GeoEngineLanguageTest { + private fun withDefaultLocale(language: String, block: () -> Unit) { + val original = Locale.getDefault() + try { + Locale.setDefault(Locale.Builder().setLanguage(language).build()) + block() + } finally { + Locale.setDefault(original) + } + } + + @Test + fun unsupportedDeviceLanguageFallsBackToNull() { + withDefaultLocale("ar") { + assertNull(getPhotonLanguage(null)) + assertNull(getPhotonLanguage(FakeSharedPreferences(mapOf(SEARCH_LANGUAGE_KEY to "auto")))) + } + } + + @Test + fun explicitSupportedLanguageOverridesDeviceLocale() { + withDefaultLocale("ar") { + assertEquals("en", getPhotonLanguage(FakeSharedPreferences(mapOf(SEARCH_LANGUAGE_KEY to "en")))) + } + } + + @Test + fun supportedDeviceLanguageIsPassedThrough() { + withDefaultLocale("de") { + assertEquals("de", getPhotonLanguage(null)) + } + withDefaultLocale("fr") { + assertEquals("fr", getPhotonLanguage(FakeSharedPreferences(mapOf(SEARCH_LANGUAGE_KEY to "auto")))) + } + } +} From 15b58aa1edb4595b4d8767c7dc4d5f5737b555cf Mon Sep 17 00:00:00 2001 From: Dave Craig Date: Mon, 20 Jul 2026 13:46:17 +0100 Subject: [PATCH 17/23] Improve audio beacons onboarding screen The main change here is removing the audio beacons being a scrolling list within the screen and instead just having the screen be bigger an containing the whole list. This makes Maestro tests much easier as swipping upwards works the same at any point on the screen. Rows had been split into separate beacon+icon by mistake at some point. That's fixed. --- .../soundscape/GeocoderTest.kt | 3 +- .../audiobeacons/AudioBeaconItem.kt | 6 ++-- .../onboarding/audiobeacons/AudioBeacons.kt | 30 +++++++++++++------ 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/app/src/androidTest/java/org/scottishtecharmy/soundscape/GeocoderTest.kt b/app/src/androidTest/java/org/scottishtecharmy/soundscape/GeocoderTest.kt index b874a4fee..f628972f1 100644 --- a/app/src/androidTest/java/org/scottishtecharmy/soundscape/GeocoderTest.kt +++ b/app/src/androidTest/java/org/scottishtecharmy/soundscape/GeocoderTest.kt @@ -444,7 +444,8 @@ class GeocoderTest { * which for this Egyptian POI is Arabic. This confirms that end-to-end against the real * production Photon server, not just the language-selection logic in isolation. */ - @Test + //@Test + // This test requires the photon server to be available - but it's unknown here fun arabicPhotonSearchTest() { runBlocking { val appContext = InstrumentationRegistry.getInstrumentation().targetContext diff --git a/app/src/main/java/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeaconItem.kt b/app/src/main/java/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeaconItem.kt index d021aad24..fe2df675f 100644 --- a/app/src/main/java/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeaconItem.kt +++ b/app/src/main/java/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeaconItem.kt @@ -45,7 +45,7 @@ fun AudioBeaconItem( Icons.Rounded.Done, contentDescription = null, tint = foregroundColor, - modifier = modifier + modifier = Modifier .size(spacing.icon) ) } @@ -57,7 +57,7 @@ fun AudioBeaconItem( ) Row( horizontalArrangement = Arrangement.End, - modifier = modifier + modifier = Modifier .fillMaxWidth() .padding(end = spacing.small) ) { @@ -65,7 +65,7 @@ fun AudioBeaconItem( Icons.Rounded.ChevronRight, contentDescription = null, tint = foregroundColor, - modifier = modifier + modifier = Modifier .size(spacing.icon) ) } diff --git a/app/src/main/java/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeacons.kt b/app/src/main/java/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeacons.kt index 1535e747c..a1b125d0a 100644 --- a/app/src/main/java/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeacons.kt +++ b/app/src/main/java/org/scottishtecharmy/soundscape/screens/onboarding/audiobeacons/AudioBeacons.kt @@ -10,11 +10,8 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.requiredHeight -import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.items import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll @@ -31,6 +28,10 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource +import androidx.compose.ui.semantics.CollectionInfo +import androidx.compose.ui.semantics.CollectionItemInfo +import androidx.compose.ui.semantics.collectionInfo +import androidx.compose.ui.semantics.collectionItemInfo import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.style.TextAlign @@ -159,14 +160,16 @@ fun AudioBeacons( ) Spacer(modifier = Modifier.height(spacing.large)) - LazyColumn( + Column( modifier = Modifier - .clip(RoundedCornerShape(spacing.extraSmall)) .fillMaxWidth() - .heightIn(spacing.extraLarge, spacing.extraLarge * 5) + .clip(RoundedCornerShape(spacing.extraSmall)) .background(MaterialTheme.colorScheme.surfaceContainer) + .semantics { + collectionInfo = CollectionInfo(rowCount = beacons.size, columnCount = 1) + } ) { - items(beacons) { beacon -> + beacons.forEachIndexed { index, beacon -> AudioBeaconItem( text = stringResource(getBeaconResourceId(beacon)), foregroundColor = MaterialTheme.colorScheme.onSurface, @@ -174,8 +177,17 @@ fun AudioBeacons( onSelect = { onBeaconSelected(beacon) }, - modifier = Modifier.testTag("${beacon}Button") - .focusable(), + modifier = Modifier + .testTag("${beacon}Button") + .focusable() + .semantics { + collectionItemInfo = CollectionItemInfo( + rowIndex = index, + rowSpan = 1, + columnIndex = 0, + columnSpan = 1 + ) + }, ) } } From 4fe3d6677ba9e04199d54f777935ca67d83440d6 Mon Sep 17 00:00:00 2001 From: davecraig <8530624+davecraig@users.noreply.github.com> Date: Mon, 20 Jul 2026 13:14:56 +0000 Subject: [PATCH 18/23] Bump version to 1.1.4, version code 206 --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index cf084c0bf..5e27e546e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -55,8 +55,8 @@ android { applicationId = "org.scottishtecharmy.soundscape" minSdk = 30 targetSdk = 35 - versionCode = 205 - versionName = "1.1.3" + versionCode = 206 + versionName = "1.1.4" // Maintaining this list means that we can exclude translations that aren't complete yet resourceConfigurations.addAll(listOf( From f9ad73c5dbc207797a169e473324c45516c02a85 Mon Sep 17 00:00:00 2001 From: davecraig <8530624+davecraig@users.noreply.github.com> Date: Mon, 20 Jul 2026 13:23:41 +0000 Subject: [PATCH 19/23] New documentation screenshots --- docs/documentationScreens/homeScreen.png | Bin 400418 -> 400418 bytes .../homeScreenWithRoute.png | Bin 316263 -> 316263 bytes docs/documentationScreens/routeDetails.png | Bin 230044 -> 230044 bytes docs/documentationScreens/routeEdit.png | Bin 124145 -> 124145 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/documentationScreens/homeScreen.png b/docs/documentationScreens/homeScreen.png index e947b519fcf7b97004a90755657be8f4321a587e..657bcedb91fbed3dfe2b35f429fd85cb00076c0e 100644 GIT binary patch delta 197 zcmZ3qLt@bmi3wTtBD~`2`xteM7#J8-OI#yLQW8s2t&)pUffR$0fsvW6fw``cL5QKT zm65TPvAMQ^ft7)Q#m$K?Q8eV{r(~v8;@05Vq8SR*paHj`Br`X)xFj)Gz5t6RONcFg e>x!>8b1=4ZFoG}>5HkZY3lOtz=U`-$k_G@jM>72Y delta 197 zcmZ3qLt@bmi3wTt!dyo3&oZ*g85kH;OI#yLQW8s2t&)pUffR$0fsvW6fw``sWr(4H zm8pT1k)^hQft7(lXm+g~iiX_$l+3hB+!|EOjy3@`XuxeK$;?eHE=kOlFTm7fYzVQX eCvDY|W)8-74n`1W0%B$$W&vW>?Hr73QqlmSWiw|0 diff --git a/docs/documentationScreens/homeScreenWithRoute.png b/docs/documentationScreens/homeScreenWithRoute.png index 6a061d5746b484a8ef660f7a0d1ebf2adfef7685..d614619ef0a04cb75d0a10c053a762d7e16d3802 100644 GIT binary patch delta 189 zcmaF9O!)aS;R#vwBD~`2`xteM7#J8-OI#yLQW8s2t&)pUffR$0fsvW6fw``cL5QKT zm65TPvAMQ^ft7)Q#m$K?Q8eV{r(~v8;@05Vq8SR*paHj`Br`X)xFj)Gz5t6RONcFg Z>x!>8b1=4ZFoG}>5HoM*U}TBE1OV@QGb#W8 delta 189 zcmaF9O!)aS;R#vw!dyo3&oZ*g85kH;OI#yLQW8s2t&)pUffR$0fsvW6fw``sWr(4H zm8pT1k)^hQft7(lXm+g~iiX_$l+3hB+!|EOjy3@`XuxeK$;?eHE=kOlFTm7fYzVQX ZCvDY|W)8-74n`1W0%GRv9E>dSmjF&!Gn4=T diff --git a/docs/documentationScreens/routeDetails.png b/docs/documentationScreens/routeDetails.png index 7ab923efb53b579f1ff0d71fd81e57fd94e52bcf..a1e3bc5d9bc424fe47b9a764529105e9da2dadf8 100644 GIT binary patch delta 185 zcmbQ!$~UK#Z$ehR2(P&MK1LlQ1_lPz64!{5l*E!$tK_0oAjM#0U}UCiV6JOq5MpR- zWn^q+Y_4r!U}a!nadYBJ6b-rgDVb@NxHWjTXodncXuxeK$;?eHE=kOlFTkS75@L(r Wy5j529E|N8j3CUkor95iN+SS;rZJcR delta 185 zcmbQ!$~UK#Z$ehRFqe@+0H3=T0|SFRdP`(kYX@0Ff!9MFxNG-3^6pY zGBvO=veY&(ure?R&91dW(U6;;l9^VCTZ4+((I%h<4Y&;@nYpROC5gH61(=$Q4I#Gl Xq^(-g%)!{s!3e@k+c_ASr!)cp4WKZ? diff --git a/docs/documentationScreens/routeEdit.png b/docs/documentationScreens/routeEdit.png index 37b6b48e5c441c2ef37c088924dfbb3ea2e36bce..122400d19964b78284f3ef417800f7a11c8fedee 100644 GIT binary patch delta 177 zcmex(lKtaJ_6b?_BD~`2`xteM7#J8-OI#yLQW8s2t&)pUffR$0fsvW6fw``cL5QKT zm65TPvAMQ^ft7)Q#m$K?Q8eV{r(~v8;@05Vq8SR*paHj`Br`X)xFj)Gz5t6RONcFg R>x!>8b1-h_U}Svx7y!%iGEM*h delta 177 zcmex(lKtaJ_6b?_!dylQ0etRW3=9maC9V-ADTyViR>?)FK#IZ0z{pJ3z+BhRGQ`lp z%GAKh$Wq(Dz{U|= From cb206a974e7817f0266865532d19e3a6aeae0415 Mon Sep 17 00:00:00 2001 From: davecraig <8530624+davecraig@users.noreply.github.com> Date: Tue, 21 Jul 2026 09:17:50 +0000 Subject: [PATCH 20/23] Bump version to 1.1.5, version code 207 --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5e27e546e..9e624175d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -55,8 +55,8 @@ android { applicationId = "org.scottishtecharmy.soundscape" minSdk = 30 targetSdk = 35 - versionCode = 206 - versionName = "1.1.4" + versionCode = 207 + versionName = "1.1.5" // Maintaining this list means that we can exclude translations that aren't complete yet resourceConfigurations.addAll(listOf( From d37e2e811246d79e9c901b9305c449e9fd43eebb Mon Sep 17 00:00:00 2001 From: Dave Craig Date: Tue, 21 Jul 2026 09:59:41 +0100 Subject: [PATCH 21/23] Fix ClassCastException when interpolating polygon-geometry house numbers StreetDescription.getInterpolateLocation() assumed every house number feature had Point geometry, but building/POI polygons tagged with a housenumber also get added to the street's house number map. Use getCentralPointForFeature() (already used elsewhere for this) instead of casting directly to Point. Co-Authored-By: Claude Sonnet 5 --- .../utils/geocoders/StreetDescription.kt | 10 +++++--- .../scottishtecharmy/soundscape/SearchTest.kt | 23 +++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/scottishtecharmy/soundscape/geoengine/utils/geocoders/StreetDescription.kt b/app/src/main/java/org/scottishtecharmy/soundscape/geoengine/utils/geocoders/StreetDescription.kt index 6ceafbe15..29685ad40 100644 --- a/app/src/main/java/org/scottishtecharmy/soundscape/geoengine/utils/geocoders/StreetDescription.kt +++ b/app/src/main/java/org/scottishtecharmy/soundscape/geoengine/utils/geocoders/StreetDescription.kt @@ -20,7 +20,6 @@ import org.scottishtecharmy.soundscape.geoengine.utils.getSideOfLine import org.scottishtecharmy.soundscape.geoengine.utils.rulers.Ruler import org.scottishtecharmy.soundscape.geojsonparser.geojson.LineString import org.scottishtecharmy.soundscape.geojsonparser.geojson.LngLatAlt -import org.scottishtecharmy.soundscape.geojsonparser.geojson.Point import java.util.SortedMap import kotlin.collections.iterator import kotlin.collections.set @@ -534,10 +533,15 @@ class StreetDescription(val name: String, val gridState: GridState) { if(parsedHaystack == null) continue + // The feature's geometry isn't always a Point - house numbers can also come from + // building or POI polygons that carry a housenumber tag, so use the same helper that + // addHouse uses to get a representative location for the feature. + val centralPoint = getCentralPointForFeature(number.value) ?: continue + if (parsedHaystack == needle) { // We've found an exact match return Pair( - (number.value.geometry as Point).coordinates, + centralPoint, number.value.housenumber ?: "" ) } @@ -557,7 +561,7 @@ class StreetDescription(val name: String, val gridState: GridState) { lastParsed = parsedHaystack lastKey = number.key - lastPoint = (number.value.geometry as Point).coordinates + lastPoint = centralPoint } return null } diff --git a/app/src/test/java/org/scottishtecharmy/soundscape/SearchTest.kt b/app/src/test/java/org/scottishtecharmy/soundscape/SearchTest.kt index 1b9059145..89664a8b4 100644 --- a/app/src/test/java/org/scottishtecharmy/soundscape/SearchTest.kt +++ b/app/src/test/java/org/scottishtecharmy/soundscape/SearchTest.kt @@ -496,4 +496,27 @@ class SearchTest { assertEquals("Эдинбург қамалы", results[0].name) } } + + @Test + fun interpolatedAddressSearchWithPolygonHouseNumber() { + // Regression test for a real crash: "Carnoustie Library" (osm id 6068429362) is real + // data within glasgow-gb.pmtiles, tagged housenumber=21, street=High Street, but with + // Polygon (building outline) geometry rather than the Point geometry that + // StreetDescription.getInterpolateLocation used to assume every house number had. + // Resolving any house number on this street used to throw + // "ClassCastException: Polygon cannot be cast to Point". + runBlocking { + val currentLocation = LngLatAlt(-2.7080655097961426, 56.50118028013476) + val gridState = getGridStateForLocation(currentLocation, MAX_ZOOM_LEVEL, GRID_SIZE) + + val tileSearch = TileSearch(offlineExtractPath, gridState, gridState) + val nearestWay = tileSearch.findNearestNamedWay(currentLocation, "High Street")!! + + val streetDescription = StreetDescription("High Street", gridState) + streetDescription.createDescription(nearestWay, null) + + val result = streetDescription.getLocationFromStreetNumber("21") + assertEquals("21", result?.second) + } + } } \ No newline at end of file From fcd80e12058d0f9dd4bce1026147c9b19e755abe Mon Sep 17 00:00:00 2001 From: davecraig <8530624+davecraig@users.noreply.github.com> Date: Tue, 21 Jul 2026 09:20:19 +0000 Subject: [PATCH 22/23] Bump version to 1.1.6, version code 208 --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 9e624175d..9ef9b0ed8 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -55,8 +55,8 @@ android { applicationId = "org.scottishtecharmy.soundscape" minSdk = 30 targetSdk = 35 - versionCode = 207 - versionName = "1.1.5" + versionCode = 208 + versionName = "1.1.6" // Maintaining this list means that we can exclude translations that aren't complete yet resourceConfigurations.addAll(listOf( From 674baa6709e3674646071012b63ce182c0cf1684 Mon Sep 17 00:00:00 2001 From: davecraig <8530624+davecraig@users.noreply.github.com> Date: Tue, 21 Jul 2026 09:30:22 +0000 Subject: [PATCH 23/23] New documentation screenshots --- docs/documentationScreens/homeScreen.png | Bin 400418 -> 400418 bytes .../homeScreenWithRoute.png | Bin 316263 -> 316263 bytes docs/documentationScreens/routeDetails.png | Bin 230044 -> 230044 bytes docs/documentationScreens/routeEdit.png | Bin 124145 -> 124145 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/documentationScreens/homeScreen.png b/docs/documentationScreens/homeScreen.png index 657bcedb91fbed3dfe2b35f429fd85cb00076c0e..33834ab4498e58b42ddca99246b37bcb12c5d1bb 100644 GIT binary patch delta 189 zcmZ3qLt@bmi3wTtqMULf`O7S?FfcHvmbgZgq$HN4S|t~y0x1R~10yqC19M#?!w>^Y zD`NvILkn#K11kfA^`=wmQ8eV{r(~v8;?{64L+3D1g9hA&lFZ!H;*!MNi7&ZDV5S=x hKukB0b(zu3!Pw5h2*ON2%nZaVK+L+GgON>28USJRGJOC5 delta 189 zcmZ3qLt@bmi3wTtBD~`2`xteM7#J8-OI#yLQW8s2t&)pUffR$0fsvW6fw``cL5QKT zm65TPvAMQ^ft7)Q#m$K?Q8eV{r(~v8;@05Vq8SR*paHj`Br`X)xFj)m;!AE3xapP< g)BV;JUvK7MZ0BGEVJ0AE24WTnC}Q!>*kacj7jp>r6hK?80>NoH0; cA*N5t^4DqRU~K1L1Yss1X5P-h$P#}E0AiOh*Z=?k delta 181 zcmaF9O!)aS;R#vwBD~`2`xteM7#J8-OI#yLQW8s2t&)pUffR$0fsvW6fw``cL5QKT zm65TPvAMQ^ft7)Q#m$K?Q8eV{r(~v8;@05Vq8SR*paHj`Br`X)xFj)m;!AE3xapP< b)BV;JUvK7MZ0BGEVJ0AE-p;|u5`PH*ka#k8 diff --git a/docs/documentationScreens/routeDetails.png b/docs/documentationScreens/routeDetails.png index a1e3bc5d9bc424fe47b9a764529105e9da2dadf8..e94c5007b892dc1d534b96463902258277fbda86 100644 GIT binary patch delta 177 zcmbQ!$~UK#Z$ehRD5spL#6nId1_lPz64!{5l*E!$tK_0oAjM#0U}UCiV6JOq7-C>) zWo%$&XrXOjU}a#i-gHVmiiX_$l+3hB+#2p>=o|)W(16=el9`)YT#}eO@g=ti%yc6| Zi0PBE{B@c+7~44*L6~Vf2P5;8MgRpGFh&3X delta 177 zcmbQ!$~UK#Z$ehR2(P&MK1LlQ1_lPz64!{5l*E!$tK_0oAjM#0U}UCiV6JOq5MpR- zWn^q+Y_4r!U}a!nadYBJ6b-rgDVb@NxHWjTXodncXuxeK$;?eHE=kOt_>x-$Zn`DJ YbiZ}Q*PA&Q+c_9Pm}xr)BlDC-05E?rnC}Q!>*kacj7jp>r6hK?80>NoH0; UA*N5t^4DqRVBF5Z$oTRx08G{}`~Uy| delta 169 zcmex(lKtaJ_6b?_BD~`2`xteM7#J8-OI#yLQW8s2t&)pUffR$0fsvW6fw``cL5QKT zm65TPvAMQ^ft7)Q#m$K?Q8eV{r(~v8;@05Vq8SR*paHj`Br`X)xFj)m;!AE3xapP< T)BV;JUvK7M+|I$s`0_CTb3-wk