2017-02-13 1 views
0

Ich arbeite an Xamarin Android-Projekt und möchte die Aufnahme von Fotos mit MvvmCross implementieren.Nehmen Sie ein Foto in Xamarin Android mit MvvmCross

Hier ist mein Code:

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; 
    } 

} 

aber in:

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

Ich habe Fehler:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.

UPDATE

in Call Stapel ich habe:

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

+0

Haben Sie weitere Informationen? Wie eine Stapelverfolgung. Vielleicht innere Ausnahmen? – Cheesebaron

+0

@Cheesebaron Frage aktualisiert – Quiet

+0

Das scheint nicht die gesamte Stack-Spur. – Cheesebaron

Antwort

1

Alternative Lösung können Sie Medien-Plugin, das in nuget

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

verwenden Sie Abhängigkeitsdienst verwenden können, die takePictureAsync Methode von Android-Projekt zu nennen. Mit dieser Bibliothek können Sie den Dateinamen und den Ordnerpfad angeben, um Ihr Bild zu speichern. Diese Bibliothek kann auch Videos mit der Methode takeVideoAsync aufnehmen.

+0

ist ja, es funktioniert ziemlich gut. Vielen Dank! – Quiet

0

Ich glaube, Sie brauchen das MVVMCross.Pugin.PictureChooser Paket an Ihren Kern und plattformspezifische Projekte hinzuzufügen.

+0

Ich habe nur Android-Projekt. Ich habe dieses Plugin zu Android (Core) und meiner Android-Klassenbibliothek hinzugefügt, wo es PhotoService – Quiet

Verwandte Themen