Это может быть достигнуто очень легко с компонентом Xamarin.Mobile, который является бесплатным и работает со всеми платформами.
http://components.xamarin.com/view/xamarin.mobile
Из примера они дают:
using Xamarin.Media;
// ...
var picker = new MediaPicker();
if (!picker.IsCameraAvailable)
Console.WriteLine ("No camera!");
else {
try {
MediaFile file = await picker.TakePhotoAsync (new StoreCameraMediaOptions {
Name = "test.jpg",
Directory = "MediaPickerSample"
});
Console.WriteLine (file.Path);
} catch (OperationCanceledException) {
Console.WriteLine ("Canceled");
}
}
После того, как вы сделать снимок, он сохраняется в указанный каталог с указанным именем. Для того, чтобы легко получить эту картинку и отобразить его с вашим ImageView с помощью приведенного выше примера вы можете сделать следующее:
//file is declared above as type MediaFile
UIImage image = new UIImage(file.Path);
//Fill in with whatever your ImageView is
yourImageView.Image = image;
Edit:
Просто к сведению, что вышеуказанные потребности быть асинхронными. Так что если вы хотите, чтобы запустить камеру от кнопки вызова, например, вы просто немного изменить .TouchUpInside
события:
exampleButton.TouchUpInside += async (object sender, EventArgs e) => {
//Code from above goes in here, make sure you have async after the +=
};
В противном случае вы можете обернуть код сверху в функции и добавить асинхронный в том, что:
public async void CaptureImage()
{
//Code from above goes here
}
Могу ли я иметь одно и то же в перекрестной платформе xamarin. – KkMIW
Я бы так предположил, хотя я не использую Xamarin. – joelg