No description
Find a file
Ethan Dalool 33405cd063 Reload the database when resuming full_power.
I had an incident where I was tampering with the database on my
computer, being synced over Syncthing, and I caused a conflict that
made the app stop recording, even though the app UI continued to show
the normal recording icons. Closing and re-opening the db connection
when leaving the house would have helped prevent that.
2023-11-30 17:43:46 -08:00
app Reload the database when resuming full_power. 2023-11-30 17:43:46 -08:00
assets mark start and end of a track with a pin icon (see #95) 2021-03-09 22:27:42 +01:00
gradle/wrapper Updated gradle to 7.2.1. 2023-03-04 21:43:52 -08:00
metadata font style changes & preparing a new release 2022-01-12 15:23:56 +01:00
.gitignore Gitignore app/release/output-metadata.json. 2023-04-02 10:06:50 -07:00
AUTHORS.md Remove CONTRIBUTE.md. 2023-03-26 13:30:32 -07:00
build.gradle Updated gradle to 7.2.1. 2023-03-04 21:43:52 -08:00
gradle.properties Kotlin Rewrite - everything is new 2020-01-02 18:00:37 +01:00
gradlew Update gradle wrapper 2020-07-31 19:50:37 -04:00
gradlew.bat Update gradle wrapper 2020-07-31 19:50:37 -04:00
import_gpx.py Use accuracy=0 for import, not null. 2023-04-09 10:33:53 -07:00
LICENSE.md updated copyright 2022-01-05 17:20:44 +01:00
README.md Add git.voussoir.net mirror. 2023-09-11 21:13:37 -07:00
settings.gradle initial commit 2016-08-29 14:50:41 +02:00
trkpt.svg Improve visual centering of app icon. 2023-04-03 19:55:39 -07:00
trkpt_squircle_128x128.png Improve visual centering of app icon. 2023-04-03 19:55:39 -07:00

trkpt

This is a fork of Trackbook by y20k. Thank you y20k for this great project.

The goal of this fork is to make 24/7 recording easier. I want to be able to run trkpt nearly all of the time. I have written more about this at voussoir.net/writing/obsessed_with_gpx. The main differences between trkpt and Trackbook are:

  1. trkpt stores points in an SQLite database instead of json files.

    • You can put the database in a folder that you sync to your PC with Syncthing.

  2. trkpt does not store "tracks" as objects. Instead, tracks are rendered and exported on the fly by querying the database of trackpoints.

  3. trkpt adds the feature of "homepoints". When you are near a homepoint, trackpoints are not recorded. You can put a homepoint at your house or other places where you spend lots of time, so that you don't get large clouds of useless trackpoints at those locations.

    • Although Trackbook has a feature to omit points that are close together, natural GPS inaccuracy and drift is large enough to create points that are far apart, especially while indoors, leading to clouds over time. You can choose the radius of your homepoint to eliminate these clouds.

Power management

trkpt has three states of power management. The states transition like this:

  1. FULL POWER: receives location updates as fast as Android provides them.

    Stay near homepoint for a few minutes → Sleep

    Unable to receive fix for several minutes and not charging → Dead

  2. SLEEPING: receives location updates at a slower pace.

    Motion sensors → Full power

    Location leaves homepoint → Full power (presumably motion sensors will trigger, but just in case)

    Charger plugged or unplugged → Full power

  3. DEAD: disables location updates.

    Motion sensors → Full power

    Charger plugged or unplugged → Full power

Although saving battery power is important, capturing trackpoints is the #1 priority. I'd rather have too many wakeups than too few.

If your device doesn't support the motion sensors used here, then trkpt will always run at full power. It will not sleep or kill the GPS. Maybe we can find another solution to improve battery performance for devices in this scenario.

Doze

Doze is an Android feature that saves battery power by slowing down and turning off services. When the device dozes, trkpt will stop receiving new location fixes and your track will be incomplete. Even though trkpt runs as a foreground service with a persistent notification, and requests a wakelock, and you can exempt it from battery optimization, it is still vulnerable to doze because Android implementers don't respect the user's decisionmaking capabilities.

Android exits doze during significant motion, so it does not doze while walking. However, in my experience, it will doze while driving a car, which leads to missed points on the journey.

Android never enters doze while the device is charging, so plugging it in to your car's power or an external battery is the best way to guarantee a complete track. When it comes to power banks, be aware that many models will turn themselves off once the device is fully charged and stops drawing current, and then your device may doze! An "always-on" power bank would be recommended to guarantee a complete track.

Mirrors

https://git.voussoir.net/voussoir/trkpt

https://github.com/voussoir/trkpt

https://gitlab.com/voussoir/trkpt

https://codeberg.org/voussoir/trkpt