andrew67 / ddrfinder Goto Github PK
View Code? Open in Web Editor NEWNative Android version of ddr-finder with Google Maps integration.
Home Page: https://ddrfinder.andrew67.com/
License: Other
Native Android version of ddr-finder with Google Maps integration.
Home Page: https://ddrfinder.andrew67.com/
License: Other
Solution:
Should be as simple as moving from onCreate
to onResume
for checking the permission condition.
Can change status bar color via:
https://developer.android.com/reference/android/view/Window.html#setStatusBarColor(int)
In actionModeEnabler and actionModeDisabler
Status bar changes color before action bar.
Success events: more info, navigation
Settings changed and used
The common pattern now-a-days appears to be avoiding setting the map location to current location on app start, instead showing the area the user had previously looked at.
Since we need the permission on app launch regardless to load the "My Location" layer, we could move the map to current location on app's first launch.
Currently, we use the Google Places SDK to power location search functionality, limited to addresses.
We should leverage the available data set to create a new search API, and have a search that considers both arcade names and city names, while also eliminating the dependency on a non-free API.
Pre-requisites:
Prepare in anticipation for ddr-finder-ng migration from ng/ to app/, handle deeplinks to app/ (as defined by ddr-finder/docs/URLs.md).
Whether or not the server wants to serve these requests is now handled with an API error code, so the application itself should not be enforcing this.
Similar to what ZIV does on PC.
Would make zooming out feasible.
https://developers.google.com/maps/documentation/android-api/utility/marker-clustering
Appcompat v7 can be used to provide material style and color branding across all API levels:
https://developer.android.com/topic/libraries/support-library/features.html#v7-appcompat
See http://developer.android.com/preview/behavior-changes.html#behavior-apache-http-client.
MapLoader should be changed to use HttpURLConnection as recommended instead.
The font when clicking on an arcade location for the information options screen is huge.
Fix down to regular size.
Most changes in the settings UI deal with switching API, version, or data sources.
Any change in the settings should have MapViewer drop all pins that were loaded in the current session and reload the current area.
When location permission enabled, it is user-controllable.
When location permission is disabled, auto-disable this setting, then when the user attempts to re-enable, show an informative dialog regarding the location permission, then forward them to the app settings screen:
startActivity(new Intent(Settings.ACTION_APPLICATION_SETTINGS));
https://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_SETTINGS
Aka. the infamous alibaba bug from this week.
Could show links in an embedded WebView activity when an Exception is thrown while attempting to start an Activity for web browser.
Had to downgrade to 1.6.0 due to square/moshi#738
Will wait on that for upgrading again, instead of employing workarounds.
https://developer.android.com/jetpack/androidx/migrate
Migration from Support 28.0.0 to AndroidX 1.0 is required in order to continue using modern support libraries.
There is no specific deadline, but the update would be nice to gain access to some new Material buttons that I've wanted to use for a details pop-up re-design.
Usual maintenance updates, no changes required
Remove "Custom (Advanced)" setting in app which is essentially a developer setting (along with API version / endpoint).
URL can be loaded from XML string, and APK size should be reduced by removing API V1 code.
This will allow having a settings UI closer to ddrfinder-ng.
Note: Android 8 targeting requires adaptive icon.
Google has released Places SDK 1.0, and decided to shut off API access to apps using the old SDK by July 29, 2019.
Migration guide: https://developers.google.com/places/android-sdk/client-migration
Alternatively, implementation of #40 would instead simply remove this SDK and make this issue obsolete. However, migrating is most likely the quickest alternative at this time for a maintenance release.
Instead of the current process where the user taps the marker, clicks the info window through to the 3 actions (navigate / copy coordinates / more info) in a separate activity, action mode bar can be used to offer them within the same main view when a marker is selected.
This should be implementable using the OnClick events: https://developers.google.com/maps/documentation/android-api/marker#marker_click_events
OnMarkerClickListener: enable action mode
OnMapClickListener: disable action mode
Action mode reference docs: https://developer.android.com/guide/topics/ui/menus.html#CAB
getMapAsync is the preferred method of initializing map code, as getMap polls, and under some circumstances returns null.
Migrate API calls and results to version 2 (see Wiki); hardcode "ziv" as data source to retain current front-end behavior.
Google Analytics code was removed as part of the effort to get the project to rebuild under gradle.
Would be good to have it back.
Especially when zoomed out, the zoom notification stacks.
Action plan: http://stackoverflow.com/questions/12922516/how-to-prevent-multiple-toast-overlaps
Have a Toast instance that gets refreshed with setText/show, which keeps them from stacking.
Pre-requisites: publish a proper Privacy Policy and make sure crash reporting is opt-in.
HTTPS was enabled on ddrfinder.andrew67.com due to geolocation APIs potentially being disabled on Chrome for non-SSL contexts.
Update URLs in Android app to point to HTTPS.
As HTTP redirects to HTTPS, default app behavior does not break, apart from odd behavior in "About" window, so this is low priority.
Currently, the app offers to launch for "/locator" paths.
However, ng is now "Interactive Map", and provides same functionality as app, whereas old version is the simple list.
Therefore, AndroidManifest.xml should be updated such that clicking the former has the app pop up as a suggestion when installed.
Toasts are a bit outdated, and the errors could benefit from actionable items (such as "Enable" for permissions, "Reload" for map errors, "Zoom").
Android 6.0 introduces a new permissions model for granting permissions to applications, in which applications such as DDR Finder will not automatically receive the required location permissions by default.
The application currently handles this by showing a toast requesting the user to enable the permission, but the menu is nested quite deeply, so we should prove a more user-friendly way of reaching the menu.
Note: app should still function without location permissions for general searching, but it should provide a one-click warning for the user.
Expected (previous) behavior: About page is embedded in the About activity.
Investigate why APK installation fails on Nexus 5 (5.1.0)
Provide a box that allows scrolling map to a specific address, using the Geocoding API.
In SDK 23, users can deny permissions during/after application installation.
This means that existing code in the MapView that assumes access to the GPS API calls will throw an uncaught exception and crash the application.
Need to update code to detect and handle this situation, preferably presenting a UI as well.
OkHttp 3.12.1:
HttpUrl.get
becomes available which can be used for known-good URLs (our use-case)Moshi 1.8.0:
Unfortunately, self-hosted Piwik is too difficult to maintain.
For potential F-Droid version in the future, we could simply strip out Analytics entirely.
Android N mode enabled through targetSDK 24:
https://developer.android.com/guide/topics/ui/multi-window.html
Test and explicitly set to true in AndroidManifest.xml.
Enabling LG and Samsung multi-view: https://www.reddit.com/r/Android/comments/3pw4oq/how_to_add_dual_window_support_to_any_app_no_root/cwai1ma
Should come in automatically when target SDK is updated to 11, but worth checking in emulator/device.
Available in API 24: https://developer.android.com/reference/android/icu/text/MeasureFormat
Need to investigate how it deals with floating point decimals
It's all about the API 30+ NumberFormatter
now: https://developer.android.com/reference/android/icu/number/NumberFormatter
JCenter is going down! This becomes a blocker for building in March.
Need to migrate to Maven Central etc for dependencies.
This item benefits from procrastination, to give time to library authors for migrating.
Too many pins when zoomed out otherwise, slows the UI down to a crawl
Clarify increased privacy.
Upgrade credits/copyright footer.
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.