Anyone seen http://opendatakit.org ?
Allows you to create xml forms, and fill them out on an android smart phone. The data can then be sent to any server. The project has software for building forms (web-based), filling them out (android app), and a sever for data collection.
Data can include photos, geo-locations, text, selects, email addresses, etc. The forms are pretty customisable, and it seems easy to make optional and repeatable components (eg. for a family survey, add as many "children" form components made up of other form components as you need).
Seems that this kind of data would be relatively easy to push into CCK, if you had it available. I'm wondering how hard it would be to create a ODK-CCK bridge, to allow node creation with appropriate fields, on receiving data from android... The ODK is modular, designed to allow switching out of different components (eg. the data server), so it might even be possible to just build a module that accepts the data and pumps it into a node, without even requiring the ODK server.
Food for thought.