के साथ एक चित्र लेने का एक उदाहरण चाहिए क्या कोई मुझे का उदाहरण ले सकता है और इसे MVVMCross
का उपयोग करके स्टोर कर सकता है?मोनोड्रॉइड और एमवीवीएमसीआर
मैं खोज की है, लेकिन केवल पाया है यह:
Monodroid Take a picture with Camera (MVVMCross लागू नहीं करता है)
Video Recording (यह वीडियो है और मैं यह काम नहीं कर सकते हैं: एस)
The Oficialy Recipe Example (यह काम करता है लेकिन MVVMCross को लागू नहीं करता है)
+०१२३५१६४१०
धन्यवाद !!!
हल हो गया! धन्यवाद!
भविष्य में संदर्भ के लिए: स्टुअर्ट करने के लिए (मास्टर शाखा का उपयोग करना)
क्रेडिट्स, मैं सिर्फ कोड मेरी वास्तविकता के साथ काम करने के लिए बदल
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; }
}
}
वह वीडियो रिकॉर्डक नमूना - https://gist.github.com/3945799 - Xamarin.Mobile के आसपास आधारित है - और यह ऐप-एप फोटो लेने से शुरू करने के लिए एक शानदार जगह हो सकती है। – Stuart
वर्तमान में मैं मास्टर ब्रंच का उपयोग कर रहा हूं। मैं vnext में अपग्रेड करूँगा और उम्मीद है कि यह काम कर रहा है! धन्यवाद @ स्टुअर्ट – ptorrezao
जो कोड मैंने पोस्ट किया है उसे मास्टर शाखा में काम करना चाहिए - अगर आप पहले से ही मास्टर में काम कर रहे हैं, तो मुझे लगता है कि आपको vNext में पीसीएल पर स्विच करने के बजाए मास्टर में काम करना आसान लगेगा :) – Stuart