東京在住のSIerです。趣味でもITに関することをいろいろとやっていますので、ノウハウなどの備忘録を掲載していきたいと思います。画像のExif属性に位置情報や撮影日時を保存する方法TweetAndroidアプリで撮影した写真(画像ファイル)に位置情報や撮影日時を付与しようとしたときにいろいろ苦戦したのでそのときのメモです。画像ファイルのExif属性に位置情報や撮影日時を書き込む方法とフォーマットについて説明しようと思います。Exifを書き込む際の基本的な流れ基本的にはAndroidのExifInterfaceというクラスを使うと簡単に書き込むことができます。保存するex.saveAttributes();Exifに書き込む情報はフォーマットが規格化されているじゃあ何に苦戦したかというと、Exifに書き込む内容はフォーマットが規格化されており、そのフォーマットに合わせる必要があるということです。GPSの緯度だったら「35/1,37/1,5538936/100000」のような度分秒(DMS)フォーマットで保存する必要があります。現在はExifのバージョン2.31が最新ですが、下記サイトにフォーマット規格が詳しく書いてあります。http://www.jeita.or.jp/cgi-bin/standard/list.cgi?cateid=1&subcateid=4位置情報をExifに書き込む具体的なサンプル位置情報(緯度、経度)をExifに書き込むには下記のように4つのタグを書き込みます。Androidで取得できる位置情報は「139.1234566」のような形式なのでこれを下記のような度分秒の文字列に変換する必要があります。//経度の符号(東系か西系か)フォーマットを変換する関数も作ってみましたので参考までに掲載します。Locationを変換して返す。HH:mm:ss」になります。日付関係のタグはいくつかあるためそれぞれについて少し補足します。TAG_DATETIME・・・ファイル変更日時TAG_DATETIME_DIGITIZED・・・画像がデジタルデータ化された日時(API24以上)TAG_DATETIME_ORIGINAL・・・現画像データ生成日時(API24以上)TAG_GPS_DATESTAMP・・・UTCに基づく日付情報。撮影日時は「TAG_DATETIME_ORIGINAL」にあたるかと思いますが、APIレベル24以上でないとサポートされていないので注意が必要です(書き込めるが不明なタグとして認識されてしまう)。APIレベル23以下もサポートする場合は「TAG_DATETIME」を使うのが無難かもしれません。コメントをキャンセルメールアドレスが公開されることはありません。