1. Function
GPS Point Logger records location fixes from the phone's GPS and network providers and stores them as plain-text CSV files. Recording runs as a foreground service: while the logger is running, Android shows a persistent notification for it. The app has no account system and no internet permission.
2. Permissions
- Location (fine): required. Start requests it if it has not been granted; recording does not begin until it is granted.
- Notifications: requested on Android 13 and newer. The foreground service posts its status through a notification, and the resume-after-reboot invitation is a notification.
- Storage: none requested directly. Output copies use a folder grant from Android's file picker (section 6), which the user can revoke in Android settings.
No background-location permission is requested or held.
3. Recording behavior
- Providers: GPS and network.
- Requested interval: every 60 seconds, and on movement of 10 metres. These are the installed defaults; Android decides the actual fix rate within them.
- Accuracy gate: a fix with no accuracy value, or with accuracy worse than 100 metres, is discarded and not written.
- Each accepted fix appends one line to the current day file: time_iso, latitude, longitude, accuracy_m, altitude_m, speed_mps, provider. Times are ISO 8601 with the local offset.
- Files are segmented by calendar day, local time. At day rollover the finished day file closes and a delivery is attempted.
4. Output files
All files are written first to the app's private storage directory on the device. The user cannot browse this directory with a file manager.
- points-YYYY-MM-DD.csv — the day's fixes, one per line, with the header above.
- status.json — machine-readable state: app version, service state (logging or stopped), logging-since time, last-fix time, last-write time, points recorded today, whether an output folder is set, and the time the file was last updated. It contains no coordinates and no folder path.
- status-events.csv — append-only event log (time_iso, event, detail): starts, stops, reboots, updates, and resume notifications. It is not overwritten; it accumulates.
- place-names.csv — rows of time_iso, latitude, longitude, name, written when the user names the place they are at (Name This Place).
- mode-log.csv — rows of time_iso, mode, written when the Trip Type control changes. Modes are Personal, Work, and Misc; the control rests on Misc until changed.
5. Controls
- Start: begins recording (after location permission).
- Stop: stops recording. The state change is written to status.json and status-events.csv.
- Status line: green LOGGING with the logging-since time, or amber STOPPED.
- Coordinates line: the most recent accepted fix. Tap to switch the display between decimal degrees and degrees-minutes-seconds; the stored data does not change.
- Choose upload folder: opens the file picker and stores the selected folder as the copy destination.
- Send: copies the current day file to the destination now.
- Trip Type: cycles Personal, Work, Misc.
- Permission rows: list the permissions the app uses; tapping a row opens this app's Android settings page.
6. Delivery to the output folder
Copies are made from private storage to the selected folder: on a schedule through the day (every four hours), when the phone has been stationary for ten minutes, at day rollover for the finished day, at Stop, and on Send for the current day.
A copy is not replaced by a shorter file: if the folder copy is the same size as or larger than the device copy, delivery skips it. Finished day files that were never delivered are re-offered, oldest first, until delivery succeeds; today's file is delivered by the schedule and Send, not by this catch-up pass. If the destination is a cloud folder (for example Google Drive), the storage provider's own sync determines when the copy becomes visible in that account.
7. No output folder set
Recording does not require a folder. If none is set:
- Start writes status.json (with folder_set: false) and a START row in status-events.csv, and fixes accumulate in the day files, all in private storage.
- No copies are made. Scheduled deliveries have no destination and fail silently; Send displays "No upload folder chosen yet."
- Setting a folder later enables delivery, including the catch-up of finished days.
- Uninstalling the app deletes its private storage, including any files never copied out. Copies already in an output folder are not affected by uninstalling.
8. Restart behavior
The service does not restart itself after a reboot or an app update. If the logger was running, a notification is posted inviting the user to resume; tapping it restarts recording. Until then, no fixes are recorded.
9. Troubleshooting
- Status line reads STOPPED: press Start.
- Send reports that the folder may need re-choosing: the folder grant was revoked or the folder moved. Use Choose upload folder and select it again.
- No new points: confirm location is on, the app holds location permission, and the status line reads LOGGING. Fixes worse than 100 metres accuracy are discarded by design (section 3).
10. Data handling
The app transmits nothing: it holds no internet permission. Data leaves the device only as file copies to the folder the user selected, moved by Android and by that storage provider. The app contains no analytics, no advertising, and no third-party code that reports usage. Beginner Model receives no location data, no files, and no reports from the app.