📆
Android10からMediaStore#DATE_TAKENがnull になる事がある
事象
Android Q から、Exifがない画像は、MediaStore.MediaColumns.DATE_TAKEN
(撮影日)がnullになってしまうようです。以前はExifがない場合は追加日 or 変更日が設定されていたようです。
IssueTracker: [Android Q Beta] Media Store insert DATE_TAKEN is always null
<b>Status: Won't Fix (Intended Behavior)</b>
DATE_TAKENは「メディアアイテムが撮影された時間」であると文書化されており、そのAPI記述を実現するために、"DateTimeOriginal" Exifメタデータフィールド、または.DATE_TAKENに基づいてこれを入力します。 スキャンされるファイルにこのメタデータがない場合、ファイルが撮影された時間を正確に判断できないため、誤解を招くようなデータを避けるためにDATE_TAKENはNULLに設定されます。
MediaStoreから写真/動画を取得し、DATE_TAKEN
をソートのキーや、ユーザに伝わる写真の日付に使っているアプリは、対応が必要です。言いたいことはわかるけど...辛み...
対応
後述の課題が許容/無関係できるのであれば、DATE_TAKEN
がnullの場合、DATE_ADDED
、DATE_MODIFIED
ヘフォールバックするのが良さそう。
課題
-
DATE_TAKEN
がミリ秒(milliSeconds)で、DATE_ADDED
、DATE_MODIFIED
は秒(seconds) -
DATE_TAKEN
とDATE_ADDED
、DATE_MODIFIED
は当然だが桁を揃えても数秒違う
Discussion