カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

位置情報を写真に付加して保存する

この記事は最終更新日から1年以上経過しています。

前回のオートフォーカス撮影に位置情報を付加する機能を追加します。

implementsでLocationListenerを実装します。

HelloCameraActivity.java

public class HelloCameraActivity extends Activity implements LocationListener {

 private AutoFocusPreview mPreview;
 private LocationManager mLocationManager;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  requestWindowFeature(Window.FEATURE_NO_TITLE);

  mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

  mPreview = new AutoFocusPreview(this);
  setContentView(mPreview);
 }

 @Override
 protected void onResume() {
  if (mLocationManager != null) {
   mLocationManager.requestLocationUpdates(
    //LocationManager.GPS_PROVIDER, // 精度は高いが遅い(誤差15m程度)
    LocationManager.NETWORK_PROVIDER, // 精度は低いが速い(誤差100m程度)
       //LocationManager.PASSIVE_PROVIDER, //位置情報の修正を行わない特殊なプロバイダー(他アプリ等で測位された場合に、その位置情報を流用するらしい)
    0, //通知する時間の間隔をミリ秒で指定します
    0, //通知する距離の間隔をメートルで指定します
    this);
  }
  super.onResume();
 }

 @Override
 protected void onPause() {
  if (mLocationManager != null) {
   mLocationManager.removeUpdates(this);
  }
  super.onPause();
 }

 @Override
 public void onLocationChanged(Location location) {
  AutoFocusPreview.location = location;
 }

 @Override
 public void onProviderDisabled(String provider) {
 }

 @Override
 public void onProviderEnabled(String provider) {
 }

 @Override
 public void onStatusChanged(String provider, int status, Bundle extras) {
 }

CameraPreview.javaは省きます

前回のAutoFocusPreview.javaを変更します。

位置情報登録用のロケーションをstatic宣言

public static Location location;

ContentValuesに緯度経度の情報を追加する

ContentValues values = new ContentValues(7);
values.put(Images.Media.TITLE, name);
values.put(Images.Media.DISPLAY_NAME, filename);
values.put(Images.Media.DATE_TAKEN, dateTaken);
values.put(Images.Media.MIME_TYPE, "image/jpeg");
values.put(Images.Media.DATA, filePath);
values.put(Images.Media.LATITUDE, location.getLatitude());
values.put(Images.Media.LONGITUDE, location.getLongitude());
return cr.insert(IMAGE_URI, values);
この記事がお役に立ちましたらシェアお願いします
3,801 views

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です