반응형
|
안드로이드(Android) 이미지에서의 Exif GPS 정보를 GeoPoint 바꾸기 |
|
개발환경 : window 7 64bit, Eclipse Mars, Android 4.2.2 |
|
이번예제는 파일브라우저에서 이미지를 선택한후 Exif 정보를 팝업창으로 보여주는 샘플에서 Gps 정보를 GeoPoint 로 변경하는 예제 입니다. |
private Float convertToDegree(String stringDMS) {
Float result = null;
String[] DMS = stringDMS.split(",", 3);
String[] stringD = DMS[0].split("/", 2);
Double D0 = new Double(stringD[0]);
Double D1 = new Double(stringD[1]);
Double FloatD = D0 / D1;
String[] stringM = DMS[1].split("/", 2);
Double M0 = new Double(stringM[0]);
Double M1 = new Double(stringM[1]);
Double FloatM = M0 / M1;
String[] stringS = DMS[2].split("/", 2);
Double S0 = new Double(stringS[0]);
Double S1 = new Double(stringS[1]);
Double FloatS = S0 / S1;
result = new Float(FloatD + (FloatM / 60) + (FloatS / 3600));
return result;
};
위도 경도를 리턴하는 함수를 만들었으며
사용자가 아래 함수를 호출해서 사용하면 됩니다.
public Float getLatitude() {
return latitude;
}
public Float getLongitude() {
return longitude;
}
아래는 GeoPoint 로 변경하는 GeoDegree 클래스의
전체 소스입니다.
public class GeoDegree {
private boolean valid = false;
private Float latitude, longitude;
public GeoDegree(ExifInterface exif) {
String attrLATITUDE = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE);
String attrLATITUDE_REF = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE_REF);
String attrLONGITUDE = exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE);
String attrLONGITUDE_REF = exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF);
if ((attrLATITUDE != null) && (attrLATITUDE_REF != null) && (attrLONGITUDE != null)
&& (attrLONGITUDE_REF != null)) {
valid = true;
if (attrLATITUDE_REF.equals("N")) {
latitude = convertToDegree(attrLATITUDE);
} else {
latitude = 0 - convertToDegree(attrLATITUDE);
}
if (attrLONGITUDE_REF.equals("E")) {
longitude = convertToDegree(attrLONGITUDE);
} else {
longitude = 0 - convertToDegree(attrLONGITUDE);
}
}
};
private Float convertToDegree(String stringDMS) {
Float result = null;
String[] DMS = stringDMS.split(",", 3);
String[] stringD = DMS[0].split("/", 2);
Double D0 = new Double(stringD[0]);
Double D1 = new Double(stringD[1]);
Double FloatD = D0 / D1;
String[] stringM = DMS[1].split("/", 2);
Double M0 = new Double(stringM[0]);
Double M1 = new Double(stringM[1]);
Double FloatM = M0 / M1;
String[] stringS = DMS[2].split("/", 2);
Double S0 = new Double(stringS[0]);
Double S1 = new Double(stringS[1]);
Double FloatS = S0 / S1;
result = new Float(FloatD + (FloatM / 60) + (FloatS / 3600));
return result;
};
public boolean isValid() {
return valid;
}
@Override
public String toString() {
return (String.valueOf(latitude) + ", " + String.valueOf(longitude));
}
public Float getLatitude() {
return latitude;
}
public Float getLongitude() {
return longitude;
}
public int getLatitudeE6() {
return (int) (latitude * 1000000);
}
public int getLongitudeE6() {
return (int) (longitude * 1000000);
}
}
이것을 사용하기 위해서 사용한 소스입니다.
메인에서 호출하여 TextView 에 셋팅합니다.
GeoDegree geoDegree = new GeoDegree(exif); geoPoint = (TextView) dlg.findViewById(R.id.dlgGeoPoint); geoPoint.setText(geoDegree.toString());
반응형
'안드로이드 개발' 카테고리의 다른 글
| 안드로이드(Android) Java 코드에서 색깔값 화면에 입히기 (0) | 2014.11.20 |
|---|---|
| 안드로이드(Android) 색깔을 xml 로 정의 하고 관리하기 (0) | 2014.11.19 |
| 안드로이드(Android) PhoneGap, 이클립스 플러그인 설치로 좀더 쉽게 개발하기 (0) | 2014.11.18 |
| 안드로이드(Android) 간단한 RatingBar 사용예제 (0) | 2014.11.18 |
| 안드로이드(Android) 문의 – Dialog 클래스를 이용하여 다이얼로그 계산기 올리기 (0) | 2014.11.16 |
| 안드로이드(Android) 이미지뷰에서 Exif 정보 다이얼로그 띄우기 (1) | 2014.11.15 |
| 안드로이드(Android) showDialog(int) deprecated 다시 구현하기 (0) | 2014.11.14 |
| 안드로이드(Android) 파일 브라우저에서 이미지 보여주기 (1) | 2014.11.13 |
