簡體   English   中英

使用MvvmCross在Xamarin Android中拍照

[英]Take Photo in Xamarin Android with MvvmCross

我正在Xamarin Android項目上工作,我想用MvvmCross實現拍照。

這是我的代碼:

public class PhotoService:IPhotoService
{
    private const int MaxPixelDimension = 1280;
    private const int DefaultJpegQuality = 90;

    private Stream imageStream;

    public Stream ImageStream
    {
        get { return imageStream; }
        set { imageStream = value; }
    }

    public void GetPhoto()
    {
        var task = Mvx.Resolve<IMvxPictureChooserTask>();

        task.TakePicture(
        MaxPixelDimension,
        DefaultJpegQuality,
        SavePicture, null);
    }

    private void SavePicture(Stream stream)
    {
        ImageStream = stream;
    }

}

但在:

task.TakePicture(
        MaxPixelDimension,
        DefaultJpegQuality,
        SavePicture,
        null);

我有錯誤:

System.Reflection.TargetInvocationException:調用的目標引發了異常。

更新

在調用堆棧中,我有:

Android.Content.Intent..ctor中的/Users/builder/data/lanes/3511/501e63ce/source/monodroid/src/Mono.Android/platforms/android-24/src/produced/Android.Content.Intent中的0x0。 cs:1275,6 MvvmCross.Plugins.PictureChooser.Droid.MvxPictureChooserTask.TakePicture C#中的C#0x12
App.Services.PhotoService.PhotoService.GetPhoto中的0x3A,位於C:\\ app \\ App.Services \\ PhotoService \\ PhotoService.cs:38,4 C#
App.ViewModels.ViewModels.MainViewModel.TakePhoto中的0x7,位於C:\\ app \\ App.ViewModels \\ ViewModels \\ MainViewModel.cs:49,4 C#

您可以使用nuget中可用的Media Plugin的替代解決方案

https://www.nuget.org/packages/Xam.Plugin.Media/

您可以使用依賴項服務從android項目中調用takePictureAsync方法。 使用此庫,您可以指定文件名和文件夾路徑來存儲圖像。 該庫還可以使用takeVideoAsync方法拍攝視頻。

我相信您需要將MVVMCross.Pugin.PictureChooser軟件包添加到您的Core 平台特定項目中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM