Introduction
Extended user attributes (Exif data) are metadata tags associated with files that provide additional information about the file. On Android, you can set Exif data on various file types, including images, videos, and audio files.
Using MediaStore
The Android MediaStore provides an efficient way to access and modify metadata associated with files.
Steps:
- Obtain a ContentResolver:
- Define the content URI for the file:
- Use the ContentResolver to update the metadata:
ContentResolver resolver = getContentResolver();
Uri fileUri = Uri.parse("content://media/external/images/media/1234");
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, "My New Image");
values.put(MediaStore.Images.Media.DESCRIPTION, "Description of the image");
resolver.update(fileUri, values, null, null);
Example Code
import android.content.ContentResolver;
import android.content.ContentValues;
import android.net.Uri;
import android.provider.MediaStore;
public class SetExifData {
public static void main(String[] args) {
ContentResolver resolver = getContentResolver();
Uri fileUri = Uri.parse("content://media/external/images/media/1234"); // Replace with the actual URI
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, "My New Image");
values.put(MediaStore.Images.Media.DESCRIPTION, "Description of the image");
resolver.update(fileUri, values, null, null);
}
}
Using Third-Party Libraries
If you need more control over specific Exif tags, consider using third-party libraries such as ExifInterface.
Example Code (ExifInterface)
import android.media.ExifInterface;
public class SetExifData {
public static void main(String[] args) {
String filePath = "/path/to/image.jpg"; // Replace with the actual file path
try (ExifInterface exifInterface = new ExifInterface(filePath)) {
exifInterface.setAttribute(ExifInterface.TAG_IMAGE_WIDTH, "1920");
exifInterface.setAttribute(ExifInterface.TAG_IMAGE_LENGTH, "1080");
exifInterface.saveAttributes();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Common Exif Tags
Tag Name | Description |
---|---|
TAG_IMAGE_WIDTH | Image width in pixels |
TAG_IMAGE_LENGTH | Image height in pixels |
TAG_MAKE | Camera manufacturer |
TAG_MODEL | Camera model |
TAG_DATETIME_ORIGINAL | Date and time of original image capture |
TAG_GPS_LATITUDE | Latitude of the image |
TAG_GPS_LONGITUDE | Longitude of the image |
Considerations
- Permissions: Ensure your app has the necessary permissions to access and modify file metadata (READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE).
- File Format: Not all file formats support Exif tags. Check the documentation for the specific file format.
- App Compatibility: Ensure that the app using the metadata is compatible with the specific Exif tags you are setting.