Can anyone point me to an example of take a Photo and store it using MVVMCross?
I have been searching but only have found this:
Monodroid Take a picture with Camera (Doesn't Implement MVVMCross)
Video Recording (It's Video and i can't make it work :S)
The Oficialy Recipe Example (It Works but does not implement MVVMCross)
Thanks!!!
Resolved! Thanks!
To Future References: (Using Master Branch)
Credits to Stuart, I just changed the code to work with my reality
using Cirrious.MvvmCross.ExtensionMethods; using Cirrious.MvvmCross.Interfaces.Platform.Tasks; using Cirrious.MvvmCross.Interfaces.ServiceProvider; using SIGEP.DummyService; using SIGEP.Mobile.Core.Interfaces; namespace SIGEP.Mobile.Core.Models { public class PhotoService : IMvxServiceConsumer<IMvxPictureChooserTask> { private const int MaxPixelDimension = 1024; private const int DefaultJpegQuality = 92; public void GetNewPhoto() { this.GetService<IMvxPictureChooserTask>().TakePicture( MaxPixelDimension, DefaultJpegQuality, HandlePhotoAvailable, () => { /* cancel is ignored */ }); } public event EventHandler<PhotoStreamEventArgs> PhotoStreamAvailable; private void HandlePhotoAvailable(Stream pictureStream) { var handler = PhotoStreamAvailable; if (handler != null) { handler(this, new PhotoStreamEventArgs() { PictureStream = pictureStream, OnSucessGettingPhotoFileName = OnSucessGettingPhotoFileName }); } } public static void TakePhoto(Action<string> successFileName, Action<Exception> error) { var service = new PhotoService(); service.OnSucessGettingPhotoFileName = successFileName; service.OnError = error; service.GetNewPhoto(); service.PhotoStreamAvailable += new EventHandler<PhotoStreamEventArgs>(service_PhotoStreamAvailable); } static void service_PhotoStreamAvailable(object sender, PhotoStreamEventArgs e) { //grava pra ficheiro!!! var directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); var filename = Path.Combine(directory, "photo.jpeg"); string saveTo = filename; FileStream writeStream = new FileStream(saveTo, FileMode.Create, FileAccess.Write); ReadWriteStream(e.PictureStream, writeStream); e.OnSucessGettingPhotoFileName(filename); } private static void ReadWriteStream(Stream readStream, Stream writeStream) { int Length = 256; Byte[] buffer = new Byte[Length]; int bytesRead = readStream.Read(buffer, 0, Length); // write the required bytes while (bytesRead > 0) { writeStream.Write(buffer, 0, bytesRead); bytesRead = readStream.Read(buffer, 0, Length); } readStream.Close(); writeStream.Close(); } public Action<string> OnSucessGettingPhotoFileName { get; set; } public Action<Exception> OnError { get; set; } } [Serializable] [ComVisible(true)] public class PhotoStreamEventArgs : EventArgs { public Stream PictureStream { get; set; } public Action<string> OnSucessGettingPhotoFileName { get; set; } } }