Xamarin.Forms ile Kamera Kullanımı [Media Plugin]

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..

Xamarin.Forms ile Kamera Kullanımı [Media Plugin]

Plugin’i nuget yardımıyla projeme ekliyorum.

Media Plugin

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..

CustomButton

MediaPage.xaml.cs içerisinde RelativeLayout kullanarak 2 Button ve 1 Image içeren tasarım işlemlerini yaptım.

Design

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..

Button Click

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.

Media Plugin

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.

  1. Fotoğraf adı
  2. Fotoğrafın saklanacağı klasör
  3. Uygulama açıldığında kullanılacak kamera
  4. Fotoğrafları albüm şeklinde sakla

Save Image

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..

Screenshot

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…

Galeri

İ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!

Video Plugin

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;

iOS Media Plugin

WinPhone 8.1 üzerinde çalıştırmak için,

WinPhone 8.1

App.xaml içeirisinde gerekli metodu override etmelisiniz.

Detaylar için : https://github.com/jamesmontemagno/MediaPlugin

Kaynak kodlar : github

Görüşmek üzere..

Yiğit ÖZAKSÜT

MVP, MCT, Xamarin Developer, Consultant & Architect

Yorum Gönder