Следующий метод нарисует на фото текущую дату и время в нижнем правом углу:
public static Bitmap signBitmap(Bitmap background) {
background = background.copy(Bitmap.Config.ARGB_8888, true);
Paint paint = new Paint();
paint.setColor(Color.YELLOW);
paint.setTextSize(18f);
Date date = new Date();
String dateString = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss", Locale.getDefault()).format(date);
Canvas canvas = new Canvas(background);
canvas.drawText(dateString, background.getWidth() - 180, background.getHeight() - 40, paint);
return background;
}
Следующий метод добавляет метаданные к фото:
public static void writeExifToFile(File photo, double latitude, double longitude, String address, String version) {
try {
ExifInterface exif = new ExifInterface(photo.getCanonicalPath());
String stringLati = String.valueOf(latitude);
String stringLongi = String.valueOf(longitude);
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, stringLati);
exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, stringLongi);
exif.setAttribute(ExifInterface.TAG_GPS_AREA_INFORMATION, address);
exif.setAttribute(ExifInterface.TAG_EXIF_VERSION, version);
exif.saveAttributes();
} catch (IOException e) {
e.printStackTrace();
}
}
Для того чтобы сохраненная информация отображалась не только на устройствах Android но и в свойствах файла при сохранении в Windows необходимо использовать не стандартный для системы Android класс ExifInterface, а добавить зависимость в файл gradle:
implementation 'androidx.exifinterface:exifinterface:1.3.1'