ExifInterface.getLatLong() всегда возвращает false на Android 13Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 ExifInterface.getLatLong() всегда возвращает false на Android 13

Сообщение Anonymous »

В моем приложении для Android есть метод, который извлекает местоположение (долготу и широту) из фотографии с помощью ExifInterface. Код отлично работает на Android 10, но не работает на Android 13. Вот метод:

Код: Выделить всё

private fun getLocationAndMoveOn() {
if (hasMediaLocationPermission(requireContext())) {
val pickedPhotoData = libraryViewModel.viewState.pickedPhoto.value?.DATA ?: return
if (hasSdkHigherThan(Build.VERSION_CODES.P)) {
val uri = Uri.parse("file://$pickedPhotoData")
activity?.contentResolver?.openInputStream(uri)?.use { stream ->
ExifInterface(stream).run {
val latLong = FloatArray(2)
if (getLatLong(latLong)) {
val location = Location("").apply {
latitude = latLong[0].toDouble()
longitude = latLong[1].toDouble()
}
navigateToLocation(location)
} else {
showPhotoLocationDataDialog()
}
}
}
} else {
val location = GeoDataUtils.geoDegree(ExifInterface(pickedPhotoData))
navigateToLocation(location)
}
} else {
requestMediaLocationPermission(requireActivity(), REQUEST_PERMISSION_MEDIA_ACCESS)
}
}
Что делает код:

Код: Выделить всё

•   It takes a file address (pickedPhotoData) and, using ExifInterface, gets the location where the photo was taken.
Проблема:

Код: Выделить всё

•   This code works fine on Android 10.
•   On Android 13, getLatLong(latLong) always returns false, indicating that the location data cannot be retrieved from the photo’s EXIF metadata.
Что я пробовал:

Код: Выделить всё

•   Checked permissions to ensure the app has the necessary permissions to access the photo.
•   Verified that the photo contains location metadata.
•   Looked into alternative libraries but haven’t found a suitable solution yet.
Мой вопрос:

Код: Выделить всё

•   How can I reliably get the location (longitude and latitude) from a photo on Android 13?
•   Are there any modern libraries or methods to handle this that work across different Android versions?
Дополнительная информация:

Код: Выделить всё

•   I’ve ensured the app has the necessary permissions to read media files.
•   The photo does contain location metadata when checked on other devices and software.
Будем очень признательны за любую помощь или подсказки!

Подробнее здесь: https://stackoverflow.com/questions/786 ... android-13
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»