From 2392956079d4cf97958956976a5bbcbe17f692db Mon Sep 17 00:00:00 2001 From: lodev09 Date: Tue, 17 Feb 2026 08:59:13 +0800 Subject: [PATCH] fix(android): use rational format for GPS double tags on write ExifInterface expects GPS rational values in numerator/denominator format. Writing plain decimal strings caused GPS doubles like GPSDOP, GPSImgDirection, GPSSpeed, etc. to silently fail to persist. --- android/src/main/java/com/lodev09/exify/ExifyModule.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/lodev09/exify/ExifyModule.kt b/android/src/main/java/com/lodev09/exify/ExifyModule.kt index b0d5f71..1171124 100644 --- a/android/src/main/java/com/lodev09/exify/ExifyModule.kt +++ b/android/src/main/java/com/lodev09/exify/ExifyModule.kt @@ -133,7 +133,14 @@ class ExifyModule( ReadableType.Number -> { when (valType) { - "double" -> exif.setAttribute(tag, tags.getDouble(tag).toBigDecimal().toPlainString()) + "double" -> { + val value = tags.getDouble(tag) + if (tag.startsWith("GPS")) { + exif.setAttribute(tag, ExifyUtils.decimalToRational(value)) + } else { + exif.setAttribute(tag, value.toBigDecimal().toPlainString()) + } + } else -> exif.setAttribute(tag, tags.getDouble(tag).toInt().toString()) } }