ODK Collect v1.4, ODK Briefcase, ODK Validate now available for download

The changes to ODK Collect have been pushed to Google Play.

*Beginning with Android 4.3, users of encrypted forms should test that
encryption is active on their device (this can be tested by filling in and
submitting a form to ODK Aggregate or attempting to decrypt and export a
submission via ODK Briefcase. If either step fails, the device may be
marking the form as finalized but not encrypting it. *This behavior is a
fail-safe fallback to ensure that no data is lost should a future Android
operating system update cause the known partial fix to issue
918http://code.google.com/p/opendatakit/issues/detail?id=918to no
longer work.

ODK Collect highlights:

  • partial fix issue
    918http://code.google.com/p/opendatakit/issues/detail?id=918- If
    Android 4.3 and higher devices include the Bouncy Castle encryption
    provider, then encrypted forms will be saved and encrypted. If the
    Bouncy Castle provider is not available, then the forms will be saved
    without encryption.
    This addresses encryption failures on Android 4.3.
    It is unclear if Bouncy Castle will always be present on Android 4.3
    systems (on the tested systems, it is present) or if it will ever become
    unavailable in the future. Without this fix, data corruption will occur
    on Android 4.3 and higher systems.
    Fix accomplished with significant
    assistance by CTOSurvey.
  • fix silent failures when encrypted forms do not specify a server URL.
  • new 'placement-map' appearance for geopoint widget. This presents a
    map display where you can drag the geolocation marker on the map, and
    save the new hand-placed geolocation back into the form
    (contributed by
    Guillaume Salmon). Available only on Android 2.2 and higher devices.
  • On 3.x and 4.x, render using the newer 3.x and 4.x user interface
    standard. Legacy 2.x devices should continue to work as before. Key changes
    are to the menu (the icons are no longer shown) and while filling out a
    form, the save and hierarchy menu items are reachable via the icons on the
    'action bar' at the top of the app.
  • update icons to conform to pixel dimensions of their respective dpi
    classes. This shrinks some icons for some displays, and enlarges others
    for other displays.
    Add xhdpi icons.
  • supply 'largeHeap' attribute to enable ODK Collect to run with a
    larger heap (including stack) on some devices (dependent upon hardware
    manufacturer). Can enable more complex regex() functions.
  • indexed-repeat(repeatedfield, repeatgroup, index): References a field
    or group that is inside a prior repeat group.* *The first parameter
    specifies the prior field or group in which you are interested; the second
    specifies the prior repeat group within which thefield or group of interest
    is located; and the third specifies the instance number, within the prior
    repeat group, to use. For example, the calculate expression
    "indexed-repeat(${name}, ${names}, 1)" will return the first name
    available when the "name" field is inside a prior repeat group named
    "names". From inside a later repeat group, the calculate expression
    "indexed-repeat(${name}, ${names}, position(..))" will pull the xth name
    from the prior repeat group, where x is the instance number of the current
    repeat group (e.g., if currently in the fourth instance of a repeat group,
    it will return the fourth name from the earlier repeat group). See the
    multiple-repeat sample form for a simple example. If you need to reference
    a field or group within multiple nested repeat groups, you can supply
    additional parameters to indicate the instance numbers to use for each
    level of nesting. For example, the calculate expression
    "indexed-repeat(${name}, ${families}, ${familynumber}, ${names},
    ${membernumber})" will pull a particular family member's name when family
    member names are inside a repeat group that is itself inside a repeat group
    of families. See the second multiple-repeat sample form for a much more
    complex example that includes three levels of nested repeat groups.
    (contributed by CTO Survey)
  • new functions to support date-time arithmetic (using a number of new
    functions, you can gain access to the time-of-day and perform calculations
    on it).
  • pow(a,b) -- raise a to the power b. Contributed by Nafundi.
  • property('propertyName') -- return that property value (rather than
    needing to create a field containing that property and then reference the
    field).
  • ensure that uuid(), now(), today() and random() compute new values at
    each use within a form (previously, if you had two calculate expressions of
    'uuid()', they would both return the same UUID (or instant of time, or
    random number).

Additional information at:

https://code.google.com/p/opendatakit/wiki/CollectReleaseNotes

ODK Briefcase highlights:

Beginning with 1.4, ODK Briefcase attempts to recover corrupted encrypted
XML files ( issue
918http://code.google.com/p/opendatakit/issues/detail?id=918). ODK
Briefcase is not able to recover corrupted media attachments.
Encrypted files can be corrupted when running on Android 4.3 systems and
using ODK Collect 1.2.x or 1.3.x. The corruption is due to the failure of
the Android 4.3 device to emit the final 1 -to- 15 bytes (characters) of
the file.

If the XML file corruption cannot be automatically corrected, you can
manually access the corrupted files by creating a 'debug' directory
underneath the ODK Briefcase Storage location. If that directory exists,
the corrupted XML files will be written to submission-nnnnn.xml files in
that directory.

This recovery feature is contributed by CTOSurvey.

Additional information at:

http://code.google.com/p/opendatakit/wiki/ODKBriefcase

ODK Validate highlights:

Improved reporting of the locations of various form definition errors;
fewer crashes and/or erroneous warnings when running on well-formed forms.
Contributed by CTOSurvey.

··· -- Mitch Sundt Software Engineer University of Washington mitchellsundt@gmail.com

I just pushed a rev 1038 update to ODK Collect 1.4 (and updated our
Downloads page) -- the only change is to the French translations.

A missing apostrophe in the translation was causing a crash on the 'Send
Finalized Forms' screen.

··· On Tue, Oct 1, 2013 at 3:16 PM, Mitch Sundt wrote:

The changes to ODK Collect have been pushed to Google Play.

*Beginning with Android 4.3, users of encrypted forms should test that
encryption is active on their device (this can be tested by filling in
and submitting a form to ODK Aggregate or attempting to decrypt and export
a submission via ODK Briefcase. If either step fails, the device may be
marking the form as finalized but not encrypting it. *This behavior is a
fail-safe fallback to ensure that no data is lost should a future Android
operating system update cause the known partial fix to issue 918http://code.google.com/p/opendatakit/issues/detail?id=918to no longer work.

ODK Collect highlights:

  • partial fix issue 918http://code.google.com/p/opendatakit/issues/detail?id=918- If Android 4.3 and higher devices include the Bouncy Castle encryption
    provider, then encrypted forms will be saved and encrypted. If the
    Bouncy Castle provider is not available, then the forms will be saved
    without encryption.
    This addresses encryption failures on Android
    4.3. It is unclear if Bouncy Castle will always be present on Android 4.3
    systems (on the tested systems, it is present) or if it will ever become
    unavailable in the future. Without this fix, data corruption will
    occur on Android 4.3 and higher systems.
    Fix accomplished with
    significant assistance by CTOSurvey.
  • fix silent failures when encrypted forms do not specify a server
    URL.
  • new 'placement-map' appearance for geopoint widget. This presents a
    map display where you can drag the geolocation marker on the map, and
    save the new hand-placed geolocation back into the form
    (contributed
    by Guillaume Salmon). Available only on Android 2.2 and higher devices.
  • On 3.x and 4.x, render using the newer 3.x and 4.x user interface
    standard. Legacy 2.x devices should continue to work as before. Key changes
    are to the menu (the icons are no longer shown) and while filling out a
    form, the save and hierarchy menu items are reachable via the icons on the
    'action bar' at the top of the app.
  • update icons to conform to pixel dimensions of their respective dpi
    classes. This shrinks some icons for some displays, and enlarges
    others for other displays.
    Add xhdpi icons.
  • supply 'largeHeap' attribute to enable ODK Collect to run with a
    larger heap (including stack) on some devices (dependent upon hardware
    manufacturer). Can enable more complex regex() functions.
  • indexed-repeat(repeatedfield, repeatgroup, index): References a
    field or group that is inside a prior repeat group.* *The first
    parameter specifies the prior field or group in which you are interested;
    the second specifies the prior repeat group within which thefield or group
    of interest is located; and the third specifies the instance number, within
    the prior repeat group, to use. For example, the calculate expression
    "indexed-repeat(${name}, ${names}, 1)" will return the first name
    available when the "name" field is inside a prior repeat group named
    "names". From inside a later repeat group, the calculate expression
    "indexed-repeat(${name}, ${names}, position(..))" will pull the xth name
    from the prior repeat group, where x is the instance number of the current
    repeat group (e.g., if currently in the fourth instance of a repeat group,
    it will return the fourth name from the earlier repeat group). See the
    multiple-repeat sample form for a simple example. If you need to reference
    a field or group within multiple nested repeat groups, you can supply
    additional parameters to indicate the instance numbers to use for each
    level of nesting. For example, the calculate expression
    "indexed-repeat(${name}, ${families}, ${familynumber}, ${names},
    ${membernumber})" will pull a particular family member's name when family
    member names are inside a repeat group that is itself inside a repeat group
    of families. See the second multiple-repeat sample form for a much more
    complex example that includes three levels of nested repeat groups.
    (contributed by CTO Survey)
  • new functions to support date-time arithmetic (using a number of new
    functions, you can gain access to the time-of-day and perform calculations
    on it).
  • pow(a,b) -- raise a to the power b. Contributed by Nafundi.
  • property('propertyName') -- return that property value (rather than
    needing to create a field containing that property and then reference the
    field).
  • ensure that uuid(), now(), today() and random() compute new values
    at each use within a form (previously, if you had two calculate expressions
    of 'uuid()', they would both return the same UUID (or instant of time, or
    random number).

Additional information at:

https://code.google.com/p/opendatakit/wiki/CollectReleaseNotes

ODK Briefcase highlights:

Beginning with 1.4, ODK Briefcase attempts to recover corrupted encrypted
XML files ( issue 918http://code.google.com/p/opendatakit/issues/detail?id=918). ODK Briefcase is not able to recover corrupted media attachments.
Encrypted files can be corrupted when running on Android 4.3 systems and
using ODK Collect 1.2.x or 1.3.x. The corruption is due to the failure of
the Android 4.3 device to emit the final 1 -to- 15 bytes (characters) of
the file.

If the XML file corruption cannot be automatically corrected, you can
manually access the corrupted files by creating a 'debug' directory
underneath the ODK Briefcase Storage location. If that directory exists,
the corrupted XML files will be written to submission-nnnnn.xml files in
that directory.

This recovery feature is contributed by CTOSurvey.

Additional information at:

http://code.google.com/p/opendatakit/wiki/ODKBriefcase

ODK Validate highlights:

Improved reporting of the locations of various form definition errors;
fewer crashes and/or erroneous warnings when running on well-formed forms.
Contributed by CTOSurvey.

Mitch Sundt
Software Engineer
University of Washington
mitchellsundt@gmail.com

--
Mitch Sundt
Software Engineer
University of Washington
mitchellsundt@gmail.com

Thanks for these changes!

To improve ODK collect even more, can someone who is much better at coding than I please add

  1. The ability to use tables with multiple choice answers for each question in the table
    ex: Yesterday I ate:
    Breakfast Lunch Dinner
    - carbs - carbs - carbs
    - dairy - dairy - dairy
    - veggies - veggies - veggies

  2. The ability to show more than one question on a page

Also, the timestamp of my surveys is always off and I can't figure out if the tablet I'm using or ODK collect is the problem. I've had had trouble with the timestamp when using ODK on a Android phone.
Any thoughts?

Thanks!

··· On Tuesday, October 1, 2013 3:16:27 PM UTC-7, Mitch Sundt wrote: > The changes to ODK Collect have been pushed to Google Play. > > > Beginning with Android 4.3, users of encrypted forms should test that encryption is active on their device (this can be tested by filling in and submitting a form to ODK Aggregate or attempting to decrypt and export a submission via ODK Briefcase. If either step fails, the device may be marking the form as finalized but not encrypting it. This behavior is a fail-safe fallback to ensure that no data is lost should a future Android operating system update cause the known partial fix to issue 918 > to no longer work. > > ODK Collect highlights: > > partial fix issue 918 > - If Android 4.3 and higher devices include the Bouncy Castle > encryption provider, then encrypted forms will be saved and encrypted. If the Bouncy Castle provider is not available, then the forms will be saved without encryption. > This addresses encryption failures on Android 4.3. It is unclear if > Bouncy Castle will always be present on Android 4.3 systems (on the > tested systems, it is present) or if it will ever become unavailable in > the future. Without this fix, data corruption will occur on Android 4.3 and higher systems. Fix accomplished with significant assistance by CTOSurvey. fix silent failures when encrypted forms do not specify a server URL. > new 'placement-map' appearance for geopoint widget. This presents a map display where you can drag the geolocation marker on the map, and save the new hand-placed geolocation back into the form (contributed by Guillaume Salmon). Available only on Android 2.2 and higher devices. > > > On 3.x and 4.x, render using the > newer 3.x and 4.x user interface standard. Legacy 2.x devices should > continue to work as before. Key changes are to the menu (the icons are > no longer shown) and while filling out a form, the save and hierarchy > menu items are reachable via the icons on the 'action bar' at the top of > the app.update icons to conform to pixel dimensions of their respective dpi classes. This shrinks some icons for some displays, and enlarges others for other displays. Add xhdpi icons. > > supply 'largeHeap' attribute to enable ODK Collect to run with a larger > heap (including stack) on some devices (dependent upon hardware > manufacturer). Can enable more complex regex() functions. > indexed-repeat(repeatedfield, repeatgroup, index): References a field or group that is inside a prior repeat group. The > first parameter specifies the prior field or group in which you are > interested; the second specifies the prior repeat group within which > thefield or group of interest is located; and the third specifies the > instance number, within the prior repeat group, to use. For example, the > calculate expression "indexed-repeat(${name}, ${names}, 1)" will return > the first name available when the "name" field > is inside a prior repeat group named "names". From inside a later repeat > group, the calculate expression "indexed-repeat(${name}, ${names}, > position(..))" will pull the xth name from the prior repeat group, where > x is the instance number of the current repeat group (e.g., if > currently in the fourth instance of a repeat group, it will return the > fourth name from the earlier repeat group). See the multiple-repeat > sample form for a simple example. If you need to reference a field or > group within multiple nested repeat groups, you can supply additional > parameters to indicate the instance numbers to use for each level of > nesting. For example, the calculate expression "indexed-repeat(${name}, > ${families}, ${familynumber}, ${names}, ${membernumber})" will pull a > particular family member's name when family member names are inside a > repeat group that is itself inside a repeat group of families. See the > second multiple-repeat sample form for a much more complex example that > includes three levels of nested repeat groups. (contributed by CTO > Survey)new functions to support date-time > arithmetic (using a number of new functions, you can gain access to the > time-of-day and perform calculations on it).pow(a,b) -- raise a to the power b. Contributed by Nafundi. > property('propertyName') -- return that property value (rather than needing to create a field containing that property and then reference the field). > > ensure that uuid(), now(), > today() and random() compute new values at each use within a form > (previously, if you had two calculate expressions of 'uuid()', they > would both return the same UUID (or instant of time, or random number).Additional information at: > > https://code.google.com/p/opendatakit/wiki/CollectReleaseNotes > > > ODK Briefcase highlights: > > Beginning with 1.4, ODK Briefcase attempts to recover corrupted > encrypted XML files ( issue 918 > ). ODK Briefcase is not able to recover corrupted media > attachments. Encrypted files can be corrupted when running on Android > 4.3 systems and using ODK Collect 1.2.x or 1.3.x. The corruption is due > to the failure of the Android 4.3 device to emit the final 1 -to- 15 > bytes (characters) of the file. > If the XML file corruption cannot > be automatically corrected, you can manually access the corrupted files > by creating a 'debug' directory underneath the ODK Briefcase Storage > location. If that directory exists, the corrupted XML files will be > written to submission-nnnnn.xml files in that directory. > This recovery feature is contributed by CTOSurvey. > > Additional information at: > > http://code.google.com/p/opendatakit/wiki/ODKBriefcase > > ODK Validate highlights: > Improved reporting of the locations of various form definition errors; fewer crashes and/or erroneous warnings when running on well-formed forms. Contributed by CTOSurvey. > > -- > > Mitch Sundt > Software Engineer > University of Washington > mitche...@gmail.com

Will this change also be deployed to Play store? ETA? Thanks!

··· ---------- Forwarded message ---------- From: Mitch Sundt Date: 3 October 2013 14:54 Subject: [ODK Developers] Re: ODK Collect v1.4, ODK Briefcase, ODK Validate now available for download To: ODK Community , opendatakit-developers@googlegroups.com

I just pushed a rev 1038 update to ODK Collect 1.4 (and updated our
Downloads page) -- the only change is to the French translations.

A missing apostrophe in the translation was causing a crash on the 'Send
Finalized Forms' screen.

On Tue, Oct 1, 2013 at 3:16 PM, Mitch Sundt mitchellsundt@gmail.com wrote:

The changes to ODK Collect have been pushed to Google Play.

*Beginning with Android 4.3, users of encrypted forms should test that
encryption is active on their device (this can be tested by filling in
and submitting a form to ODK Aggregate or attempting to decrypt and export
a submission via ODK Briefcase. If either step fails, the device may be
marking the form as finalized but not encrypting it. *This behavior is a
fail-safe fallback to ensure that no data is lost should a future Android
operating system update cause the known partial fix to issue 918http://code.google.com/p/opendatakit/issues/detail?id=918to no longer work.

ODK Collect highlights:

  • partial fix issue 918http://code.google.com/p/opendatakit/issues/detail?id=918- If Android 4.3 and higher devices include the Bouncy Castle encryption
    provider, then encrypted forms will be saved and encrypted. If the
    Bouncy Castle provider is not available, then the forms will be saved
    without encryption.
    This addresses encryption failures on Android
    4.3. It is unclear if Bouncy Castle will always be present on Android 4.3
    systems (on the tested systems, it is present) or if it will ever become
    unavailable in the future. Without this fix, data corruption will
    occur on Android 4.3 and higher systems.
    Fix accomplished with
    significant assistance by CTOSurvey.
  • fix silent failures when encrypted forms do not specify a server
    URL.
  • new 'placement-map' appearance for geopoint widget. This presents a
    map display where you can drag the geolocation marker on the map, and
    save the new hand-placed geolocation back into the form
    (contributed
    by Guillaume Salmon). Available only on Android 2.2 and higher devices.
  • On 3.x and 4.x, render using the newer 3.x and 4.x user interface
    standard. Legacy 2.x devices should continue to work as before. Key changes
    are to the menu (the icons are no longer shown) and while filling out a
    form, the save and hierarchy menu items are reachable via the icons on the
    'action bar' at the top of the app.
  • update icons to conform to pixel dimensions of their respective dpi
    classes. This shrinks some icons for some displays, and enlarges
    others for other displays.
    Add xhdpi icons.
  • supply 'largeHeap' attribute to enable ODK Collect to run with a
    larger heap (including stack) on some devices (dependent upon hardware
    manufacturer). Can enable more complex regex() functions.
  • indexed-repeat(repeatedfield, repeatgroup, index): References a
    field or group that is inside a prior repeat group.* *The first
    parameter specifies the prior field or group in which you are interested;
    the second specifies the prior repeat group within which thefield or group
    of interest is located; and the third specifies the instance number, within
    the prior repeat group, to use. For example, the calculate expression
    "indexed-repeat(${name}, ${names}, 1)" will return the first name
    available when the "name" field is inside a prior repeat group named
    "names". From inside a later repeat group, the calculate expression
    "indexed-repeat(${name}, ${names}, position(..))" will pull the xth name
    from the prior repeat group, where x is the instance number of the current
    repeat group (e.g., if currently in the fourth instance of a repeat group,
    it will return the fourth name from the earlier repeat group). See the
    multiple-repeat sample form for a simple example. If you need to reference
    a field or group within multiple nested repeat groups, you can supply
    additional parameters to indicate the instance numbers to use for each
    level of nesting. For example, the calculate expression
    "indexed-repeat(${name}, ${families}, ${familynumber}, ${names},
    ${membernumber})" will pull a particular family member's name when family
    member names are inside a repeat group that is itself inside a repeat group
    of families. See the second multiple-repeat sample form for a much more
    complex example that includes three levels of nested repeat groups.
    (contributed by CTO Survey)
  • new functions to support date-time arithmetic (using a number of new
    functions, you can gain access to the time-of-day and perform calculations
    on it).
  • pow(a,b) -- raise a to the power b. Contributed by Nafundi.
  • property('propertyName') -- return that property value (rather than
    needing to create a field containing that property and then reference the
    field).
  • ensure that uuid(), now(), today() and random() compute new values
    at each use within a form (previously, if you had two calculate expressions
    of 'uuid()', they would both return the same UUID (or instant of time, or
    random number).

Additional information at:

https://code.google.com/p/opendatakit/wiki/CollectReleaseNotes

ODK Briefcase highlights:

Beginning with 1.4, ODK Briefcase attempts to recover corrupted encrypted
XML files ( issue 918http://code.google.com/p/opendatakit/issues/detail?id=918). ODK Briefcase is not able to recover corrupted media attachments.
Encrypted files can be corrupted when running on Android 4.3 systems and
using ODK Collect 1.2.x or 1.3.x. The corruption is due to the failure of
the Android 4.3 device to emit the final 1 -to- 15 bytes (characters) of
the file.

If the XML file corruption cannot be automatically corrected, you can
manually access the corrupted files by creating a 'debug' directory
underneath the ODK Briefcase Storage location. If that directory exists,
the corrupted XML files will be written to submission-nnnnn.xml files in
that directory.

This recovery feature is contributed by CTOSurvey.

Additional information at:

http://code.google.com/p/opendatakit/wiki/ODKBriefcase

ODK Validate highlights:

Improved reporting of the locations of various form definition errors;
fewer crashes and/or erroneous warnings when running on well-formed forms.
Contributed by CTOSurvey.

Mitch Sundt
Software Engineer
University of Washington
mitchellsundt@gmail.com

--
Mitch Sundt
Software Engineer
University of Washington
mitchellsundt@gmail.com

--
You received this message because you are subscribed to the Google Groups
"ODK Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to opendatakit-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
Tom Smyth
Worker-Owner, Sassafras Tech Collective
Specializing in innovative, usable tech for social change

Can you be more specific about your timestamp problems?
The time will be in UTC (GMT) when displayed on ODK Aggregate.

Otherwise:

*Both of these features are already available.

··· * --------------------------------- The tabular view, however, is pivoted, so it becomes:

-------------- | carbs | dairy | veggies
breakfast:
lunch:
dinner:

See the http://opendatakit.org/help/form-design/examples/#select_promptssection,
and scroll to the 'select Multi list' format at the bottom of that
section.


Multiple questions per screen is available by grouping questions with a
'field-list' appearance.

For the XLSForm example file available here:
http://opendatakit.org/use/xlsform/ , see the multi-question screen at row
16 of that form.

On Fri, Oct 4, 2013 at 11:42 PM, Kwong kwong.laura@gmail.com wrote:

Thanks for these changes!

To improve ODK collect even more, can someone who is much better at coding
than I please add

  1. The ability to use tables with multiple choice answers for each
    question in the table
    ex: Yesterday I ate:
    Breakfast Lunch Dinner
    - carbs - carbs - carbs
    - dairy - dairy - dairy
    - veggies - veggies - veggies

  2. The ability to show more than one question on a page

Also, the timestamp of my surveys is always off and I can't figure out if
the tablet I'm using or ODK collect is the problem. I've had had trouble
with the timestamp when using ODK on a Android phone.
Any thoughts?

Thanks!

On Tuesday, October 1, 2013 3:16:27 PM UTC-7, Mitch Sundt wrote:

The changes to ODK Collect have been pushed to Google Play.

Beginning with Android 4.3, users of encrypted forms should test that
encryption is active on their device (this can be tested by filling in and
submitting a form to ODK Aggregate or attempting to decrypt and export a
submission via ODK Briefcase. If either step fails, the device may be
marking the form as finalized but not encrypting it. This behavior is a
fail-safe fallback to ensure that no data is lost should a future Android
operating system update cause the known partial fix to issue 918
to no longer work.

ODK Collect highlights:

partial fix issue 918

  • If Android 4.3 and higher devices include the Bouncy Castle
    encryption provider, then encrypted forms will be saved and encrypted.
    If the Bouncy Castle provider is not available, then the forms will be
    saved without encryption.
    This addresses encryption failures on Android 4.3. It is unclear if
    Bouncy Castle will always be present on Android 4.3 systems (on the
    tested systems, it is present) or if it will ever become unavailable in
    the future. Without this fix, data corruption will occur on Android 4.3
    and higher systems. Fix accomplished with significant assistance by
    CTOSurvey. fix silent failures when encrypted forms do not specify a server
    URL.
    new 'placement-map' appearance for geopoint widget. This presents a map
    display where you can drag the geolocation marker on the map, and save the
    new hand-placed geolocation back into the form (contributed by Guillaume
    Salmon). Available only on Android 2.2 and higher devices.

On 3.x and 4.x, render using the
newer 3.x and 4.x user interface standard. Legacy 2.x devices should
continue to work as before. Key changes are to the menu (the icons are
no longer shown) and while filling out a form, the save and hierarchy
menu items are reachable via the icons on the 'action bar' at the top of
the app.update icons to conform to pixel dimensions of their respective
dpi classes. This shrinks some icons for some displays, and enlarges others
for other displays. Add xhdpi icons.

supply 'largeHeap' attribute to enable ODK Collect to run with a larger
heap (including stack) on some devices (dependent upon hardware
manufacturer). Can enable more complex regex() functions.
indexed-repeat(repeatedfield, repeatgroup, index): References a field or
group that is inside a prior repeat group. The
first parameter specifies the prior field or group in which you are
interested; the second specifies the prior repeat group within which
thefield or group of interest is located; and the third specifies the
instance number, within the prior repeat group, to use. For example, the
calculate expression "indexed-repeat(${name}, ${names}, 1)" will return
the first name available when the "name" field
is inside a prior repeat group named "names". From inside a later repeat
group, the calculate expression "indexed-repeat(${name}, ${names},
position(..))" will pull the xth name from the prior repeat group, where
x is the instance number of the current repeat group (e.g., if
currently in the fourth instance of a repeat group, it will return the
fourth name from the earlier repeat group). See the multiple-repeat
sample form for a simple example. If you need to reference a field or
group within multiple nested repeat groups, you can supply additional
parameters to indicate the instance numbers to use for each level of
nesting. For example, the calculate expression "indexed-repeat(${name},
${families}, ${familynumber}, ${names}, ${membernumber})" will pull a
particular family member's name when family member names are inside a
repeat group that is itself inside a repeat group of families. See the
second multiple-repeat sample form for a much more complex example that
includes three levels of nested repeat groups. (contributed by CTO
Survey)new functions to support date-time
arithmetic (using a number of new functions, you can gain access to the
time-of-day and perform calculations on it).pow(a,b) -- raise a to the
power b. Contributed by Nafundi.
property('propertyName') -- return that property value (rather than
needing to create a field containing that property and then reference the
field).

ensure that uuid(), now(),
today() and random() compute new values at each use within a form
(previously, if you had two calculate expressions of 'uuid()', they
would both return the same UUID (or instant of time, or random
number).Additional information at:

https://code.google.com/p/opendatakit/wiki/CollectReleaseNotes

ODK Briefcase highlights:

Beginning with 1.4, ODK Briefcase attempts to recover corrupted
encrypted XML files ( issue 918
). ODK Briefcase is not able to recover corrupted media
attachments. Encrypted files can be corrupted when running on Android
4.3 systems and using ODK Collect 1.2.x or 1.3.x. The corruption is due
to the failure of the Android 4.3 device to emit the final 1 -to- 15
bytes (characters) of the file.
If the XML file corruption cannot
be automatically corrected, you can manually access the corrupted files
by creating a 'debug' directory underneath the ODK Briefcase Storage
location. If that directory exists, the corrupted XML files will be
written to submission-nnnnn.xml files in that directory.
This recovery feature is contributed by CTOSurvey.

Additional information at:

http://code.google.com/p/opendatakit/wiki/ODKBriefcase

ODK Validate highlights:
Improved reporting of the locations of various form definition errors;
fewer crashes and/or erroneous warnings when running on well-formed forms.
Contributed by CTOSurvey.

--

Mitch Sundt
Software Engineer
University of Washington
mitche...@gmail.com

--
You received this message because you are subscribed to the Google Groups
"ODK Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to opendatakit-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
Mitch Sundt
Software Engineer
University of Washington
mitchellsundt@gmail.com

Yes, it is already pushed to Google Play, but it takes a while to push
through their infrastructure.

··· On Thu, Oct 3, 2013 at 11:56 AM, Thomas Smyth wrote:

Will this change also be deployed to Play store? ETA? Thanks!

---------- Forwarded message ----------
From: Mitch Sundt mitchellsundt@gmail.com
Date: 3 October 2013 14:54
Subject: [ODK Developers] Re: ODK Collect v1.4, ODK Briefcase, ODK
Validate now available for download
To: ODK Community opendatakit@googlegroups.com,
opendatakit-developers@googlegroups.com

I just pushed a rev 1038 update to ODK Collect 1.4 (and updated our
Downloads page) -- the only change is to the French translations.

A missing apostrophe in the translation was causing a crash on the 'Send
Finalized Forms' screen.

On Tue, Oct 1, 2013 at 3:16 PM, Mitch Sundt mitchellsundt@gmail.comwrote:

The changes to ODK Collect have been pushed to Google Play.

*Beginning with Android 4.3, users of encrypted forms should test that
encryption is active on their device (this can be tested by filling in
and submitting a form to ODK Aggregate or attempting to decrypt and export
a submission via ODK Briefcase. If either step fails, the device may be
marking the form as finalized but not encrypting it. *This behavior is
a fail-safe fallback to ensure that no data is lost should a future Android
operating system update cause the known partial fix to issue 918http://code.google.com/p/opendatakit/issues/detail?id=918to no longer work.

ODK Collect highlights:

  • partial fix issue 918http://code.google.com/p/opendatakit/issues/detail?id=918- If Android 4.3 and higher devices include the Bouncy Castle encryption
    provider, then encrypted forms will be saved and encrypted. If the
    Bouncy Castle provider is not available, then the forms will be saved
    without encryption.
    This addresses encryption failures on Android
    4.3. It is unclear if Bouncy Castle will always be present on Android 4.3
    systems (on the tested systems, it is present) or if it will ever become
    unavailable in the future. Without this fix, data corruption will
    occur on Android 4.3 and higher systems.
    Fix accomplished with
    significant assistance by CTOSurvey.
  • fix silent failures when encrypted forms do not specify a server
    URL.
  • new 'placement-map' appearance for geopoint widget. This presents a
    map display where you can drag the geolocation marker on the map,
    and save the new hand-placed geolocation back into the form
    (contributed by Guillaume Salmon).
    Available only on Android 2.2 and higher devices.
  • On 3.x and 4.x, render using the newer 3.x and 4.x user interface
    standard. Legacy 2.x devices should continue to work as before. Key changes
    are to the menu (the icons are no longer shown) and while filling out a
    form, the save and hierarchy menu items are reachable via the icons on the
    'action bar' at the top of the app.
  • update icons to conform to pixel dimensions of their respective dpi
    classes. This shrinks some icons for some displays, and enlarges
    others for other displays.
    Add xhdpi icons.
  • supply 'largeHeap' attribute to enable ODK Collect to run with a
    larger heap (including stack) on some devices (dependent upon hardware
    manufacturer). Can enable more complex regex() functions.
  • indexed-repeat(repeatedfield, repeatgroup, index): References a
    field or group that is inside a prior repeat group.* *The first
    parameter specifies the prior field or group in which you are interested;
    the second specifies the prior repeat group within which thefield or group
    of interest is located; and the third specifies the instance number, within
    the prior repeat group, to use. For example, the calculate expression
    "indexed-repeat(${name}, ${names}, 1)" will return the first name
    available when the "name" field is inside a prior repeat group named
    "names". From inside a later repeat group, the calculate expression
    "indexed-repeat(${name}, ${names}, position(..))" will pull the xth name
    from the prior repeat group, where x is the instance number of the current
    repeat group (e.g., if currently in the fourth instance of a repeat group,
    it will return the fourth name from the earlier repeat group). See the
    multiple-repeat sample form for a simple example. If you need to reference
    a field or group within multiple nested repeat groups, you can supply
    additional parameters to indicate the instance numbers to use for each
    level of nesting. For example, the calculate expression
    "indexed-repeat(${name}, ${families}, ${familynumber}, ${names},
    ${membernumber})" will pull a particular family member's name when family
    member names are inside a repeat group that is itself inside a repeat group
    of families. See the second multiple-repeat sample form for a much more
    complex example that includes three levels of nested repeat groups.
    (contributed by CTO Survey)
  • new functions to support date-time arithmetic (using a number of
    new functions, you can gain access to the time-of-day and perform
    calculations on it).
  • pow(a,b) -- raise a to the power b. Contributed by Nafundi.
  • property('propertyName') -- return that property value (rather than
    needing to create a field containing that property and then reference the
    field).
  • ensure that uuid(), now(), today() and random() compute new values
    at each use within a form (previously, if you had two calculate expressions
    of 'uuid()', they would both return the same UUID (or instant of time, or
    random number).

Additional information at:

https://code.google.com/p/opendatakit/wiki/CollectReleaseNotes

ODK Briefcase highlights:

Beginning with 1.4, ODK Briefcase attempts to recover corrupted encrypted
XML files ( issue 918http://code.google.com/p/opendatakit/issues/detail?id=918). ODK Briefcase is not able to recover corrupted media attachments.
Encrypted files can be corrupted when running on Android 4.3 systems and
using ODK Collect 1.2.x or 1.3.x. The corruption is due to the failure of
the Android 4.3 device to emit the final 1 -to- 15 bytes (characters) of
the file.

If the XML file corruption cannot be automatically corrected, you can
manually access the corrupted files by creating a 'debug' directory
underneath the ODK Briefcase Storage location. If that directory exists,
the corrupted XML files will be written to submission-nnnnn.xml files in
that directory.

This recovery feature is contributed by CTOSurvey.

Additional information at:

http://code.google.com/p/opendatakit/wiki/ODKBriefcase

ODK Validate highlights:

Improved reporting of the locations of various form definition errors;
fewer crashes and/or erroneous warnings when running on well-formed forms.
Contributed by CTOSurvey.

Mitch Sundt
Software Engineer
University of Washington
mitchellsundt@gmail.com

--
Mitch Sundt
Software Engineer
University of Washington
mitchellsundt@gmail.com

--
You received this message because you are subscribed to the Google Groups
"ODK Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to opendatakit-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
Tom Smyth
Worker-Owner, Sassafras Tech Collective
Specializing in innovative, usable tech for social change
sassafrastech.com

--
You received this message because you are subscribed to the Google Groups
"ODK Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to opendatakit-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
Mitch Sundt
Software Engineer
University of Washington
mitchellsundt@gmail.com