【问题标题】:How to Implement Dependency Service for Camera Overlay in Xamarin.Forms Using the Media Plugin?如何使用媒体插件在 Xamarin.Forms 中实现相机覆盖的依赖服务?
【发布时间】:2019-06-18 14:32:04
【问题描述】:

我正在尝试使用 Xamarin 的媒体插件https://github.com/jamesmontemagno/MediaPlugin 将相机覆盖功能作为依赖服务传递到我的共享代码中。

我不知道如何正确实现依赖服务。该应用程序运行,但是当我打开相机时,它不显示覆盖。如果有人可以帮助我编写代码,或者指导我使用覆盖选项的示例,我将不胜感激。

我的界面代码:

public interface IPhotoOverlay 
{
   object GetImageOverlayAsync();
}

我的 iOS 代码:

public object GetImageOverlayAsync()
    {
        Func<object> func = CreateOverlay;

        return func;
    }

    public object CreateOverlay()
    {
        var imageView = new UIImageView(UIImage.FromBundle("face-template.png"));
        imageView.ContentMode = UIViewContentMode.ScaleAspectFit;

        var screen = UIScreen.MainScreen.Bounds;
        imageView.Frame = screen;

        return imageView;
    }

我的共享代码:

var photo = await Plugin.Media.CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions() {
            OverlayViewProvider = DependencyService.Get<IPhotoOverlay>().GetImageOverlayAsync,
            DefaultCamera = Plugin.Media.Abstractions.CameraDevice.Front});

【问题讨论】:

  • 你是否在你iOS项目的AppDelegeate的FinishedLaunching方法中将你的PhotoOverlay服务注册到你的IPhotoOverlay服务中了?
  • 不,我没有,我该怎么做呢?在 Xamarin 文档中找到的示例中,我没有在 AppDelegate 中看到注册。
  • 我刚刚尝试添加 Xamarin.Forms.DependencyService.Register();这对我不起作用。如何准确注册?
  • 在你完成的启动方法中添加这一行:DependencyService.Register();这是假设您的 ios 服务称为 PhotoOverlay。你也可以通过类上面的属性注册一个依赖

标签: c# .net xamarin.forms camera-overlay


【解决方案1】:

在您的 Xamarin.iOS 服务中,您需要注册 Dependency,这是一个示例。

[assembly: Dependency (typeof (PhotoOverlayiOS))]
namespace UsingDependencyService.iOS
{
    public class PhotoOverlayiOS : IPhotoOverlay
    {

        public object GetImageOverlayAsync()
        {
            Func<object> func = CreateOverlay;

            return func;
        }

        public object CreateOverlay()
        {
            var imageView = new UIImageView(UIImage.FromBundle("face-template.png"));
            imageView.ContentMode = UIViewContentMode.ScaleAspectFit;

            var screen = UIScreen.MainScreen.Bounds;
            imageView.Frame = screen;

            return imageView;
        }  
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 2013-08-06
    • 1970-01-01
    • 2015-04-06
    • 2021-08-24
    • 2023-01-30
    相关资源
    最近更新 更多