====== Next Gen SimpleTrack ====== Capture ideas of a rework/refactor of SimpleTrack. The goals of a refactoring are to eliminate known errors and deficiencies of the current version of SimpleTrack (V 1.2.X). **Goals:** * Simply code base over 1.2 * Reduce Android OS events preventing sending of positions * Work with latest OS for power and schedule reasons **Design Axioms:** * Minimize computation * Minimize network connections, work with scheduler, consolidate to single server connection * All pending work stored in SQLite, points to upload will be in file. * Vehicles/Projects in SQLite (to support drop downs) * User credentials in SQLite * User preferences in shared preferences * All data in app private storage (uninstall removes everything) * Use Firebase cloud storage to simplify configuration, all same google log in? * UI ONLY sets values in DB/Shared Prefs, all business logic in service. * Target Android 5 (Lollipo 22) as minimum usable SDK. **Items to do:** * All core functionality enclosed in an Android Service * Collection of locations and upload of same * Collection of gpsstat and upload of same * Download vehicle save as local config * Download of application controls configuration * Service with work with proper OS scheduling of uploads and other work * Refactor to remove * Cycle-line and associated statistics calculations * Simplify configuration controls to only drive application - no project support * Remove AGTEK_Lib from build of ST * Complete migration from Crashlytics to Firebase **Rough Task List for Rough Estimate:** ^ Task ^ Days ^ | Write skeleton service | 1 | | Move location listener to service | 1 | | Service to update gpstat | 1 | | Service to download vehicles and projects | 1 | | Service to download config | 2 | | Remove cycle line calcs | 1 | | Design new SQLite DB | 2 | | Integrate job scheduler | 5 | | Port from crashlytics to Firebase | 3 | | Modify UI to alter shared prefs | 2 | | **Total** | 20 |