Code Monkey home page Code Monkey logo

wherearetheeyes's People

Contributors

dostoi avatar guerda avatar milo-trujillo avatar naofum avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wherearetheeyes's Issues

Feature request: Zoom into map and to current position automatically

It would be really nice when the map shown in the App would not display the whole earth but zoom to a (predefinable) zoom-level and to the users current position. This makes it much easier to verify if the current position is really correct or if one should not register a camera because GPS is currently hundreds of metres away from the real position.

Surveillance Heatmap

Right now we mark and display every known pin near the user. However, sometimes it is less important to know precisely where cameras are, and more important to know where areas of high and low surveillance are. To this end we should develop a "surveillance heatmap", similar to the following:

Heatmap example

This map will have to be calculated by the client based on pin locations. The heatmap display (and calculations) should be an option in UI settings.

This may require extensive code additions, or it may be trivially provided by the mapbox API already, and would therefore be a slight update.

Note: That link is to mapbox.js - there's probably an equivalent for Java/Objective-C, but I haven't run into it yet.

This isn't particularly useful until we have a lot of cameras, so it will probably be on the back-burner until after OSM integration. If someone is excited and wants to hop in and implement this though, then by all means.

Offline use

Is possible add an ability to download a particular region and see the map/camera position offline??

CSV export not working

We have a cron task as part of the Watchdog subprocess that's supposed to export the pin database to CSV every 24 hours. The export code works when run by hand, but doesn't appear to be firing at all in the Watchdog. We've gotten complaints that the export data is unavailable, so we know some users want that information.

OpenStreetMap Integration

I noticed that you used maps provided by Mapbox. There is an open-source alternative to Mapbox that you might want to look into called OpenStreetMap. They provide maps created by the open-source community and anyone is allowed to use their maps in their projects as long as they provide attribution (https://www.openstreetmap.org/copyright). It would be great if you could integrate with OpenStreetMap and have your entire project be open-source.

Proxy support

Is possible add an ability to work with Orbot/I2P services??

Failure in submission of camera due to wrong Geo-IP information

I recently tried to submit a bunch of cameras but the App rejected them with an error message (Your current location does not fit to the location of the IP" (or something like this).

So it seems you are checking the GPS location against the IP location using an inaccurate or outdated Geo IP database or with some too strong settings.

I have been within Munich using the IP of a big German mobile data provider, so there was nothing mysterious or wrong with my location.

project health

Hello everybody,
I've seen that there is no new version or merges, so I want to know how is going there? :D

Website translation

Have you think about internationalize the website? I would like to translate it to spanish :D

Add Visual Feedback to Pin Submission

Users need to know whether their cameras have been submitted to the server. Right now we make a "vibrate" tone when the submit button is pressed, which at least lets the user know their button press was recognized. However, this gives no indication as to whether the submission has succeeded, or is lagging on a slow network.

We should provide visual feedback of progress, like a little "Your camera is being submitted" with pinwheel pop-up, until the camera is accepted or rejected by the server.

--- Update ---

Implemented on iOS on the 1.4 branch. We make a banner alert notification when a camera is successfully marked or unmarked, if the user has the alert preference enabled in settings (default). We also enable the network activity spin-wheel while the request is being processed, so users get UI feedback for the start of the request, the processing of the request, and the completion of the request.

WhereAreTheEyes stopped showing marked cameras and my location

Hi,
I love your app and promote it with my activist friends. I use the Android version from F-Droid. However, since around 3 days it hasn't shown anything but the map, but there is no cameras or my location marked. I also tried it on my second phone and no luck there either. I tried reinstalling but to no avail.
This is a really bad moment, because I just shared the app on a fanpage with thousands of followers and I'm afraid they won't be able to use it and map our city.

Adds camera without confirmation

In the app for iOS, I can add camera locations without confirmation.
Even though the setting for confirmation is switched on.

Improve error handling when GPS is disabled

We handle "location is enabled but we don't have permission to access it" pretty well, and prompt the user to enable access for Where are the Eyes. We do not handle the location services being completely disabled. Right now the client silently fails to download cameras, and appears to be lobotomized.

We should:

  • Detect that location services are disabled, and prompt the user to enable them
  • Detect when location has just been enabled, and immediately re-poll for cameras

Anonymous Leaderboards

We've gotten suggestions from a few people that we could make Where are the Eyes more engaging by "gamifying" it by adding some kind of competitive element. We'll play with that idea, and see how it's received in the next release.

Here's an example leaderboard:

Title Cameras Required
Emmanuel Goldstein 500
Harry Tuttle 100
Ghost Shirt Society 75
Marcus' Jammers 50
Lo-Teks 25
Resistance 1+

We can display the user's current rank on the scorebar, and add a page showing how they compare to other users, all without leaking any identifying information.

The server API has been extended so you can download the leaderboard with GET /getLeaderboard. Data is returned in the format:

number_of_users, number_of_cameras, rank_name

For example:

1, 500, Emmanuel Goldstein
1, 300, Hagbard Celine
1, 250, Knight of Eastern Calculus
2, 200, Hand of Eris
4, 150, Cypherpunk
6, 100, Harry Tuttle
10, 75, Cryptoanarchist
18, 50, Ghost Shirt Society
33, 30, Phantom Phreak
49, 20, Anonymous
70, 10, Jammer
367, 1, Resistance

We need to add a view/activity to iOS and Android that will download the leaderboard and display it in-app. Preferably, this data should be cached so the leaderboard is immediately responsive after the first open.

French translation

Hi all !
Just a little translation in french.
Have a nice day.

<resources>
    <string name="app_name">WhereAreTheEyes</string>
    <string name="username_instructions">Choisissez un nom d'utilisateur sur eyes.daylightingsociety.org et insérez-le au dessus.</string>
    <string name="account_settings_description">Options du compte</string>
    <string name="ui_settings_description">Options d'interface</string>
    <string name="no_username_alert">Merci de choisir un username sur le site et de le mettre dans les paramètres.</string>
    <string name="needs_location_explanation">WhereAreTheEyes nécessite l'accès à votre position pour trouver les caméras proches. Merci d'actualiser vos permissions et relancez l'application.</string>
    <string name="view_permissions_button">Voir les permissions</string>
    <string name="marking_failed_title">Erreur de marquage</string>
    <string name="unmarking_failed_title">Echec de de suppression de marquage</string>
    <string name="username_invalid">Votre nom d'utilisateur n'est pas connu sur eyes.daylightingsociety.org. Vous êtes-vous enregistré sur le site ?</string>
    <string name="ratelimit_failed">Vous proposez des caméras trop rapidement. Pour protéger l'intégrité de la carte, vous n'êtes plus autorisé à signaler des caméras pendant un moment.</string>
    <string name="geoip_failed">Votre adresse IP et votre position physique ne correspondent pas. Pour protéger l'intégrité de la carte, vous n'êtes pas autorisé à signaler des caméras en utilisant un proxy</string>
    <string name="unmarking_permission_denied">Vous n'êtes pas autorisé à supprimer cette caméra.</string>
    <string name="marking_failed">Erreur inconnue ou serveur injoignable.</string>
    <string name="confirm">Valider</string>
    <string name="confirmations">Validations</string>
    <string name="mark_camera_confirmation">Mettre une caméra à cet endroit ?</string>
    <string name="yes">Oui</string>
    <string name="no">Non</string>
    <string name="okay">OK</string>
    <string name="dismiss">Abandonner</string>
    <string name="register">Enregistrer</string>
    <string name="remove">Supprimer</string>
    <string name="this_is_a_camera">C'est une caméra</string>
    <string name="help_title">À propos de "Where are the Eyes"</string>
    <string name="confirm_pins_preference">Confirmer le marquage</string>
    <string name="show_score_preference">Score</string>
    <string name="use_satellite_map_preference">Vue satellite</string>
    <string name="privacy_settings_description">Vie privée</string>
    <string name="mapbox_analytics_preference">Mesures Mapbox</string>
    <string name="mapbox_analytics_summary">Ce paramètre permet à l'application de partager de façon anonyme la position et l'usage de la data avec Mapbox. Nous sommes obligés de partager les mesures par défaut.</string>
    <string name="help_text">Where are the Eyes est un outil pour détecter et échapper à la vidéo-surveillance. Ensemble, vous et les utilisateurs fabriquez une carte des caméras de vidéo-surveillance pour protéger les activistes, étudiants et autres minorités à risque. Quand vous croisez une caméra, appuyez sur le bouton œil. Cela ajoute la caméra à la carte ou cela vérifie son existance si nous avons déjà des informations sur celle-ci.\n\nLes marques rouges indiquent des caméras connues. Le point bleu est votre position. Restez en sécurité.\n\nToutes images de boutons sont issus de Open Iconic sous licence MIT. L'icône "œil" a été créé par Amanda Howanice pour ce projet.\n\nPlus d'informations sur eyes.daylightingsociety.org\n\nFeedback? Contact : [email protected]\n\nDes données d'analyse ton envoyées à Mapbox par défaut (désactivable dans les Options).\n\nCarte par © Mapbox, © OpenStreetMap</string>
</resources>

Camera properties

For a more organized discussion I've have opened this issue, in continuation of one of the topics developed on #3

I believe if we can design an interface based on icons, it will be easy to understand and fast to use. Just after mark the camera a sequence of icons can be shown to be selected and set the properties.

No camera on the map

Hello,

I don't see any camera on the map, even those i placed myself. I don't even see the cameras that i saw in the past on the app. That makes the app totally useless.

"Follow Direction" Moves Location Dot Instead of Map

We have two options when following the user:

  1. Scroll the map to stay centered on the user
  2. Scroll and rotate the map to stay oriented the way the user is facing

The second option works fine on iOS, but on Android remarkably spins the location dot across the screen instead of spinning the map around the dot. This makes it less than useful, and resulted in the feature being pulled from v1.3.0. Let's fix it for the next release.

Prevent Marking Pins at 0,0

We occasionally get a rogue camera marked at latitude 0, longitude 0 (off the west coast of Africa). This could be a few things:

  • Someone playing with our API and marking a camera there accidentally
  • Some platform (probably some Android device) that returns 0,0 as a location before GPS is fully initialized

Assuming it's the second problem then this is non-malicious behavior, but we should add an condition to either the client or the server to prevent sending the marking request if the location is 0,0.

--- Update ---

Confirmed - on Android the system will return 0,0 for a location if you're indoors and can't get a GPS signal. Not sure why they went that route instead of not giving a GPS ping.

Removing the iOS tag since it's an Android bug, and removing the server tag since the server now ignores pin markings at 0,0. Leaving the Android low-priority tag, since we should check client-side and not even make the request if we don't have a real GPS fix yet.

--- Second Update ---

Re-added server tag, since evidence suggests the server is not ignoring cameras marked at 0,0.

Improve Pin-Marking Speed in Dense Areas

We've been getting reports that marking a camera now takes over 30 seconds for some users in particularly camera-rich regions. This is unacceptable both in terms of visual feedback (see #46), but also in terms of server performance. Right now we compare the new potential camera to each camera in its zone-file, to check for overlaps with an existing camera. That works fine with a zone-file of a hundred or less cameras, but may be extremely inefficient for a densely packed area.

We need to improve our database schema and querying mechanism to get that performance way down from O(n). It was a shoddy db design to begin with, and now that corner-cutting has caught up with us.

Build Read-Only Webapp

A few users have asked how they can explore the camera map without downloading an app.

Let's throw something together with MapBox.js that calls the API to get a list of cameras, then displays them appropriately on the map in a web-browser. We'll give it a theme that fits the rest of the website.

This can replace the front-page image (or, better, only display the image if JS is disabled), and make the site much more immediately immersive.

Crash / Cannot start on Android (Replicant 6, Samsung Galaxy Note II)

How to reproduce:

  1. Using a Samsung Galaxy Note II running Replicant 6, download and install WhereAreTheEyes from F-Droid
  2. Start WhereAreTheEyes.
  3. Crash. "Unfortunately, WhereAreTheEyes has stopped."

Here's what I get from adb logcat:

10-23 09:37:17.600 32637   819 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 pkg=org.daylightingsociety.wherearetheeyes cmp=org.daylightingsociety.wherearetheeyes/.MainActivity} from uid 1000 on display 0
10-23 09:37:17.625 32637  1865 I ActivityManager: Start proc 17260:org.daylightingsociety.wherearetheeyes/u0a86 for activity org.daylightingsociety.wherearetheeyes/.MainActivity
10-23 09:37:17.730 17260 17260 V MapboxTelemetry: Initializing telemetry.
10-23 09:37:17.760 17260 17260 V MapboxTelemetry: Setting user agent value: org.daylightingsociety.wherearetheeyes/1.3.0/6 MapboxEventsAndroid/5.0.2
10-23 09:37:17.760 17260 17260 V MapboxTelemetry: Enabling telemetry.
10-23 09:37:17.765 17260 17260 V MapboxTelemetry: Location permissions not granted (checking again in 10 seconds).
10-23 09:37:17.780 17260 17260 I art     : Thread[1,tid=17260,Native,Thread*=0x42a2fa98,peer=0x74e392a0,"main"] recursive attempt to load library "/data/app/org.daylightingsociety.wherearetheeyes-1/lib/arm/libmapbox-gl.so"
10-23 09:37:17.790 17260 17260 I art     : Thread[1,tid=17260,Native,Thread*=0x42a2fa98,peer=0x74e392a0,"main"] recursive attempt to load library "/data/app/org.daylightingsociety.wherearetheeyes-1/lib/arm/libmapbox-gl.so"
10-23 09:37:17.790 17260 17260 I art     : Thread[1,tid=17260,Native,Thread*=0x42a2fa98,peer=0x74e392a0,"main"] recursive attempt to load library "/data/app/org.daylightingsociety.wherearetheeyes-1/lib/arm/libmapbox-gl.so"
10-23 09:37:17.910 17260 17260 D libEGL  : Emulator without GPU support detected. Fallback to software renderer.
10-23 09:37:17.920 32381 32674 E NetlinkEvent: NetlinkEvent::FindParam(): Parameter 'TIME_NS' not found
10-23 09:37:17.920 32381 32674 E NetlinkEvent: NetlinkEvent::FindParam(): Parameter 'UID' not found
10-23 09:37:17.935 17260 17260 D libEGL  : loaded /system/lib/egl/libGLES_android.so
10-23 09:37:17.990 17260 17260 E mbgl    : {wherearetheeyes}[OpenGL]: eglChooseConfig() returned no configs.
10-23 09:37:17.990 17260 17260 D AndroidRuntime: Shutting down VM
10-23 09:37:17.990 17260 17260 E AndroidRuntime: FATAL EXCEPTION: main
10-23 09:37:17.990 17260 17260 E AndroidRuntime: Process: org.daylightingsociety.wherearetheeyes, PID: 17260
10-23 09:37:17.990 17260 17260 E AndroidRuntime: Theme: themes:{}
10-23 09:37:17.990 17260 17260 E AndroidRuntime: java.lang.Error: eglChooseConfig() failed
10-23 09:37:17.990 17260 17260 E AndroidRuntime: 	at com.mapbox.mapboxsdk.maps.NativeMapView.nativeInitializeDisplay(Native Method)
10-23 09:37:17.990 17260 17260 E AndroidRuntime: 	at com.mapbox.mapboxsdk.maps.NativeMapView.initializeDisplay(NativeMapView.java:127)
10-23 09:37:17.990 17260 17260 E AndroidRuntime: 	at com.mapbox.mapboxsdk.maps.MapView.onCreate(MapView.java:213)
10-23 09:37:17.990 17260 17260 E AndroidRuntime: 	at org.daylightingsociety.wherearetheeyes.MainActivity.onCreate(MainActivity.java:73)
10-23 09:37:17.990 17260 17260 E AndroidRuntime: 	at android.app.Activity.performCreate(Activity.java:6251)
10-23 09:37:17.990 17260 17260 E AndroidRuntime: 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
10-23 09:37:17.990 17260 17260 E AndroidRuntime: 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
10-23 09:37:17.990 17260 17260 E AndroidRuntime: 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
10-23 09:37:17.990 17260 17260 E AndroidRuntime: 	at android.app.ActivityThread.-wrap11(ActivityThread.java)
10-23 09:37:17.990 17260 17260 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
10-23 09:37:17.990 17260 17260 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:102)
10-23 09:37:17.990 17260 17260 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:148)
10-23 09:37:17.990 17260 17260 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:5461)
10-23 09:37:17.990 17260 17260 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
10-23 09:37:17.990 17260 17260 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
10-23 09:37:17.990 17260 17260 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
10-23 09:37:17.990 32637 32652 W ActivityManager:   Force finishing activity org.daylightingsociety.wherearetheeyes/.MainActivity
10-23 09:37:18.295 32637 32652 I WindowManager: Screenshot max retries 4 of Token{d265295 ActivityRecord{e12024c u0 org.daylightingsociety.wherearetheeyes/.MainActivity t1013 f}} appWin=Window{28b979b u0 Starting org.daylightingsociety.wherearetheeyes} drawState=4
10-23 09:37:18.800 32637 32670 W ActivityManager: Activity pause timeout for ActivityRecord{e12024c u0 org.daylightingsociety.wherearetheeyes/.MainActivity t1013 f}
10-23 09:37:29.125 32637 32670 W ActivityManager: Activity destroy timeout for ActivityRecord{e12024c u0 org.daylightingsociety.wherearetheeyes/.MainActivity t1013 f}

Quickly tried:

  1. App info -> Permissions -> Enable location for WhereAreTheEyes
  2. Still crashes.

On closer inspection it seems like this is an error in mapbox: mapbox/mapbox-gl-native#9120

Doesn't seem like there's a fix, so not sure what to do..

Make more clear registration is required

I used my app for the first time yesterday and registered about 10 cameras. AFTER that I got a message telling me I have to register my username at the webpage - resulting in a loss of these 10 positions.

So the App should be more clear about this or should store and upload such positions after successful registration or should force registration on first start-up.

Improve validation username registration

Please improve validation of the username when registrating one. A space in the name is allowed in the website but not in the app. The website (and the backend) should validate for that.

Tap on Map to Mark Cameras

It is not always feasible to stand right below a camera when marking it, or GPS may be too inaccurate to show you under the camera. We should be able to tap on a map location nearby to mark a camera at that position.

There are already several map gestures we do not want to disrupt with this feature:

  • Tapping a pin to select it and get more information
  • Double tapping the map to zoom in
  • Two finger scrolling
  • Three finger tilting

Therefore, the new gesture should only trigger if none of the others are applicable. In addition, users should only be able to add a camera within some radius of their GPS position. This means users can mark cameras in their vicinity when GPS is insufficiently accurate, but can't scroll over to another continent and start tapping out cameras to troll other users.

Develop Varied Camera Images

This is a component of issue #15. We need to replace our camera "map marker" with four markers, depending on the type of camera represented. Specifically, we need:

  • Unknown (can re-use the current map-marker design)
  • Fixed
  • Panning
  • Dome

The new images should have a similar colorscheme / look and feel that fits the rest of the app, and should be the same size as one another.

Increase rotate threshold

Please, increase the threshold for the rotation of the map. The map starts rotating to soon. Implement something similar as in OsmAnd so the user has to do a more explicitely action to start rotating. Benefit is that rotation is not started too quickly with a normal zoom or pan action.

Consider validate username before start marking cameras

I've registered and set my username, but when I started marking pins it showed an alert saying that the username wasn´t registered. I think it's would be nice to validate username at the moment it is set in the configuration.

Building Android app fails -- translation issue?

Building errors with

:app:processReleaseResources/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:28: AAPT: Apostrophe not preceded by \ (in Votre adresse IP et votre position physique ne correspondent pas. Pour protéger l'intégrité de la carte, vous n'êtes pas autorisé à signaler des caméras en utilisant un proxy)
    
/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:29: AAPT: Apostrophe not preceded by \ (in Where are the Eyes est un outil pour détecter et échapper à la vidéo-surveillance. Ensemble, vous et les utilisateurs fabriquez une carte des caméras de vidéo-surveillance pour protéger les activistes, étudiants et autres minorités à risque. Quand vous croisez une caméra, appuyez sur le bouton œil. Cela ajoute la caméra à la carte ou cela vérifie son existance si nous avons déjà des informations sur celle-ci.\n\nLes marques rouges indiquent des caméras connues. Le point bleu est votre position. Restez en sécurité.\n\nToutes images de boutons sont issus de Open Iconic sous licence MIT. L'icône "œil" a été créé par Amanda Howanice pour ce projet.\n\nPlus d'informations sur eyes.daylightingsociety.org\n\nFeedback? Contact : [email protected]\n\nDes données d'analyse ton envoyées à Mapbox par défaut (désactivable dans les Options).\n\nCarte par © Mapbox, © OpenStreetMap)
    
/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:32: AAPT: Apostrophe not preceded by \ (in Ce paramètre permet à l'application de partager de façon anonyme la position et l'usage de la data avec Mapbox. Nous sommes obligés de partager les mesures par défaut.)
    
/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:36: AAPT: Apostrophe not preceded by \ (in WhereAreTheEyes nécessite l'accès à votre position pour trouver les caméras proches. Merci d'actualiser vos permissions et relancez l'application.)
    
/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:41: AAPT: Apostrophe not preceded by \ (in Vous proposez des caméras trop rapidement. Pour protéger l'intégrité de la carte, vous n'êtes plus autorisé à signaler des caméras pendant un moment.)
    
/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:46: AAPT: Apostrophe not preceded by \ (in C'est une caméra)
    
/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:47: AAPT: Apostrophe not preceded by \ (in Options d'interface)
    
/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:49: AAPT: Apostrophe not preceded by \ (in Vous n'êtes pas autorisé à supprimer cette caméra.)
    
/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:51: AAPT: Apostrophe not preceded by \ (in Choisissez un nom d'utilisateur sur eyes.daylightingsociety.org et insérez-le au dessus.)
    
/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:52: AAPT: Apostrophe not preceded by \ (in Votre nom d'utilisateur n'est pas connu sur eyes.daylightingsociety.org. Vous êtes-vous enregistré sur le site ?)
    
/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:28: error: Apostrophe not preceded by \ (in Votre adresse IP et votre position physique ne correspondent pas. Pour protéger l'intégrité de la carte, vous n'êtes pas autorisé à signaler des caméras en utilisant un proxy)

/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:29: error: Apostrophe not preceded by \ (in Where are the Eyes est un outil pour détecter et échapper à la vidéo-surveillance. Ensemble, vous et les utilisateurs fabriquez une carte des caméras de vidéo-surveillance pour protéger les activistes, étudiants et autres minorités à risque. Quand vous croisez une caméra, appuyez sur le bouton œil. Cela ajoute la caméra à la carte ou cela vérifie son existance si nous avons déjà des informations sur celle-ci.\n\nLes marques rouges indiquent des caméras connues. Le point bleu est votre position. Restez en sécurité.\n\nToutes images de boutons sont issus de Open Iconic sous licence MIT. L'icône "œil" a été créé par Amanda Howanice pour ce projet.\n\nPlus d'informations sur eyes.daylightingsociety.org\n\nFeedback? Contact : [email protected]\n\nDes données d'analyse ton envoyées à Mapbox par défaut (désactivable dans les Options).\n\nCarte par © Mapbox, © OpenStreetMap)

/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:32: error: Apostrophe not preceded by \ (in Ce paramètre permet à l'application de partager de façon anonyme la position et l'usage de la data avec Mapbox. Nous sommes obligés de partager les mesures par défaut.)

/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:36: error: Apostrophe not preceded by \ (in WhereAreTheEyes nécessite l'accès à votre position pour trouver les caméras proches. Merci d'actualiser vos permissions et relancez l'application.)

/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:41: error: Apostrophe not preceded by \ (in Vous proposez des caméras trop rapidement. Pour protéger l'intégrité de la carte, vous n'êtes plus autorisé à signaler des caméras pendant un moment.)

/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:46: error: Apostrophe not preceded by \ (in C'est une caméra)

/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:47: error: Apostrophe not preceded by \ (in Options d'interface)

/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:49: error: Apostrophe not preceded by \ (in Vous n'êtes pas autorisé à supprimer cette caméra.)

/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:51: error: Apostrophe not preceded by \ (in Choisissez un nom d'utilisateur sur eyes.daylightingsociety.org et insérez-le au dessus.)

/home/krt/src/fdroiddata/build/org.daylightingsociety.wherearetheeyes/Android/app/build/intermediates/res/merged/release/values-fr/values-fr.xml:52: error: Apostrophe not preceded by \ (in Votre nom d'utilisateur n'est pas connu sur eyes.daylightingsociety.org. Vous êtes-vous enregistré sur le site ?)


 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:processReleaseResources'.
> com.android.ide.common.process.ProcessException: Failed to execute aapt

Improve location accuracy

Accuracy is, compared to e.g. OsmAnd and other apps on Android, extremely bad. It takes a long time to get a fix. The 'here' marker moves extremely slowly to the actual location. See also #11

Material Design launcher icon

Please use a launcher icon in SVG based upon Material Design icons and colors. For this, special websites exist to create a launcher icon without having to open graphical design software.

Website Footer is Always Offscreen

There's something wonky with the CSS I've never been able to track down. The footer is always off the bottom of the screen, even if the page contents don't require it. As in, no matter how tall your browser window is, the footer is always just a little further down. This is most noticeable on the /archive page, every other page has enough content that you can't tell.

It's also a problem with the main Dayligthting Society website though, so some day it would be nice if we could fix it.

My guess so far:

The header div needs to be inside the stage div, so the min-height: 100%; on the stage div doesn't make the page 100% + height-of-header tall.

Should be able to remove my own registrations

If I marked a camera by mistake for some reason, I should be able to edit/delete the registration.
Confirmations aren't really a security against mistakes. Besides, it obviously doesn't always work.

The three first times I tested the app, it didn't ask for confirmation when pinning a camera.
Even though the switch for confirmations was on.
Should the switch be off for some reason, it is quite possible to mark cameras by mistake.

Feature suggestion: "Fog of War"?

Currently the markers on the map provide information about the presence of cameras. I think that the useful implicit information that comes with this is where there AREN'T cameras. As it currently stands, you can't really tell whether a given area is camera-free or just unexplored by users of the app. Perhaps there should a "fog of war" or other visual cue indicating unexplored areas to help make this distinction.

Material Design colors

Use only Material Design colors to keep it an integrated user experience with the device where users expect certain colors.

Show when was the last database update

0/,
today I was marking some cameras, but I noticed that there was not any of my yesterday marks,
I don't know if this is a bug, or if the local db was not updated. I think you can show in options when was the last update.

Material Design SVG icons

Please use Material Design SVG icons for the icons in the app such as:

  • camera (take picture)
  • thumb up (like or +1)
  • gear (settings)
  • eye (add camera)
  • question mark (help)

Implementing this will make it easier to use as the icons are more familiar to users and the icons are scalable compared to the one used now where pixels on the edge can be seen.

Users should be allowed to mark camera location in GPS range, if GPS is inaccurate

We often have GPS issues, where the accuracy goes >250m, showing the blue dot on an incorrect location. Instead of directly adding the marker at my current location, there should be an option to allow the user to click on his exact location.

P.S. I don't know if this should be a new issue, but a loading indicator when we submit markers would be great to know our request is being processes.

Distinguish Camera Types

We would like our data set to be compatible with other surveillance maps. After some discussion in #3 we came to consensus that we want to meet the Surveillance Under Surveillance standards. This means we need the following information:

  • Camera Type (Camera/Fixed/Panning/Dome)
  • Location (Public/Indoor/Outdoor)

We need to extend the API to support this information, extend the server and client-side storage for pins to contain this information, and add UI to gather this information during camera-marking time.

Plugin for OsmAnd

I find OsmAnd to be much more precise in pinpointing my location. It is very annoying that OsmAnd tells me exactly where I am and WhereAreTheEyes is 70 meters off. I would like to suggest to transform this app into a plugin for OsmAnd. Advantages are that much of the map stuff can be directly used from OsmAnd and does not need to be maintained anymore. Only focus is on the adding, removing, conforming and deleting of camera's.

Score not showing initially

Setting for "Show score" had to be switched off and back on to work properly.
Might be another default value problem.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.