2012-11-27 42 views
3

我有一個應用程序,獲取使用LocationManager的用戶的位置,並嘗試將該數據寫入圖像的Exif數據。出於某種原因,該值永遠不會寫入,並且該位置保持爲空。這裏是我寫的Exif和轉換經緯度功能:無法寫入GPS位置exif

public void geoTag(String filename){ 
    ExifInterface exif; 

    try { 
     exif = new ExifInterface(filename); 
     int num1Lat = (int)Math.floor(latitude); 
     int num2Lat = (int)Math.floor((latitude - num1Lat) * 60); 
     double num3Lat = (latitude - ((double)num1Lat+((double)num2Lat/60))) * 3600000; 

     int num1Lon = (int)Math.floor(longitude); 
     int num2Lon = (int)Math.floor((longitude - num1Lon) * 60); 
     double num3Lon = (longitude - ((double)num1Lon+((double)num2Lon/60))) * 3600000; 

     exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, /*num1Lat+"/1,"+num2Lat+"/1,"+num3Lat+"/1000"*/); 
     exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, num1Lon+"/1,"+num2Lon+"/1,"+num3Lon+"/1000"); 


     if (latitude > 0) { 
      exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF, "N"); 
     } else { 
      exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF, "S"); 
     } 

     if (longitude > 0) { 
      exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF, "E");  
     } else { 
     exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF, "W"); 
     } 

     exif.saveAttributes(); 
    } catch (IOException e) { 
     Log.e("PictureActivity", e.getLocalizedMessage()); 
    } 

    } 

在我目前的位置的經度和緯度值約40.42和-81.92

任何幫助,將不勝感激

回答

0

你可以試試這個:

int num1Lat = (int)Math.floor(latitude); 
int num2Lat = (int)Math.floor((latitude - num1Lat) * 60); 
int num3Lat = (int)Math.floor((latitude - num1Lat - ((double)num2Lat)/60) * 3600); 

int num1Lon = (int)Math.floor(longitude); 
int num2Lon = (int)Math.floor((longitude - num1Lon) * 60); 
int num3Lon = (int)Math.floor((longitude - num1Lon - ((double)num2Lon)/60) * 3600); 

exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, num1Lat+"/1,"+num2Lat+"/1,"+num3Lat+"/1"); 
exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, num1Lon+"/1,"+num2Lon+"/1,"+num3Lon+"/1"); 

這段代碼適合我。例如,我的一個EXIF標籤(緯度)顯示「37/1,53/1,42/1」,相當於37.895度