2011年2月17日木曜日

Android Exif GPS

どういう形式なのか、さっぱりわからなかったが、以下のようで良いようだ。

  public static String latlong2GeoFormat (double latlong) {
    // doubleからintへ変換
    Double _latlong = latlong;
    int num1 = _latlong.intValue();
    double num2d = ((_latlong - (double)num1) * 60);
    int num2 = (int)num2d;
    double num3d = ((num2d - (double)num2) * 60 * 100000);
    int num3 = (int)num3d;
    // フォーマット num1/denom1,num2/denom2,num3,denom3
    return String.format("%d/1,%d/1,%d/100000", num1, num2, num3);
  }

  public static void embedExif(String fileName, Location loc) {
    ExifInterface exif = new ExifInterface(fileName);
    exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, latlong2GeoFormat(loc.getLatitude()));
    exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF, "N");
    exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, latlong2GeoFormat(loc.getLongitude()));
    exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF, "E");
    exif.saveAttributes();
  }

参考:ExifInterface.TAG_GPS_LATITUDEには何を入れるのか?

0 件のコメント: