(Not sure if this is a support 'help me' or an ideas 'wouldn't it be nice if we could' post, leaning support as it's not really a Collect function)
I've been dithering around how to more easily get distance measurements and also reduce keying errors (@Dalerhoda) and was wondering if someone else has gone further down this path already and identified the dead ends or workable solutions.
I have two use cases currently
On a new/existing photo, or a preexisting drawing, add a measurement annotation(s) and populate its/their label(s) with the measurement(s), ideally directly with the value from a laser rangefinder / distance measurer (LDM) and not by keying in, then in the form use 'choose image' to select this image and use in the ODK form, already annotated (also works around existing annotation resolution limitations if resolution > device resolution is required).
In a form where a distance / area / volume values are required, the decimal widget could be manually keyed in with the value after measuring on LDM, but ideally the form launches an external app and that returns the value to the widget.
Identified manual method
There are plenty of LDMs that can measure direct length/area/volume as well as indirect (pythagorean method) height, these can easily be used to measure the item of interest then key in the value.
Many of these also have BTLE to be controlled by an app and transmit those values to the app to use in annotation and some are able to then be selected via Choose Image/File.
Existing connected devices & apps
I have tested a Bosch LDM and their own app (MeasureON) which will allow you to drop an annotation arrow with measurement to a plan/photo pulled directly from the LDM or recent values, however the image/PDF when exported can only be 'shared' to certain apps, or (for now) dredged up using the Files app that can reach into the Android FS after sharing. There's no way to export and save or make the exports visible to the device.
The Leica Disto app will also allow you to annotate a plan/photo with values retrieved over BTLE, and these exported images are available on device (and thus in a 'choose image' widget). This solves the creation of an annotated image/plan to then 'choose image' or 'choose file'.
There are also some non brand affiliated apps that work with many brands of LDM eg ImageMeter, that provide similar functionality and aren't tied to any specific brand, however they are paid apps if you don't want watermarked exports.
Ideal solution
I'm not currently aware of any apps that can be used with the external intent (or if it could be used with the above apps), and my dream would be one that can be called to return an image (annotated JPG) / a file (annotated PDF) / a measurement (decimal) or series of values into a field list (length/width/height/units of measure etc).
Existing work?
@Florian_May did you ever do anything with this? @seewhy you use a Leica LDM? @mathieubossaert do you use LDMs for tree height etc? Does anyone else have experience in this area or also have a need to do this?
We are working on making it possible to specify which application to use to capture an image. If any of those applications respond to the ACTION_IMAGE_CAPTURE intent, they could be used to get an image back. I don't know how likely that is, but it might be worth looking into.
If there's an app you like that's almost there, I think it's worth contacting the developers, even if it's a big company like Bosch. It may be very little effort for them to enable this whole new interaction that they'd be happy to support (e.g. by exporting to the Downloads directory, by responding to ACTION_IMAGE_CAPTURE, by implementing the ODK-specific spec for returning values).
I have actually reached out to Bosch to even make the image available to the device / gallery, they 'are considering it'
I have a Leica on the way and once I've tested both some more with their and 3rd party apps I'll see if any of the developers are willing to implement the intents.
Both Bosch and Leica appear to use the device own default camera app, as it behaves similarly to take picture in Collect.
Sadly there was no bandwidth available to tinker with the rangefinder. Would have been useful for animal spotting (Western Ringtail Possum sitting in trees, getting a height above ground and absolute coordinates from observer coordinates, rangefinder point on animal, rangefinder point at ground level below animal).
A related wish list item is a PIT tag scanner, which would be useful both for turtle monitoring and @Stuart's donkey sanctuary.
From testing Bosch (GML100-25C) & Leica (Disto D2) (not Dewalt or Stabila or others) with their own apps and ImageMeter, a few notes for others
Using non direct length functions (area, volume, indirect height), the Leica transmits each component but only displays the calculated result/units on device along with the components, vs the Bosch displays the components and result but transmits the calculated result/units - this complicates app intent if doing more than a single distance capture.
"indoor" units don't have a bright enough laser to see outdoors in daylight, but if the unit has a camera with reticule you can place it on the target and be sure you have the correct position.
I'll get some field testing with these soon to gather simple distance measurements to be keyed in, but leave the rest on the back burner.
I have various use cases that I've thought about that could also use RFID type scanning! Nothing pressing though.
We've looked at the PetScanner scanners because they're offering cabled (= reliable) and affordable enough units but found that the scanner isn't powerful enough to detect a PIT tag in a turtle neck. The applicator needle is about 5 cm long and the tag can wander. Our approximation is to scan a tag with your forearm covering it.
So on the scanner front we're still looking for a scanner that's cheap, powerful and has a well documented API.