上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Android]カメラ連携で撮影した画像に位置情報を持たせる

スマホのカメラで撮影した写真に位置情報が付いていて、そのまま、SNSで投稿して自宅がバレてしまうなどといった問題が発生しているので、あまり、位置情報を使うのはよくないのですが、位置情報を利用することがあったので、以下は備忘録として記載。

カメラアプリと連携するための実装は以下。

■カメラ使用の権限を指定

AndroidManifestに以下を指定してカメラを使用できるようにする。





■カメラアプリ起動のコードは以下


File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
String filename = "test.jpg";
File capturedFile = new File(path, filename);
Uri uri = Uri.fromFile(capturedFile);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, 1);


MediaStore.ACTION_IMAGE_CAPTURE をIntent指定してStartするとカメラアプリが起動します。
MediaStore.EXTRA_OUTPUT で保存先を指定すると、撮影した画像の保存先が返ってきます。

保存先を指定しない場合は、バイナリデータを取得することができますが、
画像はかなり縮小されていて、位置情報などの撮影情報なども無いようです。



とりあえず、上記のコードでカメラを起動して、撮影して保存したファイルを確認したら、位置情報が入っていなかった。。。
結構解決までに時間がかかりましたが、AndroidManifestに位置情報のパーミッションを指定していなかったのが問題だったようだ。
端末設定の位置情報をONにするだけではダメだったみたい。。。
カメラアプリ単体だと位置情報とれてたのに連携する場合は、連携元のアプリにもパーミッションが必要なのね。

ということで、以下をAndroidManifestに追加した。





結果、無事位置情報付きの画像を取得(保存)できた。


Jpeg画像のGPS情報を見るのはMacだと標準のビューアで簡単に見ることができます。
画像をビューアで開いて、[ツール]-[インスペクタを表示]で表示されるウインドウのGPSタブに位置情報が表示されます。
(地図にピンが刺された表示もされるので、現在地が丸わかりで少しゾッとしました)



プロフィール

hiiro

Author:hiiro

最新記事
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
Counter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。