Android10でMediaStore#DATE_TAKENがnull になる
Android Q から、Exifがない画像は、MediaStore.MediaColumns.DATE_TAKEN
(撮影日)がnullになってしまうようです。以前はExifがない場合は追加日 or 変更日が設定されていたようです。
事象
https://issuetracker.google.com/issues/140250785
Status: Won't Fix (Intended Behavior)
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
は当然だが桁を揃えても数秒違う