Giter VIP home page Giter VIP logo

pdestefanis / ushahidi_android Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ushahidi/ushahidi_android

6.0 6.0 3.0 20.23 MB

Ushahidi is a web and mobile platform that allows you to create, visualize and share stories on a map. It allows individuals to share their stories on their own terms using the tools they already have. Ushahidi is free and open source software, so anyone can get involved by visiting http://community.ushahidi.com. Sync with any Ushahidi deployment. Send reports with images and location data as well as receive alerts from others who have sent in reports to the site. Works in offline mode.

Home Page: http://www.ushahidi.com

License: GNU Lesser General Public License v3.0

Java 98.23% Python 1.77%

ushahidi_android's People

Contributors

amands avatar dalezak avatar eyedol avatar inoran avatar neerhajnjoshi avatar pdestefanis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ushahidi_android's Issues

Add Report: "Send" without connectivity. User remains in Add Report screen

When the user attempts to send a report, and there is no network connectivity, the user is informed of the situation through an on-screen message, and the report is saved for latter transmission.
At this point, the systems needs to return to the main menu, instead of remaining at the Add Report window.
Please verify that the new report is saved for transmission.

Pictures are not displayed after report is saved as a draft

How to replicate:
Enter a report
Take a picture
Press the "home" button in the upper-left corner, the message is saved as a draft
Go to "add report", the pictures are missing

** Pictures are still being sent with the report, so they are still linked to it **

Desired outcome:
When the user selects "Add report", the pictures linked to the report "in progress" are shown

Restrict areas of the system

We would like to restrict the "Deployments" screen, and the "Advanced settings" menu. I would like to discuss with you options to do this.
We can use a simple password, but it will be good to have a way to update this password remotely. Please find a time when we are both online so we can discuss a few options

Thank you

Add Report: Limit size and number of images per report

Situation:
Current configuration "Photo Settings" does not seem to have any effect on the size of the images taken.

Desired outcome:
Allow the user to set the resolution/size of the image before it is taken (from 20KB -current- up to 500KB)
Set default at 100KB, document the setting
Implement as a slider (min = 20, max=500, default=100, increments of 10)

Form fields are cleared when attempting to send without Lat/Lon data

If the user attempts to Send the form before the system has completed the latitude and longitude fields (either by GPS, network location, or by manually selecting a location in the map), the application returns an error, and resets all fields.

Steps to duplicate:
Complete some or all fields while the unit is trying to get a GPS fix
Attempt to send the data before the units acquires a GPS fix

Desired results:
The user is informed that a location has not been entered "Please select a location in the map" (The current message does not specify what is missing).
The fields that already had data keep the data they had
The user remains in the data entry windows

Add Report: Screens time-out and location reset

When adding a new report, and after selecting the location in the map, if the screens times-out, the location is reset when the screen is turned back on.

Steps to reproduce:
Add new report, manually select a new location in the map
Wait for the screen to timeout
Turn on the screen. The location is reset.

Desired results:
Once the user manually selects a location, that location is kept by the system until the report is sent, or until the users requests the system to re-attempt auto-location

API: Force SSL connection to the server

If we are sending an API key on each request, we need to encrypt the transaction.

Please add a checkbox under "Advanced Settings" that reads "Use HTTPS for server access". The default is checked. The settings menu tree has been updated

When this box is checked, all API calls will be done using HTTPS instead of HTTP. Only API calls need to be encrypted.

Add Report: Clarify the logic for resolving current location

Add Report: Clarify the logic for resolving current location, we need to know exactly which location provider is being used, and when.

This example assumes that the default_latitude (Issue #7), default_longitude (Issue #7), location_timeout (Issue #15), and location_tolerance (Issue #14) have been set.

If in doubt, get in touch with Pablo

See following example:

Variables in settings file:
Timeout (default 60 seconds)
Default_Latitude (default -89.2216)
Default_Longitude (default 13.69947)
Tolerance = 2
 
You can use any names for the functions. This is just pseudocode, and it’s not meant to tell you how to code, just show you the logic
 
Use_GPS()
If ! isProviderEnabled(GPS_PROVIDER)
    Use_Network()
else
    While T < TIMEOUT
    getLastKnownLocation(GPS_PROVIDER) // only wait for TIMEOUT seconds. If timeout expires, the call Use_Network()
endif
 
If found() //before the timeout
    Return (Latitude, Longitude)
Else
    No_Location()
Endif
 
Return (Latitude, Longitude)

Use_Network()
If ! isProviderEnabled(NETWORK_PROVIDER)
    No_Location()
Else
    getLastKnownLocation(NETWORK_PROVIDER) // this loads Latitude and Longitude variables (your names may vary)
endif
 
If ! ( Latitude and Longitude are within Tolerance degress of Default_Latitude and Default_ Longitude) // ie: ( abs(Default_Latitude) – Tolerance ) < abs(Latitude) < ( abs(Default_Latitude) +Tolerance ) // same for longitude
    No_Location() /// will it make sense to call getLastKnownLocation(NETWORK_PROVIDER) again, and recheck if < Tolerance?
endif
 
Return (Latitude, Longitude)    
 

Review the use of getLastKnownLocation or requestLocationUpdates

Advanced Settings: Location Tolerance

In Km, text box, default 5KM.

Specifies which values are valid for the output of getLastKnownLocation(NETWORK_PROVIDER).
If the value returned is farther from the default location than Tolerance, then we can assume that getLastKnownLocation(NETWORK_PROVIDER) is returning an invalid location, in which case the system should present a message and inform the user that a precise location cannot be acquired.

"Cannot get a precise location. Please enable the GPS, or select the location manually"

This addresses the situation when NETWORK_PROVIDER returns a location way off the user's current location, ie.. in another country

View Report: Fix map panning

In view report, in the map frame, the user currently is only allowed to pan horizontally, not vertically.
This happens regardless of the phone orientation.

Please disallow panning along both axis, but allow zoom in/out (zoom is currently enabled, that's OK)

The desired result is that the user is able to zoom in/out, and the marker will always remain in the center of the map frame.

Please note: this is only for "View Report", not "Add Report"!

Add Report: Do not clear fields when attempting to send an incomplete form

Currently, if the user attempts to send a form that's missing one required field, the system alerts the user that the form is incomplete ("Check to see if all the required fields are complete"), and then proceed to present the form again, but will all the fields cleared.

Desired functionality:
The system warns the user when a required field is not filled (this currently works for Title, Description, and Categories)

If one field is missing (map location, location name) the user is notified, and the application remains in the Add Report form and does not clear the information the user has already loaded in the Add Report form

Note: The clearing of the fields seems to happen when the user did not select a location in the map, and the system did not come up with a default/autodetected location

DEFAULT_LATITUDE and DEFAULT_LONGITUDE are inverted

These two variables seem to be inverted, while the position in the map is correct, the actual default latitude is 13.69947 and the actual default longitude is -89.2216.

While the application works fine, this could lead to issues in the future. The name for the variables need to be swapped.

Please verify that the changes do not have an adverse effect on the current operation of the application

In IncidentAdd.java

121 private static final double DEFAULT_LATITUDE = -89.2216;

123 private static final double DEFAULT_LONGITUDE = 13.69947;

Maps: are we using caching?

We need to review if the system is using cached tiles, and if those are linked to the tiles used by the Google Maps application (which has a caching function).
Apparently, there is some form of caching (tested with no phone connectivity), but it is incomplete. I.e some tiles that I visited while connected will appear when disconnected, but others no.

What is the current setup in the application?
What is provided by Android in this regard?
Can we cache all the tiles visited in the phone?
Can we configure the amount of storage dedicated to caching?

Please verify and provide a brief report based on these questions. Based on that report we will decide which steps to follow

Review user notifications on error conditions

Some notifications are not clear, or do not provide enough information to lead to their resolution by the end user. Revise existing notifications for completeness and usability, and ensure that they are i18n-compatible.

[ Add detail of notifications from testing outcomes ]

View Reports (Map Format): Set Default location

View Reports (Map): Default location
The default/initial location for the map seems to be that of the last report. This should be an option in Settings.

The Advanced Settings screen needs three new fields

Default Latitude (from -90 to +90), Textbox
Default Longitude (from -180 to +180), Textbox
Default Zoom Level (from 0 to 15), Slider
Position Detection Tolerance (from 0.5 to 10), Slider

These values set the center for the map in View Reports - Map Format http://v06.idg-rti.org/wiki/images/ViewReport_Map.png and the zoom level.
These settings will also be used to evaluate the precision of the location provided by NETWORK_PROVIDER

Category Added to Incident when map resets

THIS IS A CRITICAL BUG

Every time the map resets (See issue #28), a new category is added to the event. This is a serious bug.

How to reproduce:
Add event
Select one category (i.e. "Otros")
Select new location in the map
Wait for system to update location (this is issue #28)
Look in categories, a new category has been selected, in addition to the one previously selected

Please fix ASAP

Advanced Settings: GPS Timeout

I would like to set a limit to how long the system will wait for a GPS fix, before resorting to NETWORK_PROVIDER for an estimated location
Add a GPS Timeout in Advanced Setttings, in seconds, text box, default 60 seconds. This will be used when the user is adding a new report, for the system to suggest the user's current location.

See issue #13

Location is lost after report is saved as draft

How to replicate:
Enter a report
Select a location
Press the "home" button in the upper-left corner, the message is saved as a draft
Go to "add report", the selected location is missing

Desired outcome:
When the report is saved as a draft, the current location is also saved, and then brought back, as with the other fields

Splash screen: Reduce wait time to 2"

The wait time for the splash screen needs to be reduced to 2"
Please indicate in the resolution what was modified, in case that we need to adjust this further

Location being reset in the map

THIS IS A CRITICAL BUG

In a new report, when the user selects a location manually and proceeds to enter additional data, the system resets the selected location to the detected location after a short period of time.

How to reproduce:
Turn off GPS
Go to "Add new incident" (the system will provide the current location through NETWORK_PROVIDER)
Tap another location and wait
The system resets the location to the auto-detected location

This was observed in the log:

[ first tap somewhere in the map]
03-08 11:48:08.176: I/MapMarker(25316): 110, 193 >> 35.889171, -79.123480

[ then then system does this - see time difference ]
03-08 11:48:28.005: D/dalvikvm(281): GC_EXPLICIT freed 1193K, 38% free 9459K/15175K, external 2178K/2719K, paused 185ms
03-08 11:48:28.015: D/WifiService(281): acquireWifiLockLocked: WifiLock{NetworkLocationProvider type=2 binder=android.os.BinderProxy@40aa1c60}
03-08 11:48:28.556: D/IncidentAdd(25316): doReverseGeocode
03-08 11:48:28.566: I/ReverseGeocoderTask(25316): doInBackground [35.906085059999995, -78.8639028]
03-08 11:48:29.486: I/ReverseGeocoderTask(25316): onPostExecute 3040, E Cornwallis Rd, Durham, United States
03-08 11:48:33.070: D/WifiService(281): releaseWifiLockLocked: WifiLock{NetworkLocationProvider type=2 binder=android.os.BinderProxy@40aa1c60}

Desired behavior:

Once the user manually selects a location in the map, any type of auto-location, (GPS, network, etc) is suspended for the duration of the data entry for this event.
The user selection is persistent for that event, and takes precedence.
Likewise, the system needs to allow for setting the location even during the period when the GPS is looking for a signal. If the users does so, the GPS-based location is no longer necessary.
Currently, the user is not allowed to select a location while the GPS is trying to get a fix, for the duration of the timeout period

View Reports: Alter list view

Please adjust the list view of reports. Currently it shows one picture and three lines of text:
[First word of incident title] [First word of category]
[First word of location_description]
[Date and time]

The image remains unchanged, while the text changes to:
[Complete incident title (cut on the right side if longer)]
[Categories, multi-line if needed]
[Complete location_description (cut on the right side if longer)]
[Date and time (this is unchanged)]

See this image for reference.

Add Report: Manually-selected location is ignored when report stored for send later

If the unit has no connectivity, and the system stored the report to be sent later, the location is incorrectly stored or transmitted. When the report is seen in the web-based system, the location is always Latitude=35.779235 Longitude=35.779235 (both fields are equal).

This happens when the location is selected manually, or when the location is set by the GPS

How to duplicate:
Disable data connection in unit
Create report, select location manually or allow GPS to set the location
Send the report, the system will inform that the report has been stored locally due to the lack of connectivity
Re-enable the data connection, the system detects this and sends the report
Check the report in the website, the location is set to 35.779235/35.779235

Desired result:
The location selected by the user, or detected by the GPS is transmitted and stored by the web system

API: Add authentication

API: Add authentication (the current API is completely open to anyone)

Currently the web API does not support authentication, meaning that anyone can post any information just by hitting the API URL. We want to provide the Device ID and GSM ID on every API call. The API code will be modified to check for valid IDs for one or both fields, and grant access accordingly.

Add Report: Record audio. Allow multiple recordings. Allow removing existing recordings

We would like the user to have the possibility of recording audio for each report, in the same way they can take images, and provide similar functionality, that is:

  • User can record audio clips of a given length, up to a maximum time, as set in "Audio Options"
  • User can stop (close) the recording, or pause/continue. The recording is closed when the user press "Stop", or when the maximum time has been reached
  • User can record more than one clip, up to a maximum number, as set in "Audio Options"
  • User can delete recordings by long-pressing on them (as implemented with the images)
  • The unit will beep and vibrate when the recording is stopped (either by user control or because the maximum time has been reached)
  • Recordings will be listed under the images, identified with a sequential number.
  • Recordings will be sent with the report, as it is done with images (this will require a change in the server API to process the incoming requests, that issue #52). There is no need to keep them in the device after they are successfully received by the server

The Add Report form will have one more button named "Add Audio Recording". New recordings will show under this button (as it is with images)

Recording format:
Sampling rate: 8000Hz
Sampling format: 8bit
The recording format will be . Probably 3GPP better as low-quality, small size (~1KB/sec)
The internal file names will be YYYYMMDDHHMMSS_DeviceID

Please see the Settings menu tree for details on the new setup options

Reference apps:
Wave Recorder
Tape-a-Talk

Add Report: Inform the user that no auto-detection is possible

If the unit cannot find an accurate or estimated location (GPS/NETWORK), either b/c a GPS fix is not found before the configured timeout, or b/c there is not network connectivity (or any other reason), the user needs to be informed with a message ("Your location cannot be determined automatically. Please select a location in the map")

Duplicate of #10: mButtonAddCategory not showing categories right after 2nd visit to button

How to duplicate:
Add new report
Select one or more category(ies)
Press OK (the category(ies) appear in the button)
Press the button again
The category(ies) selected previously are not marked, and others appear marked

The categories are transmitted fine to the web service.

The problem is in how the Android app show the categories when the user enters repeatedly to that dialog

This means I cannot release the application. The error is too obvious. Please provide a fix date.

Thank you,

Pablo

View Reports (Report Detail): "Glue" zoom controls to map

In the report view, the zoom controls stay relative to the screen instead of moving with the map frame, as the do in the map in "Add Report".
The map zoom controls need to remain with the map frame even if the user moves the map frame.

Add Report: Allow multiple pictures

Add Report: Allow multiple pictures
The user should be able to take several pictures, delete pictures taken, and submit all as part of the report submission process. The current code only allows one picture, and does not allow the user to remove it once taken.

We have working code with this issue resolved, but not in Github, please get in touch with Pablo before working on this issue.

Add Report: Do not apply reverse geocoding, overwriting the "location" field every time the user selects a new location in the map

Add Report: Do not apply reverse geocoding, overwriting the "location" field every time the user selects a new location in the map.
The reverse geocoder (lat/long to textual description) is being applied every time the user selects a new location. This overwrites any information the user has entered in the "Location" field. This reverse geocoding needs to be disabled.

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.