👨🏼‍💻 Telefon Hafızasındaki Fotoğrafları Gösterme ve Fotoğrafların Konum Bilgilerine Ulaşma

Mehmet Yozgatlı
Huawei Developers - Türkiye
2 min readMay 31, 2022
Fotoğrafların Lokasyonlarını Haritada Gösterme

Giriş

Herkese merhaba. Bu yazımda sizlere telefon hafızasındaki tüm görsellere nasıl ulaşacağınızı ve varsa bu görsellerin konum bilgilerini nasıl alacağınızı anlatacağım.

Bu konuyla ilgili detaylı bilgiyi aşağıdaki Android resmi belgesinden bulabilirsiniz:

https://developer.android.com/training/data-storage/shared/media

Implementasyon Süreci

  • Telefon hafızasındaki görsellere ulaşma

Öncelikle hafızadan görsellere erişmek istediğimiz için kullanıcıdan izin almamız gerekiyor.

Android Manifest dosyanıza aşağıdaki izni eklemeniz gerekir.

<uses-permission android:name=”android.permission.READ_EXTERNAL_STORAGE” />

Daha sonra bu izin için kullanıcıdan onay almanız gerekiyor. Aşağıdaki Android resmi belgesini kontrol edebilirsiniz:

Son olarak dikkat etmeniz gereken kısım ise “Build Version”. Gerekli yapılandırmalar için aşağıdaki Android resmi belgesini inceleyebilirsiniz.

https://developer.android.com/training/data-storage/use-cases#opt-out-in-production-app

If your app targets Android 10 (API level 29) or lower, you can temporarily opt out of scoped storage in your production app. If you target Android 10, however, you need to set the value of requestLegacyExternalStorage to true in your app's manifest file:

İzin ve konfigürasyon işlemlerini tamamladıktan sonra hafızadan görselleri almak için kodları yazmaya başlayabilirsiniz. Aşağıdaki Android resmi belgesini kontrol edebilirsiniz:

https://developer.android.com/training/data-storage/shared/media#query-collection

Kendi demo uygulamam için yazdığım kod aşağıdaki gibidir:

Hafızadan Tüm Görsellere Ulaşmak

Artık görsellerin “path” bilgisine sahipsiniz. RecyclerView ve Glide kullanarak görselleri kullanıcıya gösterebilirsiniz.

  • Görsellerden Konum Bilgisi Alma

Telefon hafızasındaki görsellerin konum bilgilerini alabilmek için öncelikle aşağıdaki konfigürasyonları yapmanız gerekmektedir.

  1. Manifest dosyasına ACCESS_MEDIA_LOCATION iznini eklemeniz gerekmektedir.
  2. MediaStore nesnenizden setRequireOriginal() öğesini çağırarak fotoğrafın tam baytlarını alın ve fotoğrafın URI’sini iletin. Bu kod bloğunu yukarıda paylaştığım “getAllImagesFromSdCard” fonksiyonunda inceleyebilirsiniz.

Ardından, ExifInterface kütüphanesini kullanarak görsellerden konum bilgilerini alabilirsiniz:

Görsellerin Konum Bilgileri Almak

ExifInterface’den alınan GPS değerlerini harita üzerinde kullanılabilecek değerlere dönüştürmek için aşağıdaki gibi bir yardımcı sınıf oluşturabilirsiniz.

Alınan GPS Verilerini Kullanılabilir Hale Getirmek

Bu konu ile ilgili detaylı bilgiyi aşağıdaki dokümandan da edinebilirsiniz.

https://developer.android.com/training/data-storage/shared/media#location-media-captured

Çıktı

Görseller:

Telefon Hafızasından Alınan Tüm Görseller

Lokasyonlar:

Görsellerin Lokasyon Bilgileri

Sonuç

Elde ettiğimiz veriler ile kullanıcının dikkatini çekecek ve faydalı olacak bir uygulama geliştirebilirsiniz. Fark ettiğiniz gibi, bu gibi uygulamalarda izin ve yapılandırma işlemleri önemlidir.

Umarım faydalı olmuştur. Başka yazılarda görüşmek üzere :)

Referanslar

https://developer.android.com/guide

--

--