👨🏼💻 Telefon Hafızasındaki Fotoğrafları Gösterme ve Fotoğrafların Konum Bilgilerine Ulaşma
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
totrue
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:
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.
- Manifest dosyasına
ACCESS_MEDIA_LOCATION
iznini eklemeniz gerekmektedir. - 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:
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.
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:
Lokasyonlar:
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 :)