android 捕捉摄像机馈送,net maui

s8vozzvw  于 2023-01-07  发布在  Android
关注(0)|答案(3)|浏览(248)

我刚到Xamarin和毛伊岛,我一直在开发一个应用程序,现在我需要一种方法来访问相机饲料。
我希望能在应用程序中预览摄像头,首先是安卓系统,当按下按钮时能捕捉到图像,我让它与原生摄像头应用程序(媒体选择器)一起工作,但这并不能满足我的要求。
我一直在尝试使用Android相机X的处理程序来预览布局,但我就是不能破解它,几乎没有任何方向从头开始构建一个。有没有人有任何经验,这可能会给我指出正确的方向?

jgzswidk

jgzswidk1#

你可以尝试使用.NET Multi-platform App UI (.NET MAUI) IMediaPicker interface。这个接口允许用户在设备上挑选或拍摄照片或视频。
要获取照片,使用代码如下:

FileResult photo = await MediaPicker.Default.CapturePhotoAsync();
pw9qyyiw

pw9qyyiw2#

回答:我最终为maui创建了一个自定义处理程序,并使用原生android构建了我自己的视图,使用c#中的xamarin构建了视图,然后使用一个接口回调处理程序,告诉它已经拍摄了一张图像。

6bc51xsx

6bc51xsx3#

我在Android和iOS上都有这个。我想我应该在这里发布,以防有人需要这个。我稍后会提到一些Catch22。
在第一个代码块中,您将看到视图的代码。我将其命名为CameraPerson,因为其中有一个Person图像覆盖。这是放置在RootFolder或非Platform文件夹中的代码。我将我的代码放置在名为MultiTargeting的文件夹中。

using System.ComponentModel;
public class CameraPerson : View
{
    public CameraPerson()
    {

    }

    public enum IMAGE_TYPE
    {
        Profile,
        Wound
    }

    public enum CAMERA_TYPE
    {
        Forward,
        Back
    }

    public static readonly BindableProperty ImageTypeProperty =
        BindableProperty.Create(nameof(ImageType), typeof(IMAGE_TYPE), typeof(CameraPerson), IMAGE_TYPE.Wound);

    public static readonly BindableProperty PatientIdProperty =
        BindableProperty.Create(nameof(PatientId), typeof(int), typeof(CameraPerson), 0);

    public static readonly BindableProperty CameraTypeProperty =
        BindableProperty.Create(nameof(CameraType), typeof(CAMERA_TYPE), typeof(CameraPerson), CAMERA_TYPE.Back);

    public static readonly BindableProperty LocalIdProperty =
        BindableProperty.Create(nameof(LocalId), typeof(long), typeof(CameraPerson), null);

    public IMAGE_TYPE ImageType
    {
        get { return (IMAGE_TYPE)GetValue(ImageTypeProperty); }
        set { SetValue(ImageTypeProperty, value); }
    }

    public int PatientId
    {
        get { return (int)GetValue(PatientIdProperty); }
        set { SetValue(PatientIdProperty, value); }
    }

    public CAMERA_TYPE CameraType
    {
        get { return (CAMERA_TYPE)GetValue(CameraTypeProperty); }
        set { SetValue(CameraTypeProperty, value); }
    }

    public long LocalId
    {
        get { return (long)GetValue(LocalIdProperty); }
        set { SetValue(LocalIdProperty, value); }
    }
}

由于字符数有限,请继续。

相关问题