【问题标题】:Uno Platform camera preview controlUno 平台相机预览控制
【发布时间】:2020-07-25 22:29:00
【问题描述】:

如何在 uno XAML 页面中添加相机预览?

可能是这样的例子 https://docs.microsoft.com/en-us/windows/uwp/audio-video-camera/simple-camera-preview-access

但是 Uno 上没有实现 CameraCapture.InitializeAsyn。 运行时会抛出以下异常:

System.NotImplementedException:成员 IAsyncAction Uno 中未实现 MediaCapture.InitializeAsync()。

如果可以使用原生 android 代码,这个示例可以满足我的需要。 https://docs.microsoft.com/en-us/samples/xamarin/monodroid-samples/android50-camera2basic/

谢谢!

【问题讨论】:

    标签: uno-platform


    【解决方案1】:

    在 Android 上,您至少有两种方法可以做类似的事情:

    您可以将以下内容与原生 android 意图一起使用,您需要使用 __ANDROID__ 设置条件:

    public MainPage()
    {
    ...
    
        BaseActivity.Current.ActivityResult += Current_ActivityResult;
    }
    
    private void Current_ActivityResult(object sender, BaseActivity.ActivityResultEventArgs e)
    {
       if (e.Data != null)
       {
          var bitmap = (Bitmap)e.Data.Extras.Get("data");
    
          image.Source = bitmap;
       }
       else
       {
          image.Source = null;
       }
    }
    
    public void button_Click(object sender, RoutedEventArgs e)
    {
       var intent = new Intent(MediaStore.ActionImageCapture);
       BaseActivity.Current.StartActivityForResult(intent, 0);
    }
    

    或使用CameraCaptureUI 类:

    {
        try
        {
            var captureUI = new CameraCaptureUI();
            captureUI.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Jpeg;
            captureUI.PhotoSettings.CroppedSizeInPixels = new Size(200, 200);
    
            var photo = await captureUI.CaptureFileAsync(CameraCaptureUIMode.Photo);
    
            if (photo == null)
            {
                return;
            }
            else
            {
                var source = new BitmapImage(new Uri(photo.Path));
                image.Source = source;
            }
        }
        catch(Exception ex)
        {
            System.Diagnostics.Debug.WriteLine(ex);
        }
    }
    

    您可以找到CameraCaptureUInative android 的完整示例。

    其他类型的相机捕捉目前尚未实现(从 Uno 3.0 开始),您需要通过原生 API 才能使用它们。

    【讨论】:

    • 这些示例有助于获取图像,但需要在应用程序内进行相机预览。你知道预览吗?即使是自定义渲染器策略也对我们有效。谢谢!
    • 这个 Xamarin Forms 示例是我需要做的 github.com/UNIT-23/Xam-Android-Camera2-Sample
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    相关资源
    最近更新 更多