Merhaba,
Bugün Xamarin.Forms ile cihaz üzerindeki kamera kullanımını ve galeri içerisine nasıl erişeceğimizi Xamarin.Forms Media Plugin ile inceleyeceğiz.
Kullanacağımız plugin: https://github.com/jamesmontemagno/MediaPlugin
Yeni bir PCL projesi açarak başlıyorum..
Plugin’i nuget yardımıyla projeme ekliyorum.
Aslında şimdiye kadar en zor kısımları yaptık. Plugin içerisinde tüm metotlarımız hazır ve direkt kullanacağız.
Yeni bir Views klasörü yaratıp, içerisine MediaPage sayfasını ekliyorum.
Tasarım kısmına geçmeden önce gidip güzel bir button hazırlıyorum..
MediaPage.xaml.cs içerisinde RelativeLayout kullanarak 2 Button ve 1 Image içeren tasarım işlemlerini yaptım.
Senaryomuzda “Take Photo” ile cihaz kamerasını aktif hale getirip resim çekme işlemini gerçekleştireceğiz “Pick Photo” ile galeri klasörünü açıp oradan istediğimiz resmi seçip ekranda göstereceğiz.
Tasarım işlemleri bittikten sonra butonlarımın click eventlerini açarak artık plugin kodlarını kullanmaya başlıyoruz..
Take Photo için gerekli işlemleri yazmaya başlıyorum..
Bence ilk yazmamız gereken kodlar, cihaz üzerinde bir kamera olup olmadığı veya çalışır durumda olduğu ve o kameranın fotoğraf çekebildiğini kontrol etmek.
CrossMedia.Current.IsCameraAvailable ve CrossMedia.Current.IsTakePhotoSupported özelliklerini bunu bizim için yapıyor.
TakePhotoAsync metodu fotoğraf çekmemizi sağlıyor ve içerisine bir StoreCameraOptions alıyor.
StoreCameraOptions yardımcı sınıfı bize durumları kontrol edebilmemiz için seçenekler sunuyor.
- Fotoğraf adı
- Fotoğrafın saklanacağı klasör
- Uygulama açıldığında kullanılacak kamera
- Fotoğrafları albüm şeklinde sakla
Eğer kamera açıldıktan sonra fotoğraf çektiysek bunun kontrolünü yapıp, ilgili Image objemizin source özelliğine çektiğimiz resmi set ediyoruz.
Hemen test edelim..
Kendi yazdığımız Xamarin.Forms uygulaması ile Media Plugin kullanarak selfie çektik 🙂
Önemli : Droid için,
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” /> yetkisini Manifest dosyasına vermelisiniz.
Galeri ile devam edelim…
İlk yapmamız gereken galeri yetkisi ve kullanılabilirlik kontrolü daha sonra PickPhotoAsync ile galeriyi açmak ve seçim yaptırmak.
Uyarı : Cihazlar arasında farklılıklar gösterebileceği için sadece galeri değil, cihaz içerisinde fotoğraf klasörü olarak açılabilecek tüm seçenekler size sunulacaktır.
Fotoğraflar için yaptıklarımızı videolar için de yapabilir miyiz? EVET!
Bu sefer TakeVideoAsync metodu ve StoreVideoOptions sınıfından yardım alıyoruz.
StoreVideoOptions, StoreCameraMediaOptions gibi bize kolaylıklar sağlıyor.
Varsayılan kamera, video kalitesi, video adı, dosya yolu, albüm seçeneği ve hatta istenilen video boyutu gibi özellikleri var.
iOS için;
WinPhone 8.1 üzerinde çalıştırmak için,
App.xaml içeirisinde gerekli metodu override etmelisiniz.
Detaylar için : https://github.com/jamesmontemagno/MediaPlugin
Kaynak kodlar : github
Görüşmek üzere..
Yorum Gönder