The Android app brings CycleStreets routing and turn-by-turn live navigation to your phone.

Related tags

App android
Overview

Build Status

Cyclestreets Android App

What is it?

CycleStreets is a UK-wide cycle journey planner system, which lets you plan routes from A to B to C by bike. It is designed by cyclists, for cyclists, and caters to the needs of both confident and less confident cyclists.

  • Point-to-point tap-to-route cycle routing
  • Point-to-point cycle routing by address or postcode
  • Route display on map, switch route type quickly
  • LiveRide sat-nav voice navigation
  • Save your routes to use again
  • Upload photos of cycling-related problems and good practice
  • See photos near your current location
  • Save your preferred cycling speed, map type etc
  • Downloadable off-line maps available

The latest version

Contribute!

Code contributions are welcome!

You should fork the repo as described here: https://help.github.com/en/github/getting-started-with-github/fork-a-repo

See the Issues list for bug reports: https://github.com/cyclestreets/android/issues

Before adding new features, please create an issue, or contact us: https://www.cyclestreets.org/contacts/

License

CycleStreets Android App Copyright 2010-2020 CycleStreets Ltd.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/

Contacts

Android App written by Jez Higgins and Oliver Lockwood, with contributions from Christopher Fraser, Jonathan Gray, Theodore Hong, Farid Kurbanov, kyegupov, Shaun McDonald, Hilary Newmark, Simon Nuttall, John Singleton, Colin Watson.

CycleStreets contacts details: https://www.cyclestreets.org/contacts/

Comments
  • Enable voice navigation even when screen timed out

    Enable voice navigation even when screen timed out

    User request:

    "recently discovered your awesome android app! A small q - do you know how to make the voice navigation keep working even if the screen timesout? If I force the screen on it works - but then drains battery quite quickly."

    https://twitter.com/sim0nw/status/1273872031864500229

    opened by mvl22 29
  • Upgrading osmdroid dependency to 5.x

    Upgrading osmdroid dependency to 5.x

    This issue is to track upgrading the osmdroid dependency, which I've started looking at.

    There's quite a lot of changes after 4.3, so my thought was to work through iteratively by first upgrading to 5.0.1, resolving issues, and then moving on to 5.1 and 5.2. From experimentation:

    Upgrading to 5.0.1

    In this version, the main non-backward-compatible change that affects us at compile time appears to be the removal of the org.osmdroid.http package, which was done in this commit. From the commit message, it appears to be a desire to move away from Apache HttpClient towards UrlConnection. I can see more than one option on how to proceed:

    1. Continue using Apache HttpClient and implement our own form of the HttpClientFactory classes that have been removed from osmdroid.
    2. Migrate our code that makes REST requests to use UrlConnection instead.

    From reading around blogs, StackOverflow etc I don't think (1) is the way forward, as it seems that Google is not really supporting Apache HttpClient going forward. Quote from http://android-developers.blogspot.co.uk/2011/09/androids-http-clients.html:

    Apache HTTP client has fewer bugs on Eclair and Froyo. It is the best choice for these releases. For Gingerbread and better, HttpURLConnection is the best choice. New applications should use HttpURLConnection; it is where we will be spending our energy going forward.

    Since our minSdkVersion is already 14 (Ice Cream Sandwich) it seems to make sense for us to go down the UrlConnection route, but I'd be grateful for opinions from the maintainers. @jezhiggins @mvl22, what are your thoughts on the above - and, indeed, do you have any better ideas?

    opened by oliverlockwood 19
  • (Optionally) rotate the map with travel direction in LiveRide

    (Optionally) rotate the map with travel direction in LiveRide

    We occasionally get feedback about this, e.g. the following excerpt from a review:

    Would be better if the map rotated with travel direction

    A brief search on the internet threw up this page: https://stackoverflow.com/questions/37575522/osmdroid-how-to-rotate-osm-map-as-per-devices-direction which suggests this isn't too infeasible to achieve; bearing in mind we're currently on the latest version of osmdroid it's probably worth having a go.

    enhancement 
    opened by oliverlockwood 18
  • Number the waypoints?

    Number the waypoints?

    On a Play Store review, a user has suggested "numbered waymarkers to avoid going the wrong way when routes cross."

    Something to be looked into, and considered.

    opened by oliverlockwood 18
  • Add translations

    Add translations

    CycleStreets is currently available only in English. It would be great to support other languages.

    The following strings files all need localisation:

    • https://github.com/cyclestreets/android/blob/master/cyclestreets.vNext/src/main/res/values/strings.xml
    • https://github.com/cyclestreets/android/blob/master/libraries/cyclestreets-core/src/main/res/values/strings.xml
    • https://github.com/cyclestreets/android/blob/master/libraries/cyclestreets-core/src/main/res/values/arrays.xml
    • https://github.com/cyclestreets/android/blob/master/libraries/cyclestreets-fragments/src/main/res/values/strings.xml
    • https://github.com/cyclestreets/android/blob/master/libraries/cyclestreets-track/src/main/res/values/strings.xml
    • https://github.com/cyclestreets/android/blob/master/libraries/cyclestreets-view/src/main/res/values/strings.xml

    For each of the files described in the header comment of this PR, you will need to put a file named the same but placed in a corresponding values-XX directory that you create. XX corresponds to the country code you're translating into.

    A couple more details:

    • Only the values of XML objects should be translated. The name attributes should not be translated as these are what the app uses to identify the text entry.
    • Any entry marked with the XML attribute translatable=false should, as the attribute suggests, not be translated - and in fact must not be included in the localised files at all, otherwise the builds will fail.

    Please check for errors locally, by running ./gradlew lint or similar, to ensure that there are no errors before you submit your PR, as this will save everyone from wasted time. If for whatever reason you can't do this, please ensure you check the status of automated build that runs when your PR is raised, and fix any errors promptly.

    opened by oliverlockwood 18
  • Calculate and display remaining journey in LiveRide.  Shift attribution.

    Calculate and display remaining journey in LiveRide. Shift attribution.

    Would you be able to have a look over this and give me feedback?

    Functionally it works, but I still need to test battery life as the other day when using it my battery went dead after less than 40 minutes (I would normally expect an hour in LiveRide). I hope to test pre- and post- versions this week. I know I could use tools but I'd like to do it for real :-)

    Also I haven't done the unit tests yet.

    Thanks!

    Test remaining journey.pdf

    opened by HilaryN 17
  • 354 add individual photo dates

    354 add individual photo dates

    I wasn't able to pull in the datetime as a string as implied in the api documentation - I had to make it a long in order to get it to work. I've added a test for datetime in RetrofitApiClientTest.testGetPhotos and got the unit test to work by editing photos.json and adding in the datetime in there. I added the correct datetime in long format for the photo which was being tested on (the last one in photos.json) and a dummy datetime (123) for the others. Let me know if there is a different way to update the photos.json file rather than manually editing it as I have done.

    opened by HilaryN 16
  • Publish beta builds using official Android methods

    Publish beta builds using official Android methods

    We should do this.

    We'll need to decide whether we want open or closed beta testing. (see https://support.google.com/googleplay/android-developer/answer/3131213?hl=en-GB).

    opened by oliverlockwood 16
  • Duplicate photo uploads

    Duplicate photo uploads

    I'm finding that when I upload a photo, it'll often be uploaded twice, rather than just once. I think it may be more likely to happen when I'm using mobile data, and the phone thinks there is an error on the upload, so tries again.

    opened by smsm1 15
  • Server:

    Server: "Too short" error message for leisure routing doesn't appear as presumably intended

    If you hit http://www.cyclestreets.net/api/journey.json?key=redacted&plan=leisure&itinerarypoints=0.125325,52.219285&distance=30&reporterrors=1

    the error message that comes back is:

    {
      "error": "Too short: journeys must be longer than 4 metres. (Your requested journey was  metres)."
    }
    

    It looks to me like the server is failing to pass back the requested distance value in this error message.

    Server issue 
    opened by oliverlockwood 12
  • 391: New compass icon for map rotation in LiveRide

    391: New compass icon for map rotation in LiveRide

    If accepted, I believe this will finish and close #391.

    This makes use of the SVG kindly provided by @si-the-pie, with some theming for enabled/disabled to match what we use in the app.

    Seeing as how pictures are worth a thousand words, I've just pasted screenshots running in the emulator, before and after, with and without highlighting. I turned on the lock-screen-on button as well for comparison.

    Before

    Screen Shot 2020-05-13 at 07 04 28 Screen Shot 2020-05-13 at 07 04 36

    After

    Screen Shot 2020-05-13 at 06 57 02 Screen Shot 2020-05-13 at 06 57 20

    Note that we can't make the icon any bigger inside the floating action button (as FABs have a deliberate white boundary around them).

    Feedback please @jezhiggins, @mvl22 and others if you care to?

    opened by oliverlockwood 12
  • 497 segment showing as walking

    497 segment showing as walking

    To fix #497 and #515

    These images show an example of a journey which has a cycling-then-walking (turn right then turn left) segment pair, followed by a walking-then-cycling (turn left then turn right) segment pair. The segments are kept as 2 segments, but the first of the pair has the combined instruction (e.g. turn right then turn left) and the street of the second segment of the pair (e.g. "Crossing"). The second segment of each pair just has its original instruction.

    Website and app itinerary 84251490 Website and app map 84251490

    If the 2 segments are both cycling or both walking then they are melded into one segment as previously.

    I've done the same for Bridges (see #497 for fudged example).

    I've added tests (SegmentTest) for cycling/walking pairs. The original tests for melding into one segment are still in LiveRideVoiceTest.

    I attempted to fix #515 by making the footprints black, but they still don't show, e.g. on left turn. I think a separate ImageView will be needed but I'll leave that for now. In this example the footprints show: image

    but in this example they don't show on the left turn unless that instruction is selected:

    image

    opened by HilaryN 1
  • Error when selecting item in Itinerary

    Error when selecting item in Itinerary

    Often when I try and select an item in the Itinerary, the app crashes and the logcat shows similar message to here:

    https://stackoverflow.com/questions/54047971/android-8-1-9-0-removeviewview-is-not-supported-in-adapterview

    opened by HilaryN 1
  • Footprints in Itinerary don't show

    Footprints in Itinerary don't show

    The footprints, which indicate that a segment is a walking segment in the Itinerary, don't show unless a segment is selected, because they are white on a white background. It would be nice to be able to see these even if a segment isn't selected.

    image

    opened by HilaryN 5
  • Highlight steep segments on the elevation chart

    Highlight steep segments on the elevation chart

    Our elevation chart currently looks like the screenshot below. There were a number of brutal 25% segments both in the ascent and descent of the first pass I did this morning, which it might have been nice to know more about beforehand 😆

    My idea is to introduce highlighting, something like:

    • yellow for >=5%
    • orange for >=10%
    • red for >=15%
    • black for >=20%

    I haven't yet dug into examples of the data, but probably, achieving this would involve applying a rolling filter on the distance/elevation data arrays, and requiring something like a minimum of 25m distance averaging any of the above gradients for the colouring to be applied, so we don't have artefacts of data-rounding errors making 2m segments being highlighted.

    WhatsApp Image 2022-07-16 at 12 27 20 PM

    enhancement 
    opened by oliverlockwood 3
  • Android no longer offers to open Cyclestreets URLs in the app

    Android no longer offers to open Cyclestreets URLs in the app

    I think this is the result of an Android change a little while ago - I remember reading about how they were changing Intents etc.

    Experienced it yesterday on my Pixel 4a (Android 12) when my brother sent me a link https://cycle.st/j82724336 and it just went into Chrome without giving me the option of Cyclestreets. I had to resort to manually entering the route number instead, which was annoying.

    Bug - regression 
    opened by oliverlockwood 2
Releases(RELEASE_2_2)
  • RELEASE_2_2(May 9, 2014)

Owner
CycleStreets
Cycle journey planning and tools, for cyclists, by cyclists
CycleStreets
Candash - A simple Android app that turns your phone into an instrument cluster for your Tesla Model 3 and Y

What is CANdash? CANdash is an Android app that turns your Android device into a

Nick Nguyen 31 Nov 5, 2022
Simple bottom navigation with side navigation drawer using Jetpack navigation UI made in Kotlin

BottomNavWithSideNavApp simple bottom navigation with side navigation drawer usi

Arvind Meshram 6 Oct 31, 2022
신경 - Cloud-native messaging/pubsub with powerful routing

신경 신경 /ɕʰinɡjʌ̹ŋ/ • sin-gyeong (try it with IPA Reader) nerve Nerve /nərv/ • noun (in the body) a whitish fiber or bundle of fibers that transmits imp

amy null 75 Dec 22, 2022
Android app that allows you to draw anything and turn it into a jigsaw puzzle.

Android-Jigsaw-Puzzle Like to draw? Like to solve jigsaw puzzles? Try JigDraw! This is an Android app where a user draws something and use it to gener

Jay Paulynice 149 Nov 24, 2022
⏺ A simple android app to browse your phone call recordings

⏺ Reky A simple android app to browse your phone call recordings [Under Construction] ✅ TODO Support more file name formats ?? Built-with MVVM with Si

theapache64 12 Feb 8, 2022
An Android app to watch anime on your phone without ads.

Anime X Stream An Android app to watch anime on your phone without ads. WARNING: THIS IS A BETA VERSION of application, THEREFORE YOU MAY ENCOUNTER BU

Mukul Banga 2.2k Jan 4, 2023
Freegemas libGDX is an Android and Java desktop port of Freegemas, which in turn is an open source version of the well known Bejeweled.

freegemas-gdx Freegemas libGDX is an Android, HTML 5 and Java desktop port of Freegemas, which in turn is an open source version of the well known Bej

David Saltares 144 Jun 21, 2022
Freegemas libGDX is an Android and Java desktop port of Freegemas, which in turn is an open source version of the well known Bejeweled.

freegemas-gdx Freegemas libGDX is an Android, HTML 5 and Java desktop port of Freegemas, which in turn is an open source version of the well known Bej

David Saltares 144 Jun 21, 2022
Secret Codes is an Open Source application that allows you to browse through hidden codes of your Android phone.

####Secret Codes is an Open Source application that allows you to browse through hidden codes of your Android phone. This application will scan throug

Simon Marquis 251 Jan 6, 2023
Just a simple tool to turn on/off DND(Do Not Disturb) automatically when using specified apps.

AutoDND Just a simple tool to turn on/off DND(Do Not Disturb) automatically when using specified apps. Ever feel disturbed by notifications and maybe

null 6 May 24, 2022
Market Watch is Android app using Alpha Vantage API. Live stock and market data.

Donate If you like this app please donate Bitcoin: bc1qwqqpuy54qfja7h5dzpd9swgrnkql02t8cacn62 About this app Market Watch allows to watch and track s

Krzysztof Kobiałka 1 May 22, 2022
German public broadcasting live streams as an Android app

Über FAQ Changelog Bibliotheken Über Zapp ist Teil von MediathekView und gibt dir einen schnellen Zugang zu vielen deutschen öffentlich-rechtlichen Fe

MediathekView 140 Jan 1, 2023
A Jetpack Compose-based app to exhibit all the beautiful GLSL Fragment shaders I have ever written, where you can set them as Live Wallpaper.

?? Shader Showcase Shader Showcase is a minimal Android app made with Jetpack Compose, to showcase all the beautiful OpenGL* based Fragment shaders I

Piyush Pradeepkumar 198 Dec 28, 2022
Get a libGDX-powered Android live wallpaper up and running quickly with this project template

This project is a libGDX Android live wallpaper template. It's the demo application created by the libGDX code generator, remade as a live wallpaper.

Kurtis LoVerde 1 Jun 30, 2022
STxMobile is a proof of concept of an Android app for remotely controlling the Raymarine ST2000+ tiller pilot from an Android phone.

STxMobile STxMobile is a proof of concept of an Android app for remotely controlling the Raymarine ST2000+ tiller pilot from an Android phone. The app

Marco 8 Sep 1, 2022
Just a phone app.

Koler ** An update, im currently working on a massive code redesign from scratch, will probably take some time, but will be better A uniquely stylized

null 633 Jan 2, 2023
Endoscope lets you to stream live video between android devices over Wi-Fi! 📱📲

Endoscope - RTSP live video streamer for android devices via Wi-Fi. Project is no longer supported. Alternative solution is under development. Stay tu

Przemek 640 Dec 21, 2022
Rahul Kesharwani 2 Jan 10, 2022
Initiate immediate phone call for React Native on iOS and Android.

react-native-immediate-call-library Initiate immediate phone call for React Native on iOS and Android. Getting started Using npm: npm install react-na

null 7 Sep 7, 2022