Add local GraphHopper turn-by-turn prototype#947
Conversation
Co-authored-by: OpenAI Codex <codex@openai.com>
Co-authored-by: OpenAI Codex <codex@openai.com>
Co-authored-by: OpenAI Codex <codex@openai.com>
Co-authored-by: OpenAI Codex <codex@openai.com>
|
Blimey, thanks - we of course have some thoughts! Our initial aim was to enable Android users to have access to Soundscape and we've still got a few things to do on that side. Routing has always been a much requested feature, but it's also one that we've shied away from. Some of the reasons against it in Soundscape include:
Of course there are very good arguments why Soundscape should include turn-by-turn routing:
We're several months away from where we can really think about this much deeper, but I hope this gives you an idea of our thoughts. We may end up with turn-by-turn routing, but we've got to finish off a load of other stuff first - including releasing an iOS version based on our current code. To directly answer your questions:
It's the obvious choice - but it wouldn't work directly with our offline map files.
If we did go with online GraphHopper routing then we'd go looking to see if we could find any free routing server that we could piggy back on, or see how much it costs to run one, or pay graphhopper.
This would come under the deeper thinking which we can do later.
Yes, that's fine. In summary, this definitely isn't a NO, but it's also not a YES! Thanks for putting in the time to do this and we'd love to have a conversation with you about it. Many of the opinions expressed above and from a risk averse and sighted viewpoint and we have plenty to learn. |
|
Sure, glad to help out. I'll leave this as a draft for now and when/if you'd like to return to this I can return to the conversation with Codex. It was an idea I had so wanted to put Codex to the challenge and see if something could be written. |
Summary
This draft PR adds a first in-app turn-by-turn routing path for Android. It uses a local GraphHopper routing service through
routingProviderUrl, so guidance stays inside Soundscape instead of handing the user to another map app.Changes included:
Start Directionson Location Details, wired throughSoundscapeServiceConnectionintoSoundscapeServiceWhy this is draft
This is not meant as a final product decision. It gives maintainers a working branch to review before we widen scope. I would like feedback on:
routingProviderUrlconfig or move to user or developer settings laterAuthors
blindndangerous <20344049+blindndangerous@users.noreply.github.com>: feature direction, implementation review, commits, and testingOpenAI Codex <codex@openai.com>: implementation assistance. Each commit includesCo-authored-by: OpenAI Codex <codex@openai.com>.Validation
./gradlew.bat :app:testDebugUnitTest --tests "org.scottishtecharmy.soundscape.navigation.*" --tests "org.scottishtecharmy.soundscape.SoundscapeServiceConnectionTest" --console=plain./gradlew.bat :app:assembleDebug :app:assembleDebugAndroidTest --console=plainadb shell am instrument -w -e class org.scottishtecharmy.soundscape.LocationDetailsScreenTest org.scottishtecharmy.soundscape.test/androidx.test.runner.AndroidJUnitRunner./tools/routing/run-turn-by-turn-local-smoke.ps1 -SkipBuild -EnableTalkBackThe smoke run covered GraphHopper route checks from the start point and two off-route points, route start, silent reroute, and a TalkBack-enabled emulator run.
Notes for reviewers
Local setup is documented in
docs/developers/offline-turn-by-turn-routing.md. The smoke script expects GraphHopper on127.0.0.1:8989; the app reaches the same service from the emulator with10.0.2.2:8989throughroutingProviderUrl.