Xamarin Forms Kamera İşlemleri ( Güncelleme )

Sizlere bu yazımda son zamanlarda sıkça aldığım bir hatanın çözümünden bahsedeceğim. Özellikle son zamanlarda Xamarin Forms’da kamerayı kullanıp video ve fotoğraf çekmek için kullandığımız Media.Plugin’i projemize dahil etmemiz için bir kaç ayrıntıya daha yer vermemiz gerekiyordu. BU ayarları yapmadığımız takdirde karşımıza aşağıda ki gibi bir hata çıkıyordu.

Unable to get file location. This most likely means that the file provider information is not set in your Android Manifest file. Please check documentation on how to set this up in your project.

Böyle bir hata ile karşılaşmamak için aşağıda ki adımları takip ediniz. İlk olarak projemize Manage Nuget Package Manager ile Media.Plugin’i kurmamız gerekiyor. Zaten bu paketi kurduktan sonra da karşımıza readme.txt adında bir dosya ile karşı karşıya kalıyoruz. Paketi kurduktan sonra android çin bir kaç izin vermemiz gerekiyor. Bu izinler kamerayı kullanmak, hafızayı okumak ve hafızaya veri yazmak olacak. Bunu yapmamız için projemizin android katmanına gelip sağa tıklayıp özellikler seçeneğine tıklamamız gerekiyor. Karşımıza çıkan sayfanın yan kısmında seçenekler var. Biz bu seçeneklerden Android Manifest katmanına geliyoruz. BU sayfada bulunan verilen izinler yerinde yukarıda ki izinleri vermeniz gerekiyor. Böylece izin verdiğimiz bu özellikleri kullanabileceğiz.

İlk adımı tamamladıktan sonra diğer bir adım olan verdiğimiz izinleri Main Activity sınıfında almamız gerekiyor. Bunun için aşağıdaki kod parçasını kopyalayıp oraya yapıştırmanız gerekmekte.

Bu adımı da geçtikten sonra diğer adım eklediğimiz paketi Main Activity  sınıfında otomatik olarak gelmediyse elle eklememiz gerekiyor. Yine aşağıda ki kod parçasıyla bu işlemi yerine getirmemiz gerekiyor.

Bununla da bitmiyor sonrasında ise yine bir kaç işlem daha yapmanız gerekmekte. Yine android katmanın altında yer alan AssemblyInfo.cs sınfına aşağıda ki kod satırını ekleyeceğiz.

Son olarak yapacaklarımız en kritik olanına geldik. Bu son işlem ile verilerimizi hangi dosya yolunda saklayacağımızı belirtiyoruz. Eğer bunu doğru bir şekilde yapamaz isek yazının başında belirttiğim hatayı alıyoruz. Android katmanının altında bulunan properties’in içinde bulunan AndroidManifest.xml dosyasında bir kaç ekleme yapacağız. Bu dosyanın içinde bulunan application tagleri içerisine aşağıda ki kod parçasını eklemeniz gerekiyor.

En son olarak da dosyalarımızın telefonda hangi yolda olduklarını belirtmek için bir xml dosyası açmamız gerekiyor. Bu xml dosyasını Android katmanın altında yer alan Resources klasörünün içine xml isimli bir klasör oluşturuyoruz ve ardından bu klasörün içine file_paths.xml isimli bir dosya oluşturup aşağıda ki kodları içine aktarıyoruz.

Bu işlemler sonrasında Xaml.Media.Plugin’i rahatlıkla kullanabilirsiniz.

Fotoğraf çekme, seçme veya video çekme, seçme işlemleri için burada ki yazımdan faydalanabilirsiniz.

Sorularınız olursa mail veya yorum atarak ulaşabilirsiniz.

4 thoughts on “Xamarin Forms Kamera İşlemleri ( Güncelleme )

  1. Hi, I’m doing an app in Xamarin and I’m throwing the error that you described for your solution but I’m still throwing the same error and I’ve done everything you put in, but there’s no way, I do not know what to modify.

    There is something that catches my attention, the method that was described by those who call it because it seems to me that from some side I could invoke it.

    public override void OnRequestPermissionsResult (int requestCode, string [] permissions, Android.Content.PM.Permission [] grantResults)
    {
         Plugin.Permissions.PermissionsImplementation.Current.OnRequestPermissionsResult (requestCode, permissions, grantResults);
    }

    thank you very much, discuylpe the inconveniences I am new in this language and it is throwing me many errors

      1. 1067/5000
        Traducir del: inglés
        Hi, the error I get when you get to the following code, however I gave you all the permissions that you posted and I get the error “Unable to get file location.” This most likely means that the file provider information is not set in your Android Manifest file. Please check documentation on how to set this up in your project. ”

        await CrossMedia.Current.Initialize ();
        var opAlma = new StoreCameraMediaOptions ()
        {
        PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium,
        CustomPhotoSize = 25,
        DefaultCamera = Plugin.Media.Abstractions.CameraDevice.Rear,
        AllowCropping = true,
        SaveToAlbum = true,
        Directory = “Directory”,
        Name = “MyFoto.jpg”,

        };
        //in the following line I throw the error
        var photo = await CrossMedia.Current.TakePhotoAsync (opAlma);
        myFoto.Source = ImageSource.FromStream (() =>
        {
        var stream = foto.GetStream ();
        foto.Dispose ();
        return stream;
        });

        1. OK. I understand u. Create a folder named xml under the Resources folder. You should also create file_paths.xml in the folder named xml. I solved my problem like that.

Leave a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.