Giter Club home page Giter Club logo

getodk / collect Goto Github PK

View Code? Open in Web Editor NEW
699.0 61.0 1.3K 96.19 MB

ODK Collect is an Android app for filling out forms. It's been used to collect billions of data points in challenging environments around the world. Contribute and make the world a better place! ✨📋✨

Home Page: https://docs.getodk.org/collect-intro

License: Other

Java 58.54% JavaScript 0.05% Kotlin 41.36% Shell 0.06%
odk global-development data-collection global-health mhealth xforms android java social-impact mobile-data-collection

collect's Introduction

ODK Collect

Platform License Build status Slack

ODK Collect is an Android app for filling out forms. It is designed to be used in resource-constrained environments with challenges such as unreliable connectivity or power infrastructure. ODK Collect is part the ODK project, a free and open-source set of tools which help organizations author, field, and manage mobile data collection solutions. Learn more about ODK and its history here and read about example ODK deployments here.

ODK Collect renders forms that are compliant with the ODK XForms standard, a subset of the XForms 1.1 standard with some extensions. The form parsing is done by the JavaRosa library which Collect includes as a dependency.

Please note that the master branch reflects ongoing development and is not production-ready.

Table of Contents

Learn more about ODK Collect

Release cycle

Releases are planned to happen every 2-3 months (resulting in ~4 releases a year). Soon before (or just after) the end of one release cycle, the core team will plan a new set of work for the next release based on the ODK Roadmap, bugs and crashes identified in previous releases and other required or preemptive maintenance. This work will be broken down into Github Issues (for things that aren't already) by @seadowg and is then added into Collect's prioritised backlog for the core team (and any external contributors) to work on day to day. Sometimes issues will be assigned to core team members before they are actually started (moved to "in progress") to make it clear who's going to be working on what.

Once the majority of high risk or visible work is done for a release, a new beta will then be released to the Play Store by @lognaturel and that will be used for regression testing by @getodk/testers. If any problems are found, the release is blocked until we can merge fixes. Regression testing should continue on the original beta build (rather than a new one with fixes) unless problems block the rest of testing. Once the process is complete, @lognaturel pushes the releases to the Play Store following these instructions.

Fixes to a previous release should be merged to a "release" branch (v2023.2.x for example) so as to leave master available for the current release's work. If hotfix changes are needed in the current release as well then these can be merged in as a PR after hotfix releases (generally easiest as a single PR for the whole hotfix release). This approach can also be used if work for the next release starts before the current one is out - the next release continues on master while the release is on a release branch.

At the beginning of each release cycle, @grzesiek2010 updates all dependencies that have compatible upgrades available and ensures that the build targets the latest SDK.

Downloading builds

Per-commit debug builds can be found on CircleCI. Login with your GitHub account, click the build you'd like, then find the APK in the Artifacts tab.

If you are looking to use ODK Collect, we strongly recommend using the Play Store build. Current and previous production builds can be found in Releases.

Suggesting new features

We try to make sure that all issues in the issue tracker are as close to fully specified as possible so that they can be closed by a pull request. Feature suggestions should be described in the forum Features category and discussed by the broader user community. Once there is a clear way forward, issues should be filed on the relevant repositories. More controversial features will be discussed as part of the Technical Steering Committee's roadmapping process.

Contributing code

Any and all contributions to the project are welcome. ODK Collect is used across the world primarily by organizations with a social purpose so you can have real impact!

Issues tagged as good first issue should be a good place to start. There are also currently many issues tagged as needs reproduction which need someone to try to reproduce them with the current version of ODK Collect and comment on the issue with their findings.

If you're ready to contribute code, see the contribution guide.

Contributing translations

If you know a language other than English, consider contributing translations through Transifex.

Translations are updated right before the first beta for a release and before the release itself. To update translations, download the zip from https://www.transifex.com/getodk/collect/strings/. The contents of each folder then need to be moved to the Android project folders. A quick script like the one in this gist can help. We currently copy everything from Transifex to minimize manual intervention. Sometimes translation files will only get comment changes. When new languages are updated in Transifex, they need to be added to the script above. Additionally, ApplicationConstants.TRANSLATIONS_AVAILABLE needs to be updated. This array provides the choices for the language preference in settings. Ideally the list could be dynamically generated.

Contributing testing

All pull requests are verified on the following devices (ordered by Android version):

Our regular code contributors use these devices (ordered by Android version):

The best way to help us test is to build from source! If you aren't a developer and want to help us test release candidates, join the beta program!

Testing checklists can be found on the Collect testing plan.

If you have finished testing a pull request, please use a template from Testing result templates to report your insights.

Setting up your development environment

  1. Download and install Git and add it to your PATH

  2. Download and install Android Studio

  3. Fork the collect project (why and how to fork)

  4. Clone your fork of the project locally. At the command line:

     git clone https://github.com/YOUR-GITHUB-USERNAME/collect
    

    If you prefer not to use the command line, you can use Android Studio to create a new project from version control using https://github.com/YOUR-GITHUB-USERNAME/collect.

  5. Use Android Studio to import the project from its Gradle settings. To run the project, click on the green arrow at the top of the screen.

  6. Windows developers: continue configuring Android Studio with the steps in this document: Developing ODK Collect on Windows.

  7. Make sure you can run unit tests by running everything under collect_app/src/test/java in Android Studio or on the command line:

    ./gradlew testDebug
    
  8. Make sure you can run instrumented tests by running everything under collect_app/src/androidTest/java in Android Studio or on the command line:

    ./gradlew connectedAndroidTest
    

    Note: You can see the emulator setup used on CI in .circleci/config.yml.

Customizing the development environment

Changing JVM heap size

You can customize the heap size that is used for compiling and running tests. Increasing these will most likely speed up compilation and tests on your local machine. The default values are specified in the project's gradle.properties and this can be overriden by your user level gradle.properties (found in your GRADLE_USER_HOME directory). An example gradle.properties that would give you a heap size of 4GB (rather than the default 1GB) would look like:

org.gradle.jvmargs=-Xmx4096m

Testing a form without a server

When you first run Collect, it is set to download forms from https://demo.getodk.org/, the demo server. You can sometimes verify your changes with those forms but it can also be helpful to put a specific test form on your device. Here are some options for that:

  1. The All question types form from the default server is here. You can also try example forms and test forms or make your own.

  2. Convert the XLSForm (xlsx) to XForm (xml). Use the ODK website or XLSForm Offline or pyxform.

  3. Once you have the XForm, use adb to push the form to your device (after enabling USB debugging) or emulator.

    adb push my_form.xml /sdcard/Android/data/org.odk.collect.android/files/forms
    
  4. Launch ODK Collect and tap Fill Blank Form. The new form will be there.

Using APIs for local development

Certain functions in ODK Collect depend on cloud services that require API keys or authorization steps to work. Here are the steps you need to take in order to use these functions in your development builds.

Google Maps API: When the "Google Maps SDK" option is selected in the "User interface" settings, ODK Collect uses the Google Maps API for displaying maps in the geospatial question types (GeoPoint, GeoTrace, and GeoShape). To enable this API:

  1. Get a Google Maps API key. Note that this requires a credit card number, though the card will not be charged immediately; some free API usage is permitted. You should carefully read the terms before providing a credit card number.
  2. Edit or create secrets.properties and set the GOOGLE_MAPS_API_KEY property to your API key. You should end up with a line that looks like this: GOOGLE_MAPS_API_KEY=AIbzvW8e0ub...

Mapbox Maps SDK for Android: When the "Mapbox SDK" option is selected in the "User interface" settings, ODK Collect uses the Mapbox SDK for displaying maps in the geospatial question types (GeoPoint, GeoTrace, and GeoShape). To enable this API:

  1. Create a Mapbox account. Note that signing up with the "Pay-As-You-Go" plan does not require a credit card. Mapbox provides free API usage up to the monthly thresholds documented at https://www.mapbox.com/pricing. If your usage exceeds these thresholds, you will receive e-mail with instructions on how to add a credit card for payment; services will remain live until the end of the 30-day billing term, after which the account will be deactivated and will require a credit card to reactivate.
  2. Find your access token on your account page - it should be in "Tokens" as "Default public token".
  3. Edit or create secrets.properties and set the MAPBOX_ACCESS_TOKEN property to your access token. You should end up with a line that looks like this: MAPBOX_ACCESS_TOKEN=pk.eyJk3bumVp4i...
  4. Create a new secret token with the "DOWNLOADS:READ" secret scope and then add it to secrets.properties as MAPBOX_DOWNLOADS_TOKEN.

Note: Mapbox will not be available as an option in compiled versions of Collect unless you follow the steps above. Mapbox will also not be available on x86 devices as the native libraries are excluded to reduce the APK size. If you need to use an x86 device, you can force the build to include x86 libs by include the x86Libs Gradle parameter. For example, to build a debug APK with x86 libs: ./gradlew assembleDebug -Px86Libs.

Debugging JavaRosa

JavaRosa is the form engine that powers Collect. If you want to debug or change that code while running Collect you can deploy it locally with Maven (you'll need mvn and sed installed):

  1. Build and install your changes of JavaRosa (into your local Maven repo):
./gradlew installLocal
  1. Change const val javarosa = javarosa_online in Dependencies.kt to const val javarosa = javarosa_local

Troubleshooting

Error when running Robolectric tests from Android Studio on macOS: build/intermediates/bundles/debug/AndroidManifest.xml (No such file or directory)

Configure the default JUnit test runner configuration in order to work around a bug where IntelliJ / Android Studio does not set the working directory to the module being tested. This can be accomplished by editing the run configurations, Defaults -> JUnit and changing the working directory value to $MODULE_DIR$.

Source: Robolectric Wiki.

Android Studio Error: SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.

When cloning the project from Android Studio, click "No" when prompted to open the build.gradle file and then open project.

Execution failed for task ':collect_app:transformClassesWithInstantRunForDebug'.

We have seen this problem happen in both IntelliJ IDEA and Android Studio, and believe it to be due to a bug in the IDE, which we can't fix. As a workaround, turning off Instant Run will usually avoid this problem. The problem is fixed in Android Studio 3.5 with the new Apply Changes feature.

Moving to the main view if user minimizes the app

If you build the app on your own using Android Studio (Build -> Build APK) and then install it (from an .apk file), you might notice this strange behaviour thoroughly described: #1280 and #1142.

This problem occurs building other apps as well.

gradlew Failure: FAILURE: Build failed with an exception.

If you encounter an error similar to this when running gradlew:

FAILURE: Build failed with an exception

What went wrong:
A problem occurred configuring project ':collect_app'.
> Failed to notify project evaluation listener.
   > Could not initialize class com.android.sdklib.repository.AndroidSdkHandler

You may have a mismatch between the embedded Android SDK Java and the JDK installed on your machine. You may wish to set your JAVA_HOME environment variable to that SDK. For example, on macOS:

export JAVA_HOME="/Applications/Android\ Studio.app/Contents/jre/Contents/Home/"

Note that this change might cause problems with other Java-based applications (e.g., if you uninstall Android Studio).

gradlew Failure: java.lang.NullPointerException (no error message).

If you encounter the java.lang.NullPointerException (no error message). when running gradlew, please make sure your Java version for this project is Java 17.

This can be configured under File > Project Structure in Android Studio, or by editing $USER_HOME/.gradle/gradle.properties to set org.gradle.java.home=(path to JDK home) for command-line use.

Unable to resolve artifact: Missing while running tests

This is encountered when Robolectric has problems downloading the jars it needs for different Android SDK levels. If you keep running into this you can download the JARs locally and point Robolectric to them by doing:

./download-robolectric-deps.sh

Creating signed releases for Google Play Store

Maintainers keep a folder with a clean checkout of the code and use jenv.be in that folder to ensure compilation with Java 17.

Release prerequisites:

  • alocal.properties file in the root folder with the following:

    sdk.dir=/path/to/android/sdk
    
  • the keystore file and passwords

  • a secrets.properties file in the root project folder folder with the following:

    // secrets.properties
    RELEASE_STORE_FILE=/path/to/collect.keystore
    RELEASE_STORE_PASSWORD=secure-store-password
    RELEASE_KEY_ALIAS=key-alias
    RELEASE_KEY_PASSWORD=secure-alias-password
    
  • a google-services.json file in the collect_app/src/odkCollectRelease folder. The contents of the file are similar to the contents of collect_app/src/google-services.json.

Release checklist:

  • update translations
  • make sure CI is green for the chosen commit
  • run ./gradlew releaseCheck. If successful, a signed release will be at collect_app/build/outputs/apk (with an old version name)
  • verify a basic "happy path": scan a QR code to configure a new project, get a blank form, fill it, open the form map (confirms that the Google Maps key is correct), send form
  • verify new APK can be installed as update to previous version and that above "happy path" works in that case also
  • create and publish scheduled forum post with release description
  • write Play Store release notes, include link to forum post
  • create a release with the correct version by tagging the commit and running ./collect_app:assembleOdkCollectRelease
    • Tags for full releases must have the format vX.X.X. Tags for beta releases must have the format vX.X.X-beta.X.
  • add a release to Github here, generate release notes and attach the APK
  • upload APK to Play Store
  • if there was an active beta before release (this can happen with point releases), publish a new beta release to replace the previous one which was disabled by the production release
  • backup dependencies for the release by downloading the vX.X.X.tar artifact from the create_dependency_backup job on Circle CI (for the release commit) and then uploading it to the "Collect Dependency Backups" folder in GetODK's Google Drive

Compiling a previous release using backed-up dependencies

  1. Download the .tar for relevant release tag
  2. Extract .local-m2 into the project directory:
    tar -xf maven.tar -C <collect project directory>

The project will now be able to fetch dependencies that are no longer available (but were used to compile the release) from the .local-m2 Maven repo.

collect's People

Contributors

akshay-ap avatar alxndrsn avatar bartoszfilipowicz avatar batkinson avatar breakbusyloop avatar chartung avatar chidauri avatar cooperka avatar dcbriccetti avatar dimwight avatar grzesiek2010 avatar heyjamesknight avatar huangyz0918 avatar hypercubestart avatar jbeorse avatar jd-alexander avatar jnordling avatar lakshyagupta21 avatar lognaturel avatar mapkon avatar max2me avatar meletis avatar mitchellsundt avatar mmarciniak90 avatar saumiasinghal avatar seadowg avatar shobhitagarwal1612 avatar steelej-arm avatar yanokwa avatar zestyping 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  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

collect's Issues

Protecting blank forms from deletion

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:40 GMT
Originally opened as getodk/getodk#515 (4 comment(s))


Originally reported on Google Code with ID 514

I'm doing fieldwork now in Ghana and we're finding that enumerators
are accidentally deleting blank forms when they intend to delete
instances of data collection.

For the short-term, we will probably just try to quickly re-train them
to avoid this.  But I have two design suggestions.

In the short-to-medium term, I would recommend adding a check box,
hidden under "change settings" that says something like "Protect Blank
Forms From Deletion".  It's easier as a trainer to prevent staff from
messing with the "settings" than it is to stop them from trying to
delete data instances that they've collected and want to delete.

But in the longer term, I think this is a bit of an interface design
problem with ODK Collect.  When looking at the two tabs visible after
clicking:  "Delete Saved Forms" it can be confusing which of the two
tabs is actually active (in bright sun, the black and white tab has
higher contrast, and looks active, when in fact it's the dark-gray on
lighter gray that is active).  I've come close to accidentally
deleting blank forms myself...

Reported by yanokwa on 2012-02-11 15:30:33

multiple server selection

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:34 GMT
Originally opened as getodk/getodk#476 (3 comment(s))


Originally reported on Google Code with ID 475

"Problem is now I have at least four servers running in different
places, and perhaps I should get rid of most, but I do change servers
often lately. Is it possible that in Collect's settings I can set up
multiple servers or at least have a sort of "history" selection for
different servers. For example. When not near my home network, I may
rather want to upload to GAE instead for easy access from a different
location.

Of course downloading identical forms from different servers could be
a problem, but as for me I would not mind selection all four servers
and uploading in one go when possible. (Or perhaps I need a lecture on
how to handle this info.)"
-- bergie

Reported by yanokwa on 2011-12-14 01:26:43

add test directory

Issue by mitchellsundt
Wednesday Jul 08, 2015 at 22:44 GMT
Originally opened as getodk/getodk#53 (2 comment(s))


Originally reported on Google Code with ID 52

We should definitely add some unit tests for this in.  Yaw - do we have a place / folder
in the repo 
where can start to get unit tests in there?

The two common ways would be either

src/org/odk/collect/android/tests

or we have both

src
tests

and mirror the director structures with the tests for class 
org.odk.collect.android.database.FileDbAdapater in 
tests/odk/collect/android/dabase/FileDbAdapterTests.java

Reported by yanokwa on 2010-04-29 22:27:07

empty group crashes ODK Collect

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:30 GMT
Originally opened as getodk/getodk#438 (4 comment(s))


Originally reported on Google Code with ID 437

What steps will reproduce the problem?
1. install the attached form (.xml file) on a device
2. open Collect and start a new form, choose JavaRosa-Test
3. browse past the first page

What is the expected output? What do you see instead?
expect to see the last page. Instead, Collect crashes.

What version of the product are you using? On what operating system?
Collect 1.1.7-RC2 on a Samsung Galaxy Tab P1000

Please provide any additional information below.

Reported by [email protected] on 2011-11-19 20:02:49


- _Attachment: [odk_collect_crash_empty_group.xls](https://storage.googleapis.com/google-code-attachments/opendatakit/issue-437/comment-0/odk_collect_crash_empty_group.xls)_ - _Attachment: [odk_collect_crash_empty_group.xml](https://storage.googleapis.com/google-code-attachments/opendatakit/issue-437/comment-0/odk_collect_crash_empty_group.xml)_

tool to change the line width in the annotate and draw widget

Originally reported on Google Code with ID 971

What tool are you using?
Annotate widget & Draw widget

What is frustrating, troubling, annoying or lacking?
I'd like to see an option to change the line width or at least have the line width
default to a thinner line.

How would you like it to work?
next to set color have an option for change line width.


NOTE: the core team has limited ability to make software enhancements.
We rely heavily on community-contributed enhancements to the tools. If this
is something you very much need, consider hiring a developer to make the
changes with the stipulation that they work with the core team to specify
the details of the change and contribute the change back to the project
under an Apache 2 license.

Reported by oconnorholmesbailey on 2014-02-05 03:14:44

Add fingerprint scanning support

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:38 GMT
Originally opened as getodk/getodk#497 (3 comment(s))


Originally reported on Google Code with ID 496

For Android OS (ARM based), we have the driver and ScanAPI for the Futronic FS80 to
capture a fingerprint image, but it has the following requirement:
 1. Have an USB Host port
 2. Have usbfs support in the kernel
 3. Have the root access right
 4. Have a folder "/data/" that can be read/write access.

Attached please find the libusb and ScanAPI libraries for Android, and the console
demo program with source code. To test it, you need to copy the libraries to the system
lib folder, then open the terminal, run as root user:
    #./ftrScanAPI_Ex_fs.

Reported by yanokwa on 2012-01-10 01:08:55


- _Attachment: [30_12_2010_scanapi_android_flock_bin_src.rar](https://storage.googleapis.com/google-code-attachments/opendatakit/issue-496/comment-0/30_12_2010_scanapi_android_flock_bin_src.rar)_

use https for data submission

Issue by mitchellsundt
Wednesday Jul 08, 2015 at 19:49 GMT
Originally opened as getodk/getodk#12 (3 comment(s))


Originally reported on Google Code with ID 11

submissions currently take place over https. support password protected and
fully encrypted data communications when available. 

Reported by yanokwa on 2010-04-29 22:06:07

ordering (ranking) select

Issue by mitchellsundt
Thursday Jul 09, 2015 at 17:27 GMT
Originally opened as getodk/getodk#135 (1 comment(s))


Originally reported on Google Code with ID 134

Slide up/down for ranking of items (perhaps enable/disable individual items for "N/A"?)

Reported by mitchellsundt on 2010-10-11 17:31:38

animations to form entry

Issue by mitchellsundt
Wednesday Jul 08, 2015 at 22:44 GMT
Originally opened as getodk/getodk#59 (3 comment(s))


Originally reported on Google Code with ID 58

it would be nice to get some visual confirmation (shake left to right) when at the beginning
or end 
of form entry

Reported by yanokwa on 2010-04-29 22:29:14

add table widget

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:25 GMT
Originally opened as getodk/getodk#405 (6 comment(s))


Originally reported on Google Code with ID 404

One of our forms was for election results, and was effectively a table of numbers. Is
there any better way to do this besides one question per cell in the table (e.g. "How
many votes for UP in the presidential race?")

Reported by yanokwa on 2011-10-30 03:51:11

Send forms shortcut

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:44 GMT
Originally opened as getodk/getodk#538 (3 comment(s))


Originally reported on Google Code with ID 537

A really cool thing in conjunction with the "form shortcut" would be to have a "send
forms" shortcut.  Then, it would just be a matter of clicking the form to collect the
data and then clicking on "send forms" to see the list and send them.  I'd like to
be able to set up the app and forms on a device and then have someone who may not know
ODK very well use it to collect data.

Reported by yanokwa on 2012-03-17 22:55:54

Day of week added to date input

Issue by mitchellsundt
Thursday Jul 09, 2015 at 17:38 GMT
Originally opened as getodk/getodk#186 (2 comment(s))


Originally reported on Google Code with ID 185

Enhancement

I would love to see a day of the week added to the date input question, or something
that shows up as a calendar where a date can be selected.

While the date works well for birthdates, we often get answers like 'last friday' or
'2 weeks ago'.  We've done single select options for this, but transforming the data
later into actual dates is not easy.  It would be great if an enumerator got an answer
like 'Friday' and be able to have a way for this to be translated into the date that
was last friday (referenced from today).


Reported by Emily.Kumpel on 2011-02-17 17:48:48

photos not showing up on droid eris

Issue by mitchellsundt
Wednesday Jul 08, 2015 at 22:44 GMT
Originally opened as getodk/getodk#54 (5 comment(s))


Originally reported on Google Code with ID 53

I was testing my auth code on an HTC Droid Eris phone earlier, and noticed that it seems
to be 
uploading photos of zero length to my server.  This doesn't seem related to the code
I added --- I 
dropped back to the release apk and it has the same behavior.  (It all works fine under
the emulator 
as well.)  I put it under the debugger and JPEG file being attached to the form post
is reporting a 
content length of zero bytes in the InstanceUploaderTask.  This is kind of weird, because
the photos 
are being taken and show up in the camera app.

It's a Verizon phone running 1.5.  I don't think it's an issue on the server side,
since I see the 
problem both on my local server and on open-data-kit.appspot.com, and my stepping through
the 
code makes it look like an empty file is being sent up from the client.

Reported by yanokwa on 2010-04-29 22:27:17

Why prompt for credentials when already entered

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:24 GMT
Originally opened as getodk/getodk#399 (5 comment(s))


Originally reported on Google Code with ID 398

Even if users enter their credentials in the prefs screen, a prompt always appears on
the first request after ODK is opened. This is both confusing and slows things down
as two request/responses must take place instead of one. Is there any reason for the
prompt or could we just send the saved credentials with the first request and only
show the dialog if there is an auth failure?

Reported by yanokwa on 2011-10-30 03:49:43

Collect authentication behavior is complex and confusing

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:46 GMT
Originally opened as getodk/getodk#553 (0 comment(s))


Originally reported on Google Code with ID 552

What steps will reproduce the problem?
1. Set up authenticated access to a server
2. Download a form
3. Change user password
4. Access server again.

What is the expected output? What do you see instead?

One would expect that the change of password would invalidate the authentication set
up with the server, prompting for a new authorization.

In fact, it does nothing, as the connection uses the established credentials.  This
causes failures later on when the app is stopped and restarted.

Very non-transparent.

Reported by mitchellsundt on 2012-04-03 21:56:33

Memory Issues with Images

Issue by mitchellsundt
Wednesday Jul 08, 2015 at 22:55 GMT
Originally opened as getodk/getodk#106 (3 comment(s))


Originally reported on Google Code with ID 105

What steps will reproduce the problem?
1. Use the widget form from the ODK repo
2. Take a photo in the image question
3. Retake the photo after it displays
4. It should crash


What is the expected output? What do you see instead?
I get this error from the log (http://dpaste.com/223770/) 

What version of the product are you using? On what operating system?
v1.1.4 on Cyanogenmod 5.0.8



Please provide any additional information below.

Reported by andrewazman on 2010-07-31 16:47:05

Galaxy Tab photos show up sideways if not taken in a landscape orientation

Issue by mitchellsundt
Thursday Jul 09, 2015 at 17:37 GMT
Originally opened as getodk/getodk#183 (2 comment(s))


Originally reported on Google Code with ID 182

Photos can't be rotated, so when you take a picture it comes in as 
landscape regardless of the orientation you took the picture, so upon 
importing into fusion forms the default info windows sometimes show 
sideways photos. I've trained myself to not take portrait shots 
anymore. Even though portrait is much better for snapping shots of 
trees. 

Galaxy Tab OS 2.2

Reported by parkstrial on 2011-01-27 15:33:39

Add forms count into Main Menu

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:38 GMT
Originally opened as getodk/getodk#498 (3 comment(s))


Originally reported on Google Code with ID 497

Also, add back the counts, especially for Send Finalized Form. Those counts helped the
team know that they had data that had not been reported.

-- Alex

Reported by yanokwa on 2012-01-12 23:55:26

media files are not deleted when copied to instance folder

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:18 GMT
Originally opened as getodk/getodk#364 (5 comment(s))


Originally reported on Google Code with ID 363

What steps will reproduce the problem?
1. Have a form that includes at least an image, a video and an audio field
2. Start new form, select that form, record the video, audio and image,
3. Save the form instance and mark it as finished
4. Browse to the folders where media files are recorded by default

What is the expected output? What do you see instead?
the video audio and image should be deleeted from thei location where they are originally
recorded, and MOVED (as opposed to copied) to the instance folder. This at least should
be the case by default when recording on the fly. It may be goood to have a choice
in the setttings, but this should be the default when you record on the fly (not when
you choose an existing file)

Instead, media are copied and the original kept. Not sure about audio because i dont
know where it s saved but this happens with fotos and video

What version of the product are you using? On what operating system?


Please provide any additional information below.

Reported by matteosistisette on 2011-10-07 08:26:40

multi-tap soft keyboard

Issue by mitchellsundt
Wednesday Jul 08, 2015 at 22:42 GMT
Originally opened as getodk/getodk#45 (3 comment(s))


Originally reported on Google Code with ID 44

when an input field is defined as type "int" the keyboard pops up as the number keyboard.
it would 
be better if it popped up the 9 digit number pad.

it might be a good idea to have the equivalent of a multi-tap keyboard. that way you
can use it for 
integers (one tap) and also text entry for those who prefer it to a qwerty or find
it more familiar.

http://developer.android.com/resources/samples/SoftKeyboard/index.html is an example

Reported by yanokwa on 2010-04-29 22:25:32

odk collect upload behind a proxy server

Issue by mitchellsundt
Wednesday Jul 08, 2015 at 21:14 GMT
Originally opened as getodk/getodk#17 (11 comment(s))


Originally reported on Google Code with ID 16

Can we get ODK Collect to work in WiFi connections where a proxy server is 
present? I noticed that the presence of a proxy server prevents the app from 
uploading the file/form. 

Reported by yanokwa on 2010-04-29 22:11:00

add number of satellites to geopoint display

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:33 GMT
Originally opened as getodk/getodk#464 (2 comment(s))


Originally reported on Google Code with ID 463

It would be good to include as part of the ODK collect app location page, a small component
that gives visual feedback on the status of the GPS location gathering operation (ie
like the GPS test app) and show the number of satelites in view, how many are active
etc.

Reported by yanokwa on 2011-12-05 17:34:01

The ability to sort or group saved forms in Collect

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:42 GMT
Originally opened as getodk/getodk#525 (1 comment(s))


Originally reported on Google Code with ID 524

Enhancement feature.

In the "Change Settings page" 

The ability to sort or group the saved forms by a common thread.
also the ability to default name the finalized form using a populated form field.

Thanks!

 Keep Up the Good Work !! 
 and I apologize if these features have been asked for .. did not see them in the issues
forum. 

Reported by saginawinspector on 2012-02-20 17:51:54

Use Distance and Area Measurement app to record GPS path

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:15 GMT
Originally opened as getodk/getodk#344 (7 comment(s))


Originally reported on Google Code with ID 343

I'm not sure if this is the right place for feature requests, but it would be cool to
have a widget to collect a path of gps coordinates. Repeating a geopoint question is
quite cumbersome. Some folks at AfSIS have had good luck with the Distance and Area
Measurement Android app.

Andrew

Reported by andrew.ei.marder on 2011-09-29 17:36:36

add EGNOS/WAAS support

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:32 GMT
Originally opened as getodk/getodk#454 (2 comment(s))


Originally reported on Google Code with ID 453

A suggestion that ODK collect could incorporate EGNOS Differential corrections (European
and North African). They have an
Android/iPhone Library available.

http://egnos-portal.gsa.europa.eu/developer-platform/egnos-toolkits/egnos-sdk/sdk-core-installation-procedure



Reported by lambe.ian on 2011-11-28 12:09:49

Implement orx:max-pixels attribute to scale down images

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:11 GMT
Originally opened as getodk/getodk#309 (5 comment(s))


Originally reported on Google Code with ID 308

as android devices continue to ship with better cameras, we are sending pictures that
are unnecessarily huge. 

there is no easy way to do this in the intent (especially with 1.5/1.6 support), so
in the submission activity, we should likely compress before we send. 

it's not clear if this should be a form or device setting.

Reported by yanokwa on 2011-08-24 20:58:24

crash when changing to landscape mode during form entry

Issue by mitchellsundt
Wednesday Jul 08, 2015 at 22:47 GMT
Originally opened as getodk/getodk#75 (7 comment(s))


Originally reported on Google Code with ID 74

Steps to reproduce:
1.Open a form in ODK Collect v1.1.4 while running Android 2.2

The form should go into landscape mode, but instead the form crashes with a
popup window saying "The application ODK Collect (process
org.odk.collect.android) has stopped unexpectedly. Please try again."

I am running Android 2.2 on a Nexus One with the latest ODK Collect from
the svn repository (which says v1.1.4). I have tested this out on the
Android 2.2 emulator with an identical result. Here is the log from the
phone from the point of switching to landscape while a form is open:

05-23 23:59:02.528: INFO/WindowManager(88): Setting rotation to 1, animFlags=0
05-23 23:59:02.548: INFO/ActivityManager(88): Config changed: { scale=1.0
imsi=310/260 loc=en_US touch=3 keys=1/1/2 nav=3/1 orien=2 layout=34
uiMode=17 seq=92}
05-23 23:59:02.598: DEBUG/FormEntryActivity(8162): onPause
05-23 23:59:02.608: INFO/UsageStats(88): Unexpected resume of
org.odk.collect.android while already resumed in org.odk.collect.android
05-23 23:59:02.668: INFO/PropertyManager(8162): calling constructor
05-23 23:59:02.688: DEBUG/AndroidRuntime(8162): Shutting down VM
05-23 23:59:02.688: WARN/dalvikvm(8162): threadid=1: thread exiting with
uncaught exception (group=0x4001d7e8)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162): FATAL EXCEPTION: main
05-23 23:59:02.698: ERROR/AndroidRuntime(8162): java.lang.RuntimeException:
Unable to start activity
ComponentInfo{org.odk.collect.android/org.odk.collect.android.activities.FormEntryActivity}:
java.lang.NullPointerException
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3815)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
android.app.ActivityThread.access$2400(ActivityThread.java:125)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:2037)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
android.os.Handler.dispatchMessage(Handler.java:99)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
android.os.Looper.loop(Looper.java:123)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
android.app.ActivityThread.main(ActivityThread.java:4627)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
java.lang.reflect.Method.invokeNative(Native Method)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
java.lang.reflect.Method.invoke(Method.java:521)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
dalvik.system.NativeStart.main(Native Method)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162): Caused by:
java.lang.NullPointerException
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
org.odk.collect.android.activities.FormEntryActivity.refreshCurrentView(FormEntryActivity.java:284)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
org.odk.collect.android.activities.FormEntryActivity.onCreate(FormEntryActivity.java:174)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
05-23 23:59:02.698: ERROR/AndroidRuntime(8162):     ... 12 more
05-23 23:59:02.718: WARN/ActivityManager(88):   Force finishing activity
org.odk.collect.android/.activities.FormEntryActivity
05-23 23:59:02.908: DEBUG/dalvikvm(144): GC_EXTERNAL_ALLOC freed 1459
objects / 67320 bytes in 113ms
05-23 23:59:03.225: WARN/ActivityManager(88): Activity pause timeout for
HistoryRecord{44bff5a0 org.odk.collect.android/.activities.FormEntryActivity}
05-23 23:59:05.008: DEBUG/dalvikvm(88): GC_EXPLICIT freed 3463 objects /
161320 bytes in 101ms
05-23 23:59:12.028: DEBUG/dalvikvm(7811): GC_FOR_MALLOC freed 4289 objects
/ 632496 bytes in 58ms
05-23 23:59:12.726: WARN/ActivityManager(88): Launch timeout has expired,
giving up wake lock!
05-23 23:59:16.678: INFO/Process(8162): Sending signal. PID: 8162 SIG: 9
05-23 23:59:16.708: INFO/ActivityManager(88): Process
org.odk.collect.android (pid 8162) has died.
05-23 23:59:16.708: INFO/WindowManager(88): WIN DEATH: Window{44c56590
org.odk.collect.android/org.odk.collect.android.activities.MainMenuActivity
paused=false}
05-23 23:59:16.718: INFO/ActivityManager(88): Start proc
org.odk.collect.android for activity
org.odk.collect.android/.activities.MainMenuActivity: pid=8175 uid=10083
gids={3003, 1015}

Reported by joshua.purcell on 2010-05-24 05:12:27

support background data capture for audio and location

Issue by mitchellsundt
Wednesday Jul 08, 2015 at 22:42 GMT
Originally opened as getodk/getodk#44 (3 comment(s))


Originally reported on Google Code with ID 43

For surveys that consist of interviewing people, it might be interesting to keep a running
audio of 
the whole interview in parallel to filling the form. Currently ODK Collect only supports
standalone 
audio questions.

Launching an activity to do this is possible, but can we make it easier?

Reported by yanokwa on 2010-04-29 22:25:15

Enable pitch and roll widgets in Collect, to supplement compass bearings

Originally reported on Google Code with ID 1063

What tool are you using?
ODK Collect 1045 (Device LG G2)

What is frustrating, troubling, annoying or lacking?

A new widget to record compass bearings was added to ODK collect in Oct 2013.
See:
https://code.google.com/p/opendatakit/source/detail?r=987078d8b2f6c9973b4b208000366b520bd149e1&name=default&repo=collect

From the above commit, the values for pitch and roll are also read from the device's
sensors (however these 2 values are //commented out in BearingActivity.java)

How would you like it to work?

Similar to the new 'bearing' widget, to have 2 new widgets for "pitch" and "roll  "bearing"
of type decimal, appearance="pitch" and "roll" which use
the device's g sensor to get readings of the orientation of the device.

Reported by peterdcrees on 2014-09-15 07:44:39

add compass as a widget

Issue by mitchellsundt
Wednesday Jul 08, 2015 at 22:14 GMT
Originally opened as getodk/getodk#30 (5 comment(s))


Originally reported on Google Code with ID 29

just like location, i'd like to get the direction i'm pointing...

Reported by yanokwa on 2010-04-29 22:18:51

Add support for answers given as a range

Issue by mitchellsundt
Thursday Jul 09, 2015 at 17:38 GMT
Originally opened as getodk/getodk#187 (3 comment(s))


Originally reported on Google Code with ID 186

Enhancement.

Many answers we get are given as a range: 1-2 weeks, 3-4 days, etc.  Is there some
way that a type of answer can be a range (I'm thinking two sliders of numbers, like
the ones used for dates?)

Reported by Emily.Kumpel on 2011-02-17 17:50:51

Improve look/feel of group popup

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:44 GMT
Originally opened as getodk/getodk#539 (3 comment(s))


Originally reported on Google Code with ID 538

As for the group pop-up, I guess that I would like at least the terminology to change,
avoiding the term "group"  that doesn't make sense except when building the form. 
I would actually like it to use the name of the group or something like that.

For example, in one of the Market screenshots, there is a form record bird observations.
 It would be nice if the title and content of the popup was "Add a new 'observation'"
(and "Add another 'observation'" on subsequent ones).  Then the buttons could just
say, "Add" and "Do Not Add" (or "Continue", maybe).

Making just that change would be great with me.

What would take more work, but I think would be a little better is to add buttons to
handle what the pop-ups do.  I have attached a screenshot mock-up that shows what I
mean.   I just rolled what goes at the top (every page of the group) and what goes
at the bottom (last page of group) into the one page.  It adds a "Skip 'observation'"
button at the top to jump out of the group, and a "Next 'observation'" and "Done" buttons
at the bottom.

Reported by yanokwa on 2012-03-17 22:57:36

Double requests being sent to server with auth

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:07 GMT
Originally opened as getodk/getodk#282 (11 comment(s))


Originally reported on Google Code with ID 281

What steps will reproduce the problem?
1. Upload a form to any auth-enabled server
2.
3.

What is the expected output? What do you see instead?
One would expect one HEAD to get the 401, then another HEAD with the proper credentials,
and then one POST to do the upload. Instead two POSTs are being sent. So evidently
the credentials are not being sent preemptively.

What version of the product are you using? On what operating system?
1.1.7RC, Android 2.3.4

Please provide any additional information below.

Reported by tomsmyth on 2011-07-28 15:59:13

Display form submissions on map

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:40 GMT
Originally opened as getodk/getodk#511 (2 comment(s))


Originally reported on Google Code with ID 510

Sorry if I am posting in the wrong location.

I am interested in whether it would be possible to visualize completed forms in a map
on the mobile device (through google earth or any other app).

Cheers,
Jeremy

Reported by jeremy.r.brammer on 2012-02-07 22:13:46

galaxy tab returns internal sdcard as external diretory

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:31 GMT
Originally opened as getodk/getodk#448 (3 comment(s))


Originally reported on Google Code with ID 447

On a Galaxy Tab, Environment.getExternalStorageDirectory() returns the internal memory
"/sdcard/". The actual SD card appears at "/sdcard/external_sd/". This is in contrast
to the Galaxy S, which mounts its sdcard at /sdcard/

http://stackoverflow.com/questions/4210154/android-sd-card-characteristics-on-samsung-galaxy

http://stackoverflow.com/questions/5524105/how-could-i-get-the-correct-external-storage-on-samsung-and-all-other-devices

Reported by yanokwa on 2011-11-23 06:16:01

odk collect 1.1.7 crashes getting formlist

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:13 GMT
Originally opened as getodk/getodk#336 (7 comment(s))


Originally reported on Google Code with ID 335

I'm trying to implement a custom server, so there's almost surely an issue on the server
side; however, even in the case of wrong or even malicious response from the server,
ODK collect should never crash.

It looks like it crashes when retrieving the formList over https if the server doesn't
have a valid certificate (I'm only guessing)

What steps will reproduce the problem?
1. get the form list from a server with https without a certificate

What is the expected output? What do you see instead?

Expected is some meaningful error message to the user saying that the identity of the
server cannot be verified

Observed is that ODK Collect crashes


I think this is the relevant part of the log:

09-24 18:50:13.152 W/System.err(25941): javax.net.ssl.SSLPeerUnverifiedException: No
peer certificate
09-24 18:50:13.152 W/System.err(25941): at org.apache.harmony.xnet.provider.jsse.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:258)
09-24 18:50:13.152 W/System.err(25941): at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93)
09-24 18:50:13.152 W/System.err(25941): at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381)
09-24 18:50:13.152 W/System.err(25941): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:164)
09-24 18:50:13.152 W/System.err(25941): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
09-24 18:50:13.162 W/System.err(25941): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
09-24 18:50:13.162 W/System.err(25941): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:359)
09-24 18:50:13.162 W/System.err(25941): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
09-24 18:50:13.162 W/System.err(25941): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
09-24 18:50:13.162 W/System.err(25941): at org.odk.collect.android.utilities.WebUtils.getXmlDocument(WebUtils.java:216)
09-24 18:50:13.162 W/System.err(25941): at org.odk.collect.android.tasks.DownloadFormListTask.doInBackground(DownloadFormListTask.java:82)
09-24 18:50:13.162 W/System.err(25941): at org.odk.collect.android.tasks.DownloadFormListTask.doInBackground(DownloadFormListTask.java:1)
09-24 18:50:13.162 W/System.err(25941): at android.os.AsyncTask$2.call(AsyncTask.java:185)
09-24 18:50:13.162 W/System.err(25941): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
09-24 18:50:13.162 W/System.err(25941): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
09-24 18:50:13.172 W/System.err(25941): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
09-24 18:50:13.172 W/System.err(25941): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
09-24 18:50:13.172 W/System.err(25941): at java.lang.Thread.run(Thread.java:1027)
09-24 18:50:13.192 W/dalvikvm(25941): threadid=12: thread exiting with uncaught exception
(group=0x4001d5a0)
09-24 18:50:13.213 D/dalvikvm(25941): GC_CONCURRENT freed 418K, 50% free 3067K/6023K,
external 0K/0K, paused 1ms+1ms
09-24 18:50:13.213 E/AndroidRuntime(25941): FATAL EXCEPTION: AsyncTask opendatakit/opendatakit#4
09-24 18:50:13.213 E/AndroidRuntime(25941): java.lang.RuntimeException: An error occured
while executing doInBackground()
09-24 18:50:13.213 E/AndroidRuntime(25941): at android.os.AsyncTask$3.done(AsyncTask.java:200)
09-24 18:50:13.213 E/AndroidRuntime(25941): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
09-24 18:50:13.213 E/AndroidRuntime(25941): at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
09-24 18:50:13.213 E/AndroidRuntime(25941): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
09-24 18:50:13.213 E/AndroidRuntime(25941): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
09-24 18:50:13.213 E/AndroidRuntime(25941): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
09-24 18:50:13.213 E/AndroidRuntime(25941): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
09-24 18:50:13.213 E/AndroidRuntime(25941): at java.lang.Thread.run(Thread.java:1027)
09-24 18:50:13.213 E/AndroidRuntime(25941): Caused by: java.lang.NullPointerException
09-24 18:50:13.213 E/AndroidRuntime(25941): at org.odk.collect.android.utilities.WebUtils.getXmlDocument(WebUtils.java:327)
09-24 18:50:13.213 E/AndroidRuntime(25941): at org.odk.collect.android.tasks.DownloadFormListTask.doInBackground(DownloadFormListTask.java:82)
09-24 18:50:13.213 E/AndroidRuntime(25941): at org.odk.collect.android.tasks.DownloadFormListTask.doInBackground(DownloadFormListTask.java:1)
09-24 18:50:13.213 E/AndroidRuntime(25941): at android.os.AsyncTask$2.call(AsyncTask.java:185)
09-24 18:50:13.213 E/AndroidRuntime(25941): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
09-24 18:50:13.213 E/AndroidRuntime(25941): ... 4 more
09-24 18:50:13.213 W/ActivityManager( 1487):   Force finishing activity org.odk.collect.android/.activities.FormDownloadList

Reported by matteosistisette on 2011-09-24 17:02:19

Possibility to increment (auto-number) features

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:22 GMT
Originally opened as getodk/getodk#384 (1 comment(s))


Originally reported on Google Code with ID 383

It would be great if it was possible to introduce incremental numbering in ODK Collect;
for instance when adding a new household item that the correct number 1,2,3, will automatically
be assigned.

Ideally, this would even work across filled data instances for the same form (as to
keep your household numbers consistent when doing a survey and starting with a new
household altogether where each enumerator gets a batch of numbers beforehand) but
I am not sure if that is technically possible at all.

Many thanks for looking into this!

Reported by sudhoff on 2011-10-20 08:50:55

Randomize questions and selects

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:39 GMT
Originally opened as getodk/getodk#510 (4 comment(s))


Originally reported on Google Code with ID 509

Randomising layout or structure of a questionnaire to minimise bias is a standard best
practice. It would be great to therefore have support for random().

Reported by jaideep.gupte on 2012-02-03 17:05:13

allow save as on the front page

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:30 GMT
Originally opened as getodk/getodk#435 (4 comment(s))


Originally reported on Google Code with ID 434

Relatedly, I noticed that there's a text box at the end of the survey to set the "name"
of the form, which is useful in identifying it for submission or later continuation.

I was wondering whether it might be possible to fill this in at the beginning of the
survey instead of at the end? Or to base it on a value in the instance data, selected
by the form designer (such as the household ID in our case), at least as a default
value?

-- chris

Reported by yanokwa on 2011-11-17 16:23:33

Count widget

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:38 GMT
Originally opened as getodk/getodk#503 (3 comment(s))


Originally reported on Google Code with ID 502

Add an integer widget with plus/minus sign

"I need to count cars, buses, trucks for lets say 15 minutes... all in
one "group" so it will show in one page only."
--  [email protected]

Reported by yanokwa on 2012-01-19 23:40:06

group section text is too small

Issue by mitchellsundt
Wednesday Jul 08, 2015 at 22:40 GMT
Originally opened as getodk/getodk#41 (3 comment(s))


Originally reported on Google Code with ID 40

For <group> sections, the group label is shown as a header above the question labels.
The font 
used for the group header is pretty small, so users tend to overlook it and get confused.

Reported by yanokwa on 2010-04-29 22:24:28

ODK Collect v1.1.7-RC1 - Send Finished Forms -- show number of forms not yet sent

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:09 GMT
Originally opened as getodk/getodk#295 (4 comment(s))


Originally reported on Google Code with ID 294

Hi, I've installed ODK Collect v1.1.7-RC1 and successfully uploaded data to Aggregate
V1.0 beta rev 3.

However I've noticed that after I've collected data the main menu shows
  * Start New Form
  * Continue Saved Form
  * Send Finished Forms
  * Manage Forms

as I would expect - but the earlier verson of Collect (v1.1.5) would also indicate
that there was outstanding form data to upload (against 'Send Finished Forms').

This is a useful reminder that there is data available to upload.

What version of the product are you using? On what operating system?
 - HTC Wildfire
 - Android 2.2.1
 - UK


Reported by kirby.james on 2011-08-08 18:13:01

Slider for numeric input

Issue by mitchellsundt
Thursday Jul 09, 2015 at 17:27 GMT
Originally opened as getodk/getodk#137 (1 comment(s))


Originally reported on Google Code with ID 136

For numeric input, offer a slider appearance. Min and max would be determined from constraint?

Reported by mitchellsundt on 2010-10-11 17:34:01

add timezone support

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:05 GMT
Originally opened as getodk/getodk#273 (7 comment(s))


Originally reported on Google Code with ID 272

in collect's time/date widgets, change the code to stop writing our custom strings,
but instead writing a iso8601 string. yyyy-mm-ddTHH:MM:SSZ±hh:mm seems reasonable.
to support partial datetime (in case someone wants just a date as a default value and
for backwards compatibility), might be worth it to look at http://joda-time.sourceforge.net/index.html
to do the parsing.

i have no idea how datetime is done in aggregate, so i'll leave that to mitch. the
problem i see there is that aggregate exports to different systems so lots of bad things
might happen... 

Reported by yanokwa on 2011-07-27 06:56:22

Allow install to SD card

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:49 GMT
Originally opened as getodk/getodk#570 (12 comment(s))


Originally reported on Google Code with ID 569

It doesn't seem like a problem to allow the application to be installed to a SD card,
please allow by adding installLocation to the manifest:

http://developer.android.com/guide/topics/manifest/manifest-element.html#install

Reported by mdekker78 on 2012-05-03 09:26:50

add new repeats functionality

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:22 GMT
Originally opened as getodk/getodk#385 (1 comment(s))


Originally reported on Google Code with ID 384

javarosa has better support for repeats. it's in the core, but we need to build a ui
around it in collect for our next release.

Reported by yanokwa on 2011-10-21 20:12:25

date widget fail when using non-english languages

Issue by mitchellsundt
Thursday Jul 09, 2015 at 18:33 GMT
Originally opened as getodk/getodk#471 (3 comment(s))


Originally reported on Google Code with ID 470

"I am using the DateWidget and its working fine if I am using the
langauge English but facing problem when I am using other than English
as device langauge .
For other langauge its throwing error like

java.text.ParseException: Unparseable date: "Fri Dec 30 00:00:00 GMT
+05:30 2011" (at offset 0)
                                     at
java.text.DateFormat.parse(DateFormat.java:626)"
- Mahesh

http://code.google.com/p/opendatakit/issues/entry

Reported by yanokwa on 2011-12-12 01:30:26

Automatically download the latest set of forms

Issue by mitchellsundt
Thursday Jul 09, 2015 at 17:36 GMT
Originally opened as getodk/getodk#178 (6 comment(s))


Originally reported on Google Code with ID 177

It would be helpful if ODK Collect could automatically download the available set of
forms on a regular basis. This would keep the local cache of forms up to date, and
would also make sense for enumerators who had less than ideal data connections.

What version of the product are you using? On what operating system?

1.1.4 on Android 1.5 and 1.6

Reported by [email protected] on 2011-01-21 10:19:55

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.