Olá, Maicon
Já respondi uma pergunta parecida sobre câmera no iOS com Xamarin aqui no fórum para o aluno João Paulo, no link https://cursos.alura.com.br/forum/topico-camera-ios-38954, e, se me permite, vou postar novamente a resposta para você:
Infelizmente no nosso curso não apresentamos o código para realizar essa tarefa com iOS. Porém, como é um assunto recorrente no fórum da própria Xamarin, você pode baixar o código criado por um usuário daquele fórum (Vaka Gopi Nadh Reddy) e comparar a implementação da captura da imagem da câmera do iOS com a do Android.
O link para o fórum é:
https://forums.xamarin.com/discussion/42600/how-to-take-picture-from-camera-and-retrieve-it-using-xamarin-forms-for-cross-platform-app
Baixe o código do aplicativo "Gallery And Camera Sample" no link abaixo:
https://us.v-cdn.net/5019960/uploads/editor/nu/299jnzqx1yry.zip
Basicamente, o que ele faz é criar uma interface ICameraGallery
e implementar duas versões dessa interface, uma chamada Android_dependency
e outra Ios_Dependency
, que são obtidas pela aplicação Xamarin através do Dependency Service do Xamarin Forms.
Código do ICameraGallery
:
public interface ICameraGallery
{
void CameraMedia();
void GalleryMedia();
}
Código da Android_dependency
using System;
using Android.App;
using Android.Content;
using Android.Provider;
using GalleryAndCameraSample.Droid;
using Xamarin.Forms;
using Environment = Android.OS.Environment;
using Uri = Android.Net.Uri;
[assembly: Dependency(typeof(Android_dependency))]
namespace GalleryAndCameraSample.Droid
{
public class Android_dependency : Activity, ICameraGallery
{
public void CameraMedia()
{
AppClass._dir = new Java.IO.File(Environment.GetExternalStoragePublicDirectory(Environment.DirectoryPictures), "CameraAppDemo");
if (!AppClass._dir.Exists())
{
AppClass._dir.Mkdirs();
}
Intent intent = new Intent(MediaStore.ActionImageCapture);
AppClass._file = new Java.IO.File(AppClass._dir, String.Format("myPhoto_{0}.jpg", Guid.NewGuid()));
intent.PutExtra(MediaStore.ExtraOutput, Uri.FromFile(AppClass._file));
Activity activity = (Activity)Forms.Context;
activity.StartActivityForResult(intent, 0);
}
public void GalleryMedia()
{
var imageIntent = new Intent();
imageIntent.SetType("image/*");
imageIntent.SetAction(Intent.ActionGetContent);
((Activity)Forms.Context).StartActivityForResult(Intent.CreateChooser(imageIntent, "Select photo"), 1);
}
}
}
...continua...