Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GSoC 2024 Path Recorder: Phase 1 - Implement 'Trace Path' on Android #8214

Open
oleg-rswll opened this issue May 19, 2024 · 42 comments
Open
Assignees
Labels
Enhancement New feature or request, an improvement of some existing feature Track Recording Track Recording

Comments

@oleg-rswll
Copy link

oleg-rswll commented May 19, 2024

Overview
Implement the Trace Path (aka "Recent Track") feature on Android to achieve feature parity with iOS. (This feature was previously available in MAPS.ME but was removed from the Android version due to new Google policies regarding background operations.

Reference: #1807)

Problem Statement

  • The Trace Path feature (named Recent Track on iOS), is not as useful to people because they are not aware that it exists, as it is buried in Settings instead of being easily available from the Main menu.
  • "Recent Track" is not a clear name for the feature as it doesn't actually save any tracks.
  • The Trace Path feature is not available on Android.

Criteria

Main menu

Settings

  • The configuration of number of hours to track, is in Settings. A default number of hours needs to set to 8 hours (TBD).

Activation

  • When the feature is activated for the first time, display on the Main Screen at the top the following message: “Recent Path activated. Starting now, your path will display on the map for up to the past X hours, to help you find your way back to where you were.” The message should not require input from a person and automatically fade away in 15 seconds.

Functionality

  • When the feature is enabled, the app starts to track the GPS location for up to the specified number of hours, which is set in setting, and as a rolling window of time.

Main Screen

  • The path displays on the map, showing as blue dots, and the color of the dots get darker the more time is spent at that location. The default color on iOS is very light and not easy to see, the starting point color should be more saturated, potentially 30% more.
  • When Trace Path is active, show a blue circle on the burger menu, to indicate the feature is active. If there is already a red ricle, which indicates that updated maps need to be downloaded, Trace Path is higher priority, show the blue circle over the top of the red button. When Trace Path is deactivated, ensure the red circle continues to show.

Notification

  • Status bar notification: display title "Trace Path active" and below it a description "Recording your traversed path in background"
@oleg-rswll oleg-rswll added Enhancement New feature or request, an improvement of some existing feature Track Recording Track Recording labels May 19, 2024
@oleg-rswll oleg-rswll self-assigned this May 19, 2024
@rtsisyk
Copy link
Contributor

rtsisyk commented May 19, 2024

The Recent Track feature already exists on iOS. For the upcoming Android Record Track feature, my plan is to first achieve feature parity with the existing iOS feature. It's fine if we improve both implementations later or simultaneously, but I prefer not to treat the current ongoing Android work as a greenfield, ground-up development.

Let's restructure this ticket to propose incremental improvements to the existing iOS feature instead. The current ticket suggests too many changes at once. I'm afraid that it will get lost in discussions, jumping from one topic to another. It would be better to create more specialized tickets:

Rename feature from "Recent Track" to "Recent Path". The new name better describes what the feature does.

  • [ios] Rename "Recent Track" to "Recent Path"

The enabling and disabling of the Recent Path feature will move from the Settings menu, to the Main Menu. The configuration of number of hours to track, will continue to be in Settings. A default number of hours needs to set to X hours (TBD).
When the feature is activated for the first time, on the Main Screen at the top, display the following message: “Recent Path activated. Starting now, your path will display on the map for up to the past X hours, to help you find your way back to where you were.”

  • [ios] Move "Recent Track" from Settings to the Main menu

The color of the activated Recent Track feature should be in blue

The color is already blue, isn't it? This looks non-actionable.

Remove the message ...

  • [ios] Remove the message "Disable recording of your recently traveled route?" (Recent Track)

@biodranik
Copy link
Member

  1. Renaming and releasing a different feature than iOS already has will only confuse users. Any renaming (if any) should be done later, and for both OSes.
  2. Renaming is only necessary if the decision to publish two distinct features (Recent track and active track recorder) will be taken. An alternative is to keep the same language, and make it one seamless feature instead of two features (for example, enabling the recent track is done via the same button where track recording is started, the stop button stops recording of the recent path, and user has an opportunity to save the recent path in his Bookmarks and Tracks as a KML file by explicitly confirming it).
  3. I agree with Roman, any other UI/UX changes/improvements should be done separately from this Android task, should be done in separate tickets, and only after a discussion/wording confirmation. As these tasks are closely related to (2) above, and may not be needed at all, let's focus on (2) first.

@oleg-rswll
Copy link
Author

We should probably decide if we actually want to combine the two features into one.

One option is to leave Recent Track on iOS as-is, not implement it on Android, and develop "Path Recorder" to serve both usages (it's still not clear that combining the two features can be done well). "Recent Track" is buried in Settings on iOS, and likely used by only a small number of people, so if they see "Path Recorder", maybe they are more likely to move to the new feature.

@biodranik
Copy link
Member

Combining two features into one with a button is easy: use one button to start and stop recording when necessary. Automatically save the track. Make deleting it very easy (e.g. tap it on the map, and delete from the track's Place Page).

A question is: can we improve the UX without explicit user action of starting/stopping recording?

@Misalf-git
Copy link

A question is: can we improve the UX without explicit user action of starting/stopping recording?

That sounds scary, even if I wouldn't need to be concerned about whatnot. And there are people easier scared than me.

Also my Granny would like to keep battery consumption low without tangling with the options menu.

IMO an easy to reach on/off switch would be appropriate (mandatory?)

@biodranik
Copy link
Member

A switch on the map is very different to a switch in settings.

@Misalf-git
Copy link

A switch on the map is very different to a switch in settings.

I wouldn't know coding wise; From a user perspective, It might nail it.

@oleg-rswll
Copy link
Author

oleg-rswll commented May 20, 2024

At this point the two options seem to be:

  1. Separate features: Recent Track and Track Recorder each have their own buttons in Main Menu. After activating each feature, a status bar would display at the top of the Main Screen showing that recording is in progress.
  2. Remove Recent Track: right now Recent Track is buried in Settings, so it's very likely only a few people are using it. Remove this feature and let people use Track Recorder for finding their way back.

@rtsisyk rtsisyk changed the title Implement Recent Track (Recent Path) on Android Implement Recent Track (Recent Path) on Android (GSoC 2024) May 22, 2024
@rtsisyk
Copy link
Contributor

rtsisyk commented May 24, 2024

At this point the two options seem to be:

Option 1. Separate features: Recent Track and Track Recorder [...]

Let's avoid going deep into the weeds and just call it "Option 1: Track Recorder and Recent Track Recorder as separate features".

2. Option 3. Remove Recent Track: right now Recent Track is buried in Settings, so it's very likely only a few people are using it. Remove this feature and let people use Track Recorder for finding their way back.

I have doubts that it is really an option, but let's track it as "Option 3. Remove Recent Track".

There is also Option 2. Merging of both the features (Recent Track recorder and Track recorder).

The initial version of this idea is already depicted in Figma (@oleg-rswll and @biodranik have access to).

Introduction - In this type we will merge both the features probably can be named as Automatic Track Recorder (TBD). When the user will enable it he/she will be required to select hours (similar to Recent Track Recorder), After the selection of hour (suppose x hours), the Automatic track recording will start. It will show the last x hours path traversed by the user on map and will automatically save the paths after every x interval (from the starting time) into the bookmarks.

Kavi has summarized the pros and cons of existing options in https://docs.google.com/document/d/1LVSluz5nqxViwRDimgHdWYT-f2LW6uYgMMRb0Vv4Zks/edit.

@rtsisyk
Copy link
Contributor

rtsisyk commented May 24, 2024

I need to mention that #8183 implementing Recent Track on Android, "as in iOS," is already under review. If anyone strongly supports Option 3, "Remove Recent Track," you are welcome to share your arguments by Monday. Otherwise, we will eliminate Option 3 and narrow the selection to two options.

@rtsisyk
Copy link
Contributor

rtsisyk commented May 24, 2024

  • Rename feature from "Recent Track" to "Recent Path". The new name better describes what the feature does.

I found a ticket dated Nov 2023: #6678

@biodranik
Copy link
Member

Arguments for removing recent track as a separate feature in settings:

  1. When user navigates, a recent track can be displayed automatically in an unobtrusive way. An easy way to save the recently navigated track can be added. This feature will help people to avoid starting recording or enabling recent track separately. This already covers many use cases for both active track recorder and recent track use cases.
  2. When a user needs a recent track feature, it's easier to explicitly enable it from the main map screen (or maybe from the menu or radial buttons that appear on a tap/long-tap), and also disable it from the map screen. To improve UX, we may implement some auto-disabling logic if necessary. On Android, it's a bit different from iOS because an active foreground service notification will always be "annoying" and "reminding" users that the service is active.
  3. Considering (2) above, the only thing left for an active track recorder to implement is to allow easy saving of the recorded track. The best way could be to tap on the recent/recorded path on the map, see its details in the Place Page (elevation, length, time, etc.) and press there the "Save" button. Start and end points of the track can be dragged/tapped in the Place Page or dragged/tapped on the map. The start of that selected track can be the end of the previously saved track to avoid unnecessary duplication.

@oleg-rswll oleg-rswll changed the title Implement Recent Track (Recent Path) on Android (GSoC 2024) Implement Recent Path (Recent Track) on Android (GSoC 2024) May 25, 2024
@oleg-rswll
Copy link
Author

oleg-rswll commented May 25, 2024

Updated the requirements at the top to incorporate the discussions in this Issue and in Figma. The scope of work in this Issue is like an epic, so it will need to be broken down, one way is to use a task list and covert the tasks into Issues.

@rtsisyk
Copy link
Contributor

rtsisyk commented May 25, 2024

Updated the requirements at the top to incorporate the discussions in this Issue and in Figma. The scope of work in this Issue is like an epic, so it will need to be broken down, one way is to use a task list and covert the tasks into Issues.

Thanks for consolidating all requirements. I plan to get implemented it "like on iOS" first and continue with incremental improvements based on the new requirements after. Step by step.

@rtsisyk
Copy link
Contributor

rtsisyk commented May 26, 2024

I had a conversation with @oleg-rswll on this topic last night.

Roman's start position: Let's release an initial version to users as soon as possible, and then improve it over time.
Oleg's start position: This feature might be replaced by a proper Track Recorder in the future, so let's avoid adding it in its current form, as removing features later can be challenging.

Agreement: Add a toggle to enable Recent Track in the main menu instead of in Settings. This button can be replaced with the proper Track Recorder in the future and users will not need to relearn. The recording interval will be fixed at a constant value (either 12 or 24 hours - TBD), without no option provided.

Rough sketch:

Please note that on Android, this feature has an ongoing notification in the notification bar, as required by the platform. Therefore, there is no strong need to duplicate the recording indication on the map screen:

Action items:

@rtsisyk
Copy link
Contributor

rtsisyk commented May 26, 2024

@oleg-rswll, we probably still want two items below. They sound reasonable to me.

  • When Recent Path has been active for X hours, display message:
    • To: "Recent Path is active. Do you want to keep it enabled?
  • When the feature is activated for the first time, display on the Main Screen at the top the following message: “Recent Path activated. Starting now, your path will display on the map for up to the past X hours, to help you find your way back to where you were.”

Let's implement them by using standard system dialogs.

  • When the feature is activated for the first time, display a dialog
    • Title: Recent Track
    • Text: "This feature my increase the battery usage... bla bla"
    • Buttons: Continue, Cancel
  • When the feature has been active for X hours, display a dialog:
    • Title: Recent Track
    • Text: Organic Maps uses your location in the background to record your recently travelled route.
    • Buttons: Continue, Disable

@biodranik
Copy link
Member

It would be better to focus on reducing the battery usage and avoid annoying users about turning off something they anyway know (from the sticky notification).

@oleg-rswll oleg-rswll changed the title Implement Recent Path (Recent Track) on Android (GSoC 2024) Implement Re cent Path (Recent Track) on Android (GSoC 2024) May 26, 2024
@oleg-rswll oleg-rswll changed the title Implement Re cent Path (Recent Track) on Android (GSoC 2024) GSoC 2024: Phase 1 - Recent Path on Android May 26, 2024
@oleg-rswll
Copy link
Author

@rtsisyk

Title: Recent Track

"Recent Path" name will be used everywhere, correct?

@oleg-rswll
Copy link
Author

oleg-rswll commented May 26, 2024

It would be better to focus on reducing the battery usage and avoid annoying users about turning off something they anyway know (from the sticky notification).

@biodranik Displaying a message doesn't mean there should not be focus on reducing battery consumption. Unless the Recent Path feature can have nearly zero effect on battery, a message will be needed after some period of time.

@kavikhalique
Copy link
Contributor

The recording interval will be fixed at a constant value (either 12 or 24 hours - TBD), without no option provided.

What about keeping the selector of hours in settings as it is and adding one more easy to turn on/off recent path button in main menu as you proposed.

By this control will be more towards user side as well as it will be easier for them to turn it off and on.

And from development side work will also be not much because setting feature is already there just one extra button will be needed.

@rtsisyk @oleg-rswll

@biodranik
Copy link
Member

Unless the Recent Path feature can have nearly zero effect on battery, a message will be needed.

Can you please elaborate which problem this message solves on Android? There is already a sticky notification that will be annoyingly reminding users about active feature. There is no need to annoy users even more. Note that this sticky notification is not present on iOS.

It is important to keep in mind important differences between platforms and not blindly copy patterns (which may not be the best ones anyway).

@rtsisyk
Copy link
Contributor

rtsisyk commented May 26, 2024

@rtsisyk

Title: Recent Track

"Recent Path" name will be used everywhere, correct?

I don't have any strong preference. Wasn't it your initiative to rename the Recent Track? Let's discuss #6678.

@rtsisyk
Copy link
Contributor

rtsisyk commented May 26, 2024

  • if we want to notify the user after every x hours or after any specific time interval then we will require a timer which will be continuously running in background so somewhere it will increase the battery consumption.
  • We are not getting any extra advantage by notifying the user every time.

In my opinion, We can implement it later if users ask for it. Like we can conduct a basic survey or we can open a discussion after some time of release of recent path feature to know if users actually need it or not.

Can we settle on displaying a disclaimer on the first usage of this feature ("When the feature is activated for the first time...") and not displaying any periodic message ("When the feature has been active for X hours...")?

@rtsisyk
Copy link
Contributor

rtsisyk commented May 26, 2024

The recording interval will be fixed at a constant value (either 12 or 24 hours - TBD), without no option provided.

What about keeping the selector of hours in settings as it is and adding one more easy to turn on/off recent path button in main menu as you proposed.

Sounds good to me.

@rtsisyk
Copy link
Contributor

rtsisyk commented May 26, 2024

GSoC 2024: Phase 1 - Recent Path on Android

@oleg-rswll the new title is confusing. This is not a phase 1 of the entire GSoC 2024. We can say that it is a phase 1 of The Track Recorder for Android GSoC 2024 project. But honestly, it was more like a warm-up task ;)

@oleg-rswll oleg-rswll changed the title GSoC 2024: Phase 1 - Recent Path on Android GSoC 2024 Track Recorder: Phase 1 - Recent Path on Android May 26, 2024
@oleg-rswll oleg-rswll changed the title GSoC 2024 Track Recorder: Phase 1 - Recent Path on Android GSoC 2024 Path Recorder: Phase 1 - Recent Path on Android May 26, 2024
@oleg-rswll
Copy link
Author

@rtsisyk issue name updated.

@oleg-rswll oleg-rswll changed the title GSoC 2024 Path Recorder: Phase 1 - Recent Path on Android GSoC 2024 Path Recorder: Phase 1 - Trace Path on Android May 26, 2024
@oleg-rswll oleg-rswll changed the title GSoC 2024 Path Recorder: Phase 1 - Trace Path on Android GSoC 2024 Path Recorder: Phase 1 - Implement 'Trace Path' on Android May 26, 2024
@oleg-rswll
Copy link
Author

Updated the design for this phase:
https://www.figma.com/design/EXZNQgYd09am8DzFSXF82Q?node-id=520-53#816903197

@rtsisyk
Copy link
Contributor

rtsisyk commented May 28, 2024

The plan how to move forward: #8183 (comment)

@oleg-rswll
Copy link
Author

@rtsisyk
Copy link
Contributor

rtsisyk commented Jun 7, 2024

Updated designs with the latest: https://www.figma.com/design/EXZNQgYd09am8DzFSXF82Q/OM-Track-Recorder?node-id=0-1&t=OCPd0vbUcDTXXcwm-1

PTAL comments in Figma.

@oleg-rswll
Copy link
Author

See comments in Figma.

@rtsisyk
Copy link
Contributor

rtsisyk commented Jun 8, 2024

@organicmaps/design could you please help with creating a new icon for "Trace Path" feature? Below is an example we found somewhere on the Internet.


Recording Start

@biodranik
Copy link
Member

Will this icon be later changed to a different recording icon? Or there will be two new menu items with two different icons for the recent track and recorder (I would prefer to avoid it)?

@oleg-rswll
Copy link
Author

image

@rtsisyk it probably makes more sense to have this feature as the second item in the Main Menu list, just below 'Add place to OpenStreetMap'. The 'Map Downloads' functionality is more like a setting that realistically should be automated so that user interaction is not required. 'Settings' is secondary as it's not a feature. 'Donate' has to do with the company, and not at all a feature. So good to have features higher, to be more easily accessible.

@oleg-rswll
Copy link
Author

Will this icon be later changed to a different recording icon? Or there will be two new menu items with two different icons for the recent track and recorder (I would prefer to avoid it)?

@biodranik In Phase 2, the icon will be change to a record icon to reflect the ability to record.

Design here:
https://www.figma.com/file/EXZNQgYd09am8DzFSXF82Q?node-id=632:148&t=OCPd0vbUcDTXXcwm-1&locale=en&type=design#832956458

@biodranik
Copy link
Member

The 'Map Downloads' functionality is more like a setting that realistically should be automated so that user interaction is not required.

Download is an important button now (it was even on the main map screen, and may be a good idea to get it back there) for the following reasons:

  1. New users should be able to easily download maps. Not downloaded maps mean a lost user (non working search, routing, etc.)
  2. Existing users need it to plan remote trips. No planning is possible without downloading maps.
  3. We want our existing users to always update maps.

Until the map downloading/updating process is not automated, this Download/Update button/dialog should be in the focus.

@oleg-rswll
Copy link
Author

oleg-rswll commented Jun 8, 2024

The entire map management experience has a big opportunity for improvement, it should be a lot smoother and should required almost no continuous interaction, it should be an experience closer to online maps. For example the first run experience should set how this is managed, and then it should be mostly hands-off. Of course the functionality and UX needs to be worked through - #5668, #5679 and #7210 mention this, and the use cases you mention, the entire journey needs to be addressed.

It may not be great to having functionality that should be mostly in the background running automatically, highlighted as the second feature.

Seems like a lot of effort is happening in making a case just to have downloads as the second option instead of third option.

@pastk
Copy link
Contributor

pastk commented Jun 9, 2024

  • "Recent Track" is not a clear name for the feature as it doesn't actually save any tracks.

    • Name the feature from "Trace Path". The new name better describes what the feature does.

IMHO "Recent Track" is much more clear (and common). I don't see a connection between a "Track" in the name and an ability to save it.

While "Trace Path" is not clear to me. I guess as a new user I'd have to try enable it to understand what it does..

@rtsisyk
Copy link
Contributor

rtsisyk commented Jun 9, 2024

For sake of time, let's move forward with "Trace Path" and rename it to "Record Track" shortly after implementing "Save" feature.

The 'Map Downloads' functionality is more like a setting that realistically should be automated so that user interaction is not required.

Download is an important button now (it was even on the main map screen, and may be a good idea to get it back there) for the following reasons:

  1. New users should be able to easily download maps. Not downloaded maps mean a lost user (non working search, routing, etc.)
  2. Existing users need it to plan remote trips. No planning is possible without downloading maps.
  3. We want our existing users to always update maps.

Until the map downloading/updating process is not automated, this Download/Update button/dialog should be in the focus.

Let's add it below "Downloads maps" and close this topic. We will never move forward if continue to discuss every bikeshed.

@rtsisyk
Copy link
Contributor

rtsisyk commented Jun 9, 2024

@pastk @patepelo @foss-, "Trace Path" vs "Recent Track" was actively discussed in #6678 (and ten other threads). For sake of time, let's move forward with "Trace Path" and rename ii to "Record Track" as soon as we get the track saving into bookmarks implemented. This bikeshed is not really worth arguing. I can even expect that we would implement the saving feature at the same time as we finish #8183, so this "Trace Path" may not happen at all.

@rtsisyk
Copy link
Contributor

rtsisyk commented Jun 9, 2024

We have enough confusing tickets here. Please review "#8215 Phase 2: Basic Track Recorder" section in Figma and add your comments to it.

Editing: I am keeping this ticket open and unlocked, but please consider commenting UI design in Figma instead.

@rtsisyk rtsisyk closed this as completed Jun 9, 2024
@rtsisyk rtsisyk reopened this Jun 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Enhancement New feature or request, an improvement of some existing feature Track Recording Track Recording
Projects
Status: Released
Development

No branches or pull requests

6 participants