Adding metadata in image when on the camera


We are trying to identify which photo belongs to which room. We thought of using the names which just keep incrementing the number, but the issue is when for example we have 10 photos n we delete 2 of them, the counter decrements as well which could introduce issues. We tried comparing the timestamps. Storing the timestamp locally in our ios app and then comparing it to the timestamp extracted from the photo exif data, but that has variable gaps too ranging from about 25 seconds to 2.5 minutes. We noticed an exif property named imagedescription which is always empty. Can we create a plugin to insert our custom data in that field?
also, the plugin github readme says run the project through android studio and it will install the plugin on the camera. Is it not possible to install the plugin using the apk directly if developer mode is enabled?
We are using ricoh theta z1.
Thank you!

You can install the plugin directly with adb if the Z1 is in developer mode. You do not need to use the store. However, this is only for small deployments as there is no central management and every camera will need to be in developer mode. In this scenario, you have to use adb install. You can’t just drag the apk onto the camera icon with a laptop. You may be able to write a script. I believe the developer mode may void the camera warranty. How many cameras are you thinking of deploying the plug-in to? Is it more than 10 cameras? I believe there may be a way to have an unpublished store, meaning the link to the store and plugin is not listed, but there is no password protection.

I do not have recent experience with the metadata from the plugin. You can search online. You may be able to use this library.

Once you write the metadata, you can read metadata with exiftool for testing. Actually, exiftool can write metadata as well.

You can apply to the free plug-in partner program here:

You will need to submit the serial number for every camera.

Online support is here:

RICOH THETA Plug-in Partner Program|RICOH

Thank you for your prompt response and suggestions @craig.
We are trying a sample plugin and see if it works well for you.
Thank you!

Additional information on plugin development is here.

1 Like

One other doubt i am starting to have now though is will the plugin be able to communicate with our ios application via api? The whole point is to pass some metadata with the image. The flow i had in mind was to pass data related to the room when triggering the image capture event. But i noticed that when the plugin is active, is drops the wifi connection. Without wifi, the custom app won’t be able to communicate with the plugin. Is there any permission required or any other way to keep wifi active while the plugin is active?

See this article

The WiFi is going off only when you use adb. it should run if you disconnect the USB cable. to enable wifi during debugging, see this:

adb shell settings put global usb_debug true

BTW, most people building applications that need the location of picture are taking the pictures on the camera with the webAPI and creating a separate data file on the mobile phone for each image. They then match the data file and the image in their cloud-based database.

If you need an image every second, you use the THETA X with CAMM metadata in the 8K 2fps video files.

I don’t know about your specific requirements, so maybe the plugin with metadata is the way to go for your application.

However, I did want to mention that most construction and real estate applications take pictures with the webAPI (not the plugin API) and then store the information about the image in a separate text file. Then, they load both the text file and the image up to the cloud database.

For construction sites where a worker walks around the site with a monopod, companies often use the 8K 2fps video and extract the frames into still images. They then match the frames witht he CaMM track.

If you pursue getting the IMU data from THETA X video files, then this topic may provide useful information.

For the Z1, the lowfps video is stored in different video files.

theta-api-specs/theta-web-api-v2.1/options/ at main · ricohapi/theta-api-specs · GitHub

Thanks a lot for your support @craig we were able to build a plugin for the Z1. For a start we used this plugin as a base,

We added a textbox and a submit button on their html page on the click of which it captures an image, takes the string from the textbox and inserts it in the image exif data. We are now adapting our ios app to not use the web api to trigger the image capture, instead use the endpoint from our plugin and send it a string which will take the photo as well as insert the string as imagedescription in the image exif. The ios app will also send this metadata along with this string to our server. Later when user uploads the images from their pc, we can extract exif data, match it with the records in our db and map it to the correct record accordingly.
Thank you

1 Like

Hi @craig we were able to insert the exif data by creating a custom api that takes a photo as well as inserts metadata into the image once it is ready. However, we are struggling to do the same with video files. We did try the same concept we used for taking photos, but in this case we are not getting a callback from the theta stop capture api. If we receive the callback from the stop capture api, we can acknowledge that the recording has stopped and the video file is ready to be updated. Any suggestions?
What we are trying to do is create a custom api that accepts a string parameter and it in turn calls the theta stop capture api. The stop capture api by default should return the detials or at least the name of the file once it is ready, but we are not getting that when calling the ricoh api from our custom api. Please help.