Hi, iam new in Odk, How can i get geotagged photos using odk?
The problem is, i have created a form and have got a field to get photos, i get the photos but when i copy the photos from the instances folder to PC if i import in QGIS for exemple using teh geotagged photos module it does says the photoes are not geotagged.
So I would assume that this tri-state location permissions feature do not allowed curtain (camera) applications to get location information (while they are being used in the background). I am not quite sure whether this assumption is correct. !!????!??
Do we have any other "work-around" for this one ? BTW, even ODK latest version(v28) has this issue,
I have try "capturing images" via 2 different apps (default Android Camera App and Open Camera) in the same form and the result:
only those images captured by Open Camera App have geo-tagged information in them
while those captured by Stock Camera does not.
As I understand it's the result when you used those apps via ODK Collect, right? If so is the result different if you use those apps directly?
Correct !!! Those apps are running "in the background" (with ODK Collect in the foreground off-course).
If I use them directly (say, open each app in the foreground and capture image from each of them then), the captured images (from both) do contain geo-tagged information (visible in Gallery Apps).
What would you suggest ? or do you need any further information ?.
I have been trying to get into ODK Collect source code (default image widget) without any luck.
This might be camera-app-specific as far as Android 10 location permissions concern. If this is the case, there seems to have no "work-around" then.
I'm not sure what you mean by foreground/background. My question was about the result when you start those camera apps directly clicking their icons from your devices's screen vs starting them from Collect using the Image widget for example. Could you clarify?
It would be out of question requesting clients to download/install apps onto their devices ;(
I understand but if the app that doesn't work well is a default camera app on your device it doesn't necessarily mean that your clients have the same camera apps right? Or maybe you have control over it and you can confirm what apps they use? I'm not sure if it's a bug on our side or not I need to investigate it but assuming it's not our bug it's difficult to control all those various default camera apps.
No, With what has been said in previous comments, I dont think it's a bug at ODK Collect but rather an issue with tristate location permission feature introduced since Android 10.
I would love to know if anyone has similar issue (and could confirm my assumption above) and how people "work-around" from that one.
Hi, I confirm there's an issue with Android 10/Tristate when an app like ODK Collect is using the camera app to take picture by invoking an intent as described in Take a photo with a camera app
The issue is that when the camera app does not have the "Allow all the time" permission granted for Location, it will not store the location tag with the image, whatever permission is given to the application invoking the intent.
So the problem is also there for any camera app in Android 10, if the user choose "Allow only if the app is in use" for the camera app.
We've tested this with ODK Collect and other apps invoking the MediaStore.ACTION_IMAGE_CAPTURE intent.
It's not a Collect bug, but it can impact all the Collect users who are making use of the Location tag in images taken with Collect for Android version 10 and above.
If there is an interest from the community, my team could contribute a new option in Collect app settings to let users add Location data to photos taken with Collect, independently of the camera app.
Looking forward to get some feedback from users and developers on that.
Hi everyone! @Grzesiek2010, I was able to reproduce the described problem.
When I take a photo from the default Camera app and I look at the details in the Photos app, I see location.
When I take a photo in Collect and I look at the details in the Photos app, I don't see location.
I also attached photo to Collect, which was created by default Camera app with location. When I checked this photo in Photo app, location wasn't available.
Additionally, it's not a problem only on Android 10. I was also able to reproduce this issue on Android 7 and 8.1.
We just experienced the same issue.
The Camera app properly records the location when opened directly. When accessed through ODK Collect, no location stored.