liinahamari / follower Goto Github PK
View Code? Open in Web Editor NEWFollower - background movement tracker with OpenStreetMap (osmdroid) used for observing tracks
License: MIT License
Follower - background movement tracker with OpenStreetMap (osmdroid) used for observing tracks
License: MIT License
Add layer responsible for mapping empty state (no items at all) in TrackListFragment and proper handling changing of this state on adding new one and deleting the last one.
Steps to reproduce:
For now at least on some phones sound is not playing during notifications
Move mechanism responsible for notifiying of low battery state to separate module. Add documentation (including high-level article). Add tests, including E2E tests.
Dependency Loggy uses ExpandableLayout dependency to render error logs in dashboard. ExpandableLayout have custom attributes declared, such as el_duration and el_expanded. If application doesn't have ExpandableLayout dependency (doesn't matter is it used in exact application itself or not), project won't copile:
ERROR:/home/user/.gradle/caches/transforms-2/files-2.1/e7492b61a/loggy_sdk-debug/res/layout/item_error_log.xml:57: AAPT: error: attribute el_duration (aka dev.liinahamari.follower:el_duration) not found.
The only workaround found for this moment is duplicate dependency in application itself too.
When tracking is on, current track is showing for a moment in TrackListFragment. By design current track always hidden until it will be saved. Investigate why.
In LogsFragment and TrackListFragment here's a lists of items to be displayed to a User. For a moment, before showing it to a User, we fetch all the data containing in the database. For better UX it's needed to fetch data step-by-step. Paging3 should help.
Should be possible to open file representing track via Follower application itself (not only importing from the application). Consider own file extension to be declared.
When user opens up application first time he\she should see slideshow describing app's core features.
Every slide should contain title, description, picture (representing device screen with specific application state) and some unique (comparing to other slides) background color.
User should be able to skip intro.
Title and description should be translated to app's provided languages.
This functionality, definitely, should be implemented via AppIntro library.
Some UI tests should be added.
TODO: Think about "splash screen" proxy with as fast as possible screen drawing mechanism.
User should be able to add tag to distinct groups of tracks.
TODO: think about redesign TrackListFragment accordingly tag functionality.
Investigation is needed: which practices used to use open-source application to deal with increasing cache amount? Maybe some automatic time-to-time cache purging mechanisms should be presented.
* sharing of traces is optional for now, the separate ticket is needed on demand.
Investigate which possibilities exist to clear app's cache and provide section in settings which clears all the cache (or split different type of cache delete between multiple sections).
Kotlin Android Extensions is deprecated, which means that using Kotlin synthetics for view binding is no longer supported. If your app uses Kotlin synthetics for view binding, use this guide to migrate to Jetpack view binding.
To achieve lack of notifications in case device charging.
Database encryption in case of storing Tracks should be presented. Write documentation with test cases presented as well.
Improve code base accordingly to AppIntro library guidelines.
Find out nice way to select multiple items in Track list to perform deleting. Possibly, swipe to left, because long clicks reserved for cascade menu.
Add:
Right now due to usage IntroActivity and RouteActivity there's a flickering white on application launch. There's a possibility to make UX more smooth using application themes.
Don't forget to create map file for stacktraces and check it's working.
2021-04-11 05:01:41.736 32361-32361/dev.liinahamari.follower I/ResourcesCompat: Failed to retrieve rebase() method
java.lang.NoSuchMethodException: rebase []
at java.lang.Class.getMethod(Class.java:2068)
at java.lang.Class.getDeclaredMethod(Class.java:2047)
at androidx.core.content.res.ResourcesCompat$ThemeCompat$ImplApi23.rebase(ResourcesCompat.java:532)
at androidx.core.content.res.ResourcesCompat$ThemeCompat.rebase(ResourcesCompat.java:508)
at androidx.appcompat.app.AppCompatDelegateImpl.attachBaseContext2(AppCompatDelegateImpl.java:465)
at androidx.appcompat.app.AppCompatActivity.attachBaseContext(AppCompatActivity.java:107)
at dev.liinahamari.follower.screens.MainActivity.attachBaseContext(MainActivity.kt:74)
at android.app.Activity.attach(Activity.java:7051)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2888)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3063)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1823)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:198)
at android.app.ActivityThread.main(ActivityThread.java:6729)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
For a moment there's a possibility to upload JSON file containing some Track to FTP server manually. This operation should be performed also it tracking mode too.
Also, on a "client" there should be a possibility to observe FTP server's content in "real time" or by request.
Write documentation.
Investigate possible workarounds to deal with fuzzy map view using osmdroid library.
All the operations with SharedPreferences should be presented in one @Singleton class.
For a moment app has Fingerprint protection of Tracks to being showed (impossible to perform such operations such as deleting, if on). For various reasons Fingerprint API might not be available, so PIN support should be presented.
Track distance should be displayed for every Track element in TrackListFragment's list.
Implement paging for data exposed in AddressTraceFragment via Paging3 library.
WorkManager's API change, research is needed.
Investigate and profile long MainActivity initialization.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.