Android не удалось записать широту и долготу EXIF ​​GPS в формат JPEG

Я хотел бы добавить данные GPS, такие как долгота и широта, в фотографию в формате jpeg. Фотография сделана путем вкладки карты (NFC )В logcat могут отображаться правильные значения, но эти значения не могут быть записаны в файл фотографии jpg!

Ниже мой код :Он используется для получения сохраненных файлов jpg и вызова метода ниже. Этот метод используется для добавления параметров EXIF ​​GPS в файл jpg. Параметры GPS, такие как долгота и широта, уже взяты в другом действии.

Я использую EXIF ​​Viewer в Firefox, чтобы увидеть результат.

Имеет ли значение положение исключения ввода-вывода?

Ниже приведен важный журнал журнала cat, который может привести к сбою :. 07 -26 11 :48 :30,386 :D/NativeNfcTag (195 ):Тег потерян, перезапуск цикла опроса

 public static void writeFile (File photo, double latitude, double longitude) throws IOException{


    ExifInterface exif = null;

    try{
        Log.v("latiDouble", ""+latitude);
        Log.v("longiDouble", ""+longitude);
        exif = new ExifInterface(photo.getCanonicalPath());
        if (exif != null) {
        double latitu = latitude;
        double longitu = longitude;
        double alat = Math.abs(latitu);
        double along = Math.abs(longitu);
        String stringLati = convertDoubleIntoDegree(alat);
        String stringLongi = convertDoubleIntoDegree(along);
        exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, stringLati);            
        exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, stringLongi);
        Log.v("latiString", ""+ stringLati);
        Log.v("longiString", ""+ stringLongi);
        exif.saveAttributes();
        String lati = exif.getAttribute (ExifInterface.TAG_GPS_LATITUDE);  
         String longi = exif.getAttribute (ExifInterface.TAG_GPS_LONGITUDE);  
         Log.v("latiResult", ""+ lati);
         Log.v("longiResult", ""+ longi);

        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();

    }

}

Ниже приведена позиция для вызова метода...

    Cursor locationCursor = dbHandler.fetchGpsLocationTypeByAttendInfoID(attendInfoId);
      if (locationCursor.getCount()>0) {
        double latitude = dbHandler.fetchDoubleItem(locationCursor,"LATITUDE");
        double longitude = dbHandler.fetchDoubleItem(locationCursor,"LONGITUDE");


            Log.v("latitude",""+latitude);
            Log.v("latitude",""+longitude);     

            try {
                GpsUtils.writeFile(photoFile, latitude, longitude);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

    }
    dbHandler.close();

    cameraHandler.startPreview();
9
задан Benjamin Toueg 30 September 2013 в 10:25
поделиться