gpt4 book ai didi

c# - 在 Xamarin.Forms 中访问相机

转载 作者:行者123 更新时间:2023-11-30 19:38:47 25 4
gpt4 key购买 nike

我需要使用 Xamarin Forms PCL 访问相机。我找不到任何有效的样本。

我尝试通过安装 XLab并使用其示例代码,但它有异常(exception)。例如,对于 XLabs 示例,我使用了以下内容:

/// <summary>
/// Takes the picture.
/// </summary>
/// <returns>Take Picture Task.</returns>
internal async Task<MediaFile> TakePicture()
{
Setup();

ImageSource = null;

return await _mediaPicker.TakePhotoAsync(new CameraMediaStorageOptions { DefaultCamera = CameraDevice.Front, MaxPixelDimension = 400 }).ContinueWith(t =>
{
if (t.IsFaulted)
{
Status = t.Exception.InnerException.ToString();
}
else if (t.IsCanceled)
{
Status = "Canceled";
}
else
{
var mediaFile = t.Result;

ImageSource = ImageSource.FromStream(() => mediaFile.Source);

return mediaFile;
}

return null;
}, _scheduler);
}

/// <summary>
/// Setups this instance.
/// </summary>
private void Setup()
{
if (_mediaPicker != null)
{
return;
}

var device = Resolver.Resolve<IDevice>();

////RM: hack for working on windows phone?
_mediaPicker = DependencyService.Get<IMediaPicker>() ?? device.MediaPicker;
}

我在 Resolver.Resolve<IDevice>(): 上得到以下异常IResolver has not been set. Please set it by calling Resolver.SetResolver(resolver)

我如何使用这个或其他替代方案来使用 Xamarin.Forms 拍照?感谢您提前提供任何提示!

最佳答案

在你的Droid Project中添加MainActivity类这段代码

protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
#region Resolver Init
SimpleContainer container = new SimpleContainer();
container.Register<IDevice>(t => AndroidDevice.CurrentDevice);
container.Register<IDisplay>(t => t.Resolve<IDevice>().Display);
container.Register<INetwork>(t => t.Resolve<IDevice>().Network);

Resolver.SetResolver(container.GetResolver());
#endregion
....
}

在 IOS 类 AppDelegate 中:

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
#region Resolver Init
SimpleContainer container = new SimpleContainer();
container.Register<IDevice>(t => AppleDevice.CurrentDevice);
container.Register<IDisplay>(t => t.Resolve<IDevice>().Display);
container.Register<INetwork>(t => t.Resolve<IDevice>().Network);

Resolver.SetResolver(container.GetResolver());
#endregion
....
}

关于c# - 在 Xamarin.Forms 中访问相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31349500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com