拍完照片后,应用程序在预览xamarin android

时间:2016-07-14 22:35:04

标签: android xamarin camera xamarin.android preview

我想让我的应用拍照,然后在保存到手机后显示它。

到目前为止它拍摄了照片,它将它保存在我的目录中(因为我可以看到它,如果我照看),但是当它在预览中显示时它会停止工作。

我也缩小了它的范围。在OnActivityResult 请求代码== 1034 中,此行崩溃了。

Uri uri = data.Data;


    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.fragment_layout);

        //camera button
        FindViewById<ImageView>(Resource.Id.camera).Click += (sender, args) =>
        {
            String[] items = { "Take Photo", "Choose from Library", "Cancel" };

            using (var dialogBuilder = new AlertDialog.Builder(this))
            {
                dialogBuilder.SetTitle("Add Photo");
                dialogBuilder.SetItems(items, (d, arg) =>
                {
                    //Take photo
                    if (arg.Which == 0)
                    {
                        captureImage();
                    }
                    //Choose from gallery
                    else if (arg.Which == 1)
                    {
                        var intent = new Intent(Intent.ActionPick, MediaStore.Images.Media.ExternalContentUri);
                        intent.SetType("image/*");
                        this.StartActivityForResult(Intent.CreateChooser(intent, "Select Picture"), SELECT_FILE);
                    }
                });

                dialogBuilder.Show();
            };

        };
    }



    protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
    {

        base.OnActivityResult(requestCode, resultCode, data);

        if (resultCode == Result.Ok)
        {
            if (requestCode == 1034)
            {
                // Handle the newly captured image
                var imageView = FindViewById<ImageView>(Resource.Id.foodPreview);
                Uri uri = data.Data;
                imageView.SetImageURI(uri);

            }
            else if (requestCode == SELECT_FILE)
            {
                // Handle the image chosen from gallery
                var imageView = FindViewById<ImageView>(Resource.Id.foodPreview);
                Uri uri = data.Data;
                imageView.SetImageURI(uri);
            }
        }
}

uri正在使用Android.Net,我的android清单中有摄像头和读/写外部存储。

我的错误日志是

  

07-15 12:41:47.088 D / Mono(16481):正在寻找   &#39; java_interop_jnienv_new_object_array&#39 ;. 07-15 12:41:47.088 D / Mono
  (16481):探索&#39; java_interop_jnienv_new_object_array&#39;。 07-15   12:41:47.088 D / Mono(16481):发现为   &#39; java_interop_jnienv_new_object_array&#39 ;. 07-15 12:41:47.088 D / Mono
  (16481):DllImport搜索:&#39; __内部&#39; (&#39;(空)&#39)。 07-15   12:41:47.088 D / Mono(16481):正在寻找   &#39; java_interop_jnienv_set_object_array_element&#39 ;. 07-15 12:41:47.088   D / Mono(16481):探索   &#39; java_interop_jnienv_set_object_array_element&#39 ;. 07-15 12:41:47.088   D / Mono(16481):发现为   &#39; java_interop_jnienv_set_object_array_element&#39 ;. 07-15 12:41:47.098   D / Mono(16481):DllImport搜索:&#39; __内部&#39; (&#39;(空)&#39)。   07-15 12:41:47.098 D / Mono(16481):正在寻找   &#39; java_interop_jnienv_get_object_array_element&#39 ;. 07-15 12:41:47.098   D / Mono(16481):探索   &#39; java_interop_jnienv_get_object_array_element&#39 ;. 07-15 12:41:47.098   D / Mono(16481):发现为   &#39; java_interop_jnienv_get_object_array_element&#39 ;. 07-15 12:41:47.118   D / AbsListView(16481):获取MotionRecognitionManager 07-15 12:41:48.859   D / Mono(16481):DllImport搜索:&#39; __内部&#39; (&#39;(空)&#39)。   07-15 12:41:48.859 D / Mono(16481):正在寻找   &#39; java_interop_jnienv_call_boolean_method_a&#39 ;. 07-15 12:41:48.859 D / Mono   (16481):探测&#39; java_interop_jnienv_call_boolean_method_a&#39;。 07-15   12:41:48.859 D / Mono(16481):发现为   &#39; java_interop_jnienv_call_boolean_method_a&#39 ;. 07-15 12:41:48.940   D / AbsListView(16481):onDetachedFromWindow 07-15 12:41:49.130   E / ViewRootImpl(16481):sendUserActionEvent()mView == null 07-15   12:41:50.751 W / IInputConnectionWrapper(16481):showStatusIcon on   非活动InputConnection线程已完成:#5 07-15   12:41:53.675 D / Mono(16481):[0x6885e7d0]工人完成   线程&#39;未知&#39; (0x5)已退出代码0(0x0)。 07-15   12:41:57.559 D / AbsListView(16481):onDetachedFromWindow 07-15   12:41:57.559 D / AbsListView(16481):onDetachedFromWindow 07-15   12:41:57.659 D / AbsListView(16481):获取MotionRecognitionManager 07-15   12:41:57.669 D / AbsListView(16481):获取MotionRecognitionManager   未处理的例外:

     

System.NullReferenceException:未将对象引用设置为实例   一个对象。

     

07-15 12:42:06.528 D / Mono(16481):DllImport试图加载:   &#39; /system/lib/liblog.so' ;. 07-15 12:42:06.528 D / Mono(16481):   DllImport加载库&#39; /system/lib/liblog.so'。 07-15 12:42:06.528   D / Mono(16481):DllImport搜索:&#39; /system/lib/liblog.so'   (&#39; /system/lib/liblog.so')。 07-15 12:42:06.528 D / Mono(16481):   正在搜索&#39; __ android_log_print&#39;。 07-15 12:42:06.528 D / Mono
  (16481):探索&#39; __ android_log_print&#39;。 07-15 12:42:06.528 D / Mono
  (16481):发现为&#39; __ android_log_print&#39;。 07-15 12:42:06.538   I / MonoDroid(16481):UNHANDLED EXCEPTION:07-15 12:42:06.538   I / MonoDroid(16481):System.NullReferenceException:对象引用   未设置为对象的实例。 07-15 12:42:06.538   I / MonoDroid(16481):at   BitesBoardMobile.Droid.MainActivity.OnActivityResult(Int32   requestCode,Result resultCode,Android.Content.Intent data)[0x0002d]   在C:\ Users \ Larry \ Documents \ Visual Studio中   2015 \项目\ BitesBoardMobile \ BitesBoardMobile \ BitesBoardMobile.Droid \ MainActivity.cs:204   07-15 12:42:06.538 I / MonoDroid(16481):at   Android.App.Activity.n_OnActivityResult_IILandroid_content_Intent_   (IntPtr jnienv,IntPtr native__this,Int32 requestCode,Int32   native_resultCode,IntPtr native_data)[0x00014] in   /Users/builder/data/lanes/3415/ffca580c/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Android.App.Activity.cs:2150   07-15 12:42:06.538 I / MonoDroid(16481):at(包装动态方法)   System.Object的:94390831-eca3-413f-9213-15bb3ef4a181   (intptr,intptr,int,int,intptr)07-15 12:42:06.578 D / Mono(16481):   DllImport搜索:&#39; __内部&#39; (&#39;(空)&#39)。 07-15 12:42:06.578   D / Mono(16481):搜索&#39; java_interop_jnienv_throw&#39;。 07-15   12:42:06.578 D / Mono(16481):探索&#39; java_interop_jnienv_throw&#39;。   07-15 12:42:06.578 D / Mono(16481):发现为   &#39; java_interop_jnienv_throw&#39 ;.发生了未处理的异常。

     

07-15 12:42:09.542 E / mono(16481):07-15 12:42:09.542 E / mono
  (16481):未处理的异常:07-15 12:42:09.542 E / mono(16481):   System.NullReferenceException:未将对象引用设置为实例   一个对象。 07-15 12:42:09.542 E / mono(16481):at(包装纸   动态方法)System.Object:94390831-eca3-413f-9213-15bb3ef4a181   (intptr,intptr,int,int,intptr)07-15 12:42:09.542 E / mono(16481):
  at(包装器本机到托管)   System.Object的:94390831-eca3-413f-9213-15bb3ef4a181   (intptr,intptr,int,int,intptr)07-15 12:42:09.542 E / mono-rt(16481):   [ERROR]致命的未处理的异常:System.NullReferenceException:   你调用的对象是空的。 07-15   12:42:09.542 E / mono-rt(16481):at(包装动态方法)   System.Object的:94390831-eca3-413f-9213-15bb3ef4a181   (intptr,intptr,int,int,intptr)07-15 12:42:09.542 E / mono-rt(16481):
  at(包装器本机到托管)   System.Object的:94390831-eca3-413f-9213-15bb3ef4a181   (intptr,intptr,int,int,intptr)在mgmain JNI_OnLoad

请帮忙。

0 个答案:

没有答案