androidは、撮影した画像を即時にファイルに保存できないので、
(時間が経ってから・若しくは再起動で保存される)開発側でcontentValue
を用意してfileの場所を登録して書き込む必要があります。
androidで画像を保存するときはこのcontentValueに用意されている
putメソッドを使うことでandroidのギャラリーにすぐに使えるようになります。
このライブラリを使ってandroidのデータベースに問い合わせるのですが、
こちら側ではカラムとデータを設定するだけでsqlliteでやるような
sql操作は特に何もしないのでsqlをあまり触ったことのない方でも
簡単に書くことができるのでおすすめです。が、contentValueが
受け取るのは何も加工していないファイルになるので、当然このまま
保存しても期待した結果にならない時もあります。
例えば、bitmapをexifIntefaceを使ってactivityに表示したのに
contentValueで経由して保存した写真見ると横向きになっていたりします。
これは、exifInterfaceを経由して向きを回転させる前のファイルを
使用せず、生成したファイルオブジェクトをそのまま送っているためです。
一応bitmapをbitmap->uri->fileと分解して正しい向きに向かせられるのですが
これだとexif情報が全部抜けてしまい画像としては内容がなさすぎて
使い物になりません。
かくいう自分もこのギャラリー内の画像のexif処理にハマっていたのですが、
contentValueではputからorientationを操作できることを知ったので
こちらを使うことにしました。
カラムとデータに設定する方法は以下の通りです。
contentValues.put(MediaStore.Images.Media.ORIENTATION, 90); contentValues.put(MediaStore.Images.Media.LATITUDE, replaceLati); contentValues.put(MediaStore.Images.Media.LONGITUDE, replaceLong);
このように、カラムで修正したいexif情報をMediaStoreで書き込むことで
ファイルに保存される写真にデータを追加することができます。
これらの存在を今日の今日まで知らずに使っていたのが怖い・・・。