teester / whats-nearby Goto Github PK
View Code? Open in Web Editor NEWAndroid App for collecting information about POIs for OpenStreetMap
License: GNU General Public License v3.0
Android App for collecting information about POIs for OpenStreetMap
License: GNU General Public License v3.0
Bug description: After launching the app and pressing the button to sign in to OSM, the app crashes.
Log:
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/impl/client/DefaultHttpClient;
at b.a.b.b.<init>(Unknown Source:3)
at com.teester.whatsnearby.data.c.a.a(Unknown Source:41)
at com.teester.whatsnearby.data.c.a.<init>(Unknown Source:12)
at com.teester.whatsnearby.main.MainActivity$1.run(Unknown Source:8)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.impl.client.DefaultHttpClient" on path: DexPathList[[zip file "/data/app/com.teester.whatsnearby-Nu4IWNo3W5N_imcayaF3Xg==/base.apk"],nativeLibraryDirectories=[/data/app/com.teester.whatsnearby-Nu4IWNo3W5N_imcayaF3Xg==/lib/arm64, /system/lib64, /system/vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 5 more
Additional info:
LG G6, HavocOS Pie
EdXposed
A side effect of #16: When in a location without any overpass results and location results have relatively poor accuracy, the location can flick between low and high accuracy, making it look like you're moving around.
So, queries keep being run as there is nothing in the database to say that you've been at that location before. We need to store locations of queries in the database as well as queried POIs to mitigate this.
Add a screen showing information about recent app activity.
Include:
When having the latest version of the app on my phone, I walked through a city in north of Germany. Of course having mobile data on and GPS on, and logged in with OSM credentials ...
but there is absolutely no result of Whats-Nearby app about missing OSM tags.
So I fear that something goes wrong, but I cannot figure out the reason.
Can you include a debugging display inside the app (as long as it is in beta testing) that shows whether the app has GPS coordinates found, and that a query has been sent to overpass-api, and what is the result of it?
Ans maybe a feature to clear the loaded data from overpass-api, thus it is refreshed automatically or by user's choice?
I have noticed that POIs with large numbers of questions can become a bit annoying to answer. Miller's Law (https://en.wikipedia.org/wiki/Miller%27s_law) suggests that the number of objects an average person can hold in working memory is about seven.
The number of questions asked per session should be limited to 7. The largest number at the moment is amenity=restaurant
with 15 questions. Questions should be asked according to the following hierarchy:
Could you release it on F-Droid?
Businesses containing wheelchair accessible toilets should use the tag:
toilets:wheelchair=yes
Currently, What's Nearby tags them as:
wheelchair_toilets=yes
Currently, when the user presses Log Out, we just delete the oauth tokens in the app. If the user logs in again, we then request new oauth tokens from www.openstreetmap.org. This leads to multiple authorizations for What's Nearby appearing on https://www.openstreetmap.org/user/*USERNAME*/oauth_clients.
We need to send a request invalidating the tokens to www.openstreetmap.org. However, I can't seem to find the url to do this.
Currently, once the app notifies, it won't query for 60 minutes. In the meantime, you may have moved around and the notification may be out of date by the time you see it.
The behaviour should be changed to not start the timer until the user presses the notification and the app updates the notification with newly detected locations until then.
Where can I find the list of possible POIs and associated prompts/questions? I have not been receiving any notifications and am curious if I have just been visiting unsupported POIs, as my GPS settings and Overpass pulls seem ok.
If a user isn't logged in, 0.16 crashes on startup.
This is due to a 401 unauthorized error when the app tries to get the username from www.openstreetmap.org, but it isn't logged in yet. The user will still get notified about locations, but the app crashes when trying to load questions for the same reason.
when I authorize the app will quit automatically
When the user has authorised with OpenStreetMap, show the username in the MainActivity screen.
There is already an existing application (https://github.com/westnordost/StreetComplete), I'm sure you are aware of, which has nearly the same purpose of this app too (showing easy-to-answer-questions to users which don't know much about OSM)
Is there a special reason why you created such a similar app? I mean one obvious reason might be the restriction to show only questions about places the user actually visited... But SC asks the user before he answers a question for a place he might not be at whether he is really at this place.
So SC is not as strict as your app, but I think @westnordost wanted to add a bit more restriction in the future...
It should be possible to determine if a location has been previously visited by storing locations of notifications and comparing location to them before performing the query rather than performing the query and comparing osmid to stored osmids as s currently done. (We're currently storing notified osmids for 7 days to prevent unnecessary renotifications)
This should reduce overpass queries which will reduce data use and overpass server use.
I'm not an expert in this area, but I think the tags diet:vegetarian/diet:vegan should be used instead of vegetarian/vegan. The latter only have minor usage in the OSM DB right now (see https://taginfo.openstreetmap.org/keys/vegetarian#overview and https://taginfo.openstreetmap.org/keys/vegan)
Maybe this is also true for halal and kosher.
It's probably not too clear how exactly the app works. A series of slides before or after the user logs in might help to explain what happens next. As it stands, nothing much seems to happen from the user's perspective after they log in. When they reopen the app, they are just greeted with a screen saying that they are logged in.
Having never been prompted to answer any questions for quite some time, despite visiting places for which StreetComplete had quests, I examined the Debug Info of What's Nearby? to discover
Last Overpass Query Result:
Unable to resolve host "www.overpass-api.de": No address associated with hostname
So; no questions because What's Nearby? can't query the API, because it's using the wrong hostname.
Why doesn't it have a list of different hosts, so that this isn't a single-point-of-failure, else at least allow the user to set an override to the default hostname?
Following the resolution to #3, we now have a new problem. Since we no longer use accuracy as a constraint, the app is notifying for locations which are far (hundreds to thousands of metres) from the user's actual location. This is not ideal either.
Oauth1.0a will stop being supported in few months, see openstreetmap/operations#867 (comment)
So if this app is to continue to function, Oauth2 should be implemented.
If it is no longer maintained and will thus stop functioning, perhaps it should be removed from app stores and archived (see #53)
If all questions are answered with the same answers as already answered, the app uploads a changeset with no changes apart from incrementing the version of the item. This should not happen.
POIs with all the questions already answered should only be asked again if the POI's last edit was over 6 months ago.
This should be determined using a combination of the poi details from the overpass query (to get the last edited date) and the contents of the app database (to determine if questions were asked since the POI was last edited).
Based on Readme
It then selects the closest of these and presents you a suggestion that you might be at that location via an android notification.
I expect that it is enough to keep app in background and wait for a notification. Is my guess correct?
I disabled batter saver in my Xiaomi Redmi 4.
It seems to be caused by
The command "wget -O ~/codacy-coverage-reporter-assembly-latest.jar $(curl https://api.github.com/repos/codacy/codacy-coverage-reporter/releases/latest | jq -r .assets[0].browser_download_url)" failed and exited with 4 during .
in https://travis-ci.org/Teester/Whats-Nearby/builds/418620604
Readme badge is in https://github.com/Teester/Whats-Nearby#whats-the-build-status
You can archive this repository, to mark it as unmaintained. People then cannot submit PRs and there is a big warning that this is archived.
Remember to add a note to the Readme before to explain that it is unmaintained, and โ if you think this is useful โ why and probably mention alternatives.
If significant time has passed between when a notification was issued and OK was pressed, the app may have been killed in the background in the meantime. This means that the PoiList would no longer exist and when the app tries to query it, an exception is raised.
Need to persist PoiList through the app being killed.
From Google Play Dashboard:
java.lang.NullPointerException: at com.teester.whatsnearby.main.MainActivity.onNewIntent (MainActivity.java:65) at android.app.Instrumentation.callActivityOnNewIntent (Instrumentation.java:1235) at android.app.Instrumentation.callActivityOnNewIntent (Instrumentation.java:1247) at android.app.ActivityThread.deliverNewIntents (ActivityThread.java:2563) at android.app.ActivityThread.performNewIntents (ActivityThread.java:2575) at android.app.ActivityThread.handleNewIntent (ActivityThread.java:2584) at android.app.ActivityThread.-wrap12 (ActivityThread.java) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1426) at android.os.Handler.dispatchMessage (Handler.java:102) at android.os.Looper.loop (Looper.java:148) at android.app.ActivityThread.main (ActivityThread.java:5443) at java.lang.reflect.Method.invoke (Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:728) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:618)
Problem appears to be passing null to mainPresenter.checkIfOauth(url) here
Hello,
I think the order of the questions is random?
Because I've got the message "Does ... charge for wifi access?" before the message "Does %s have Wifi for customers?", which in my opinion is not optimal.
Cheers, Chris
Add an about page including version number, author, links to this GitHub page etc.
Could you please explain how this app compared to similar apps like StreetComplete? I believe the latter one does exactly the same as yours. Am I right?
tourism: hotel is included as a PoiType, but not included in the PoiTypes list, meaning that hotels are not notified for.
Your Overpass API requests contain a generic HTTP User-Agent only at this time. Could you please add some information about your app here, so it's easier to contact you in case of issues?
similar to e.g. https://stackoverflow.com/a/5027588/3501889
After authorisation with my account I get "You are currently in to OpenStreetMas as ."
After rotating screen username appears.
As a native speaker of the german language, I find some of the german translations not quite ideal (especially the strings for "men", "women" and "cheques", but others could be improved too). I would like to improve them.
Where does the translation originate from? Did you use an external translation service or may I simply file a pull request?
When an unauthorised user is notified of a location and they press the notification, they are taken to the authorisation screen rather than asked questions. Once they have successfully authorised, the app does not display the questions and there's no way to get back to them unless notified again. This in not optimal.
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.