@greenapps.... спасибо за ваше время. В основном у меня есть код, который извлекает позицию с карты и сохраняет SharedPref :
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="LatLng">11.812703;42.081890</string>
</map>
После этого у меня есть метод, который разделяет эту строку на долготу и широту:
public final void notifyMediaStoreScanner(final File file,Activity mainActivityCatched) {
double longituderetrieve;
double latituderetrieve;
try {
MediaStore.Images.Media.insertImage(mainActivityCatched.getContentResolver(),
file.getAbsolutePath(), file.getName(), null);
mainActivityCatched.sendBroadcast(new Intent(
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// SharedPref getPosition = new SharedPref(mainActivityCatched);
SharedPreferences getLatLng = mainActivityCatched.getSharedPreferences("settingModeLatLng",MODE_PRIVATE);
String LatLngShared = getLatLng.getString("LatLng","currentLatLng");
latituderetrieve = Double.parseDouble(LatLngShared.substring(0,LatLngShared.indexOf(";")));
longituderetrieve = Double.parseDouble(LatLngShared.substring(LatLngShared.indexOf(";")+1));
try {
geoTag(file.getAbsolutePath(),longituderetrieve,latituderetrieve);
} catch (IOException e) {
e.printStackTrace();
}
}
... наконец, я передаю все значения другому методу, чтобы установить позицию в данных exif. Мой исходный код был:
public void geoTag(String filename, double longi, double lati) throws IOException {
ExifInterface exif;
try {
exif = new ExifInterface(filename);
int num1Lat = (int)Math.floor(lat);
int num2Lat = (int)Math.floor((lat - num1Lat) * 60);
double num3Lat = (lat - ((double)num1Lat+((double)num2Lat/60))) * 3600000;
int num1Lon = (int)Math.floor(lng);
int num2Lon = (int)Math.floor((lng - num1Lon) * 60);
double num3Lon = (lng - ((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 (lat > 0) {
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF, "N");
} else {
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF, "S");
}
if (lng > 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());
}
Странная вещь с моим кодом в Android api26 работает... Любое предложение очень ценится! Алекс
person
Magobin
schedule
19.03.2018
num1Lat+"/1,"+num2Lat+"/1,"+num3Lat+"/1000")
Извините. Мы не знаем, что вы хотите установить. Укажите значение строки. Публикуйте воспроизводимый код. - person greenapps   schedule 18.03.2018