📆
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