Android/Xamarin表单:为什么不&x27;为我的相机目的开火?

Android/Xamarin表单:为什么不&x27;为我的相机目的开火?,android,forms,xamarin,camera,Android,Forms,Xamarin,Camera,我正在尝试让Xamarin/Android应用程序拍摄照片并将其发送到服务器。我正在使用Xamarin表单,并在主要活动上创建意图 我期望发生的是相机出现,让我拍照,我有机会接受、拒绝或重新尝试照片,如果我接受或拒绝OnActivity,则会在我的MainActivity中调用Result,我可以从那里处理图像数据 发生的情况是,永远不会调用重写的OnActivityResult函数。相机启动后,我开始拍照,确认一切正常,然后屏幕保持在相机上,呼叫应用程序再也无法恢复控制 我正在使用StartA

我正在尝试让Xamarin/Android应用程序拍摄照片并将其发送到服务器。我正在使用Xamarin表单,并在主要活动上创建意图

我期望发生的是相机出现,让我拍照,我有机会接受、拒绝或重新尝试照片,如果我接受或拒绝OnActivity,则会在我的MainActivity中调用Result,我可以从那里处理图像数据

发生的情况是,永远不会调用重写的OnActivityResult函数。相机启动后,我开始拍照,确认一切正常,然后屏幕保持在相机上,呼叫应用程序再也无法恢复控制

我正在使用StartActivityForResult从主活动启动活动:

            // ...
            MessagingCenter.Subscribe<MainPage>(this, "TakePhoto", (sender) => {

                Intent intent = new Intent(MediaStore.ActionImageCapture);

                string file = String.Format("myPhoto_{0}.jpg", Guid.NewGuid());
                PhotoData._file = new Java.IO.File(PhotoData._dir, file);

                var uri = Android.Net.Uri.FromFile(PhotoData._file);
                intent.PutExtra(MediaStore.ExtraOutput, uri);

                StartActivityForResult(intent, 0);
            });
这根本没人打电话。调试器不会在此处设置的断点上停止,并且打印消息不会出现在控制台上

谷歌搜索表明,如果main活动在TabHist中(不是),或者如果活动的NoHistory设置为true,则可能发生这种情况。这就是我定义MainActivity类的方式

    [Activity(
        Label = "SOC Operator",
        MainLauncher = true,
        Icon = "@drawable/icon",
        Theme = "@style/MainTheme.Splash",
        ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation,
        ScreenOrientation = ScreenOrientation.Portrait,
        NoHistory = false)
    ]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        // ...
这大概是我能做到的。摄像头被调用,意图被激发,但处理程序从未被调用,控件也从未返回到我的应用程序

I确实在显示相机的输出中出现错误

D/摄像机(26290):应用程序通过空表面


但这种情况似乎发生在创建意图之前,而且在任何情况下,过程中的相机部分似乎工作正常。

您可以使用插件
媒体。插件
。检查是的,我希望避免这种情况。首先,这是一个有点像弗兰肯斯坦的应用程序,我希望避免添加另一种方式。它真正需要的是一个彻底的重构,但我认为我没有时间去做。如果使用插件,你只需要在表单中调用这个方法。是的。我现在似乎已经开始工作了。谢谢你的帮助。
    [Activity(
        Label = "SOC Operator",
        MainLauncher = true,
        Icon = "@drawable/icon",
        Theme = "@style/MainTheme.Splash",
        ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation,
        ScreenOrientation = ScreenOrientation.Portrait,
        NoHistory = false)
    ]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        // ...