Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Xamarin iOS应用程序中检查摄像头访问,避免;mono运行时出现致命错误“;?_Ios_Xamarin_Camera_Xamarin.ios_Avcapturedevice - Fatal编程技术网

如何在Xamarin iOS应用程序中检查摄像头访问,避免;mono运行时出现致命错误“;?

如何在Xamarin iOS应用程序中检查摄像头访问,避免;mono运行时出现致命错误“;?,ios,xamarin,camera,xamarin.ios,avcapturedevice,Ios,Xamarin,Camera,Xamarin.ios,Avcapturedevice,我正在尝试在Xamarin iOS应用程序中使用相机。 第一步似乎是检查应用程序是否可以访问摄像头。但是我在mono运行时遇到了一个致命的错误。有什么想法吗 以下是有关此异常的更多详细信息: 在Visual Studio(2015)中,我创建了一个新的“空白应用程序(iPhone)”项目。 由于我拥有一部iPhone3GS,我在项目属性中切换到armv7,并选择iOS6.1作为部署目标 构建应用程序,在iPhone上调试:mac代理运行良好,空应用程序在我的手机上启动 然后我转到AppDeleg

我正在尝试在Xamarin iOS应用程序中使用相机。 第一步似乎是检查应用程序是否可以访问摄像头。但是我在mono运行时遇到了一个致命的错误。有什么想法吗

以下是有关此异常的更多详细信息:

在Visual Studio(2015)中,我创建了一个新的“空白应用程序(iPhone)”项目。 由于我拥有一部iPhone3GS,我在项目属性中切换到armv7,并选择iOS6.1作为部署目标

构建应用程序,在iPhone上调试:mac代理运行良好,空应用程序在我的手机上启动

然后我转到AppDelegate.FinishedLaunching(…)并添加 AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video); 在返回true之前

重建应用程序,调试。。。GetAuthorizationStatus(…)正在引发异常。以下是它的堆栈跟踪:

2016-06-24 12:50:22.691 App2[491:907] +[AVCaptureDevice authorizationStatusForMediaType:]: unrecognized selector sent to class 0x3a49c070
2016-06-24 12:50:22.704 App2[491:907] critical: Stacktrace:
2016-06-24 12:50:22.708 App2[491:907] critical: at <0xffffffff>
2016-06-24 12:50:22.712 App2[491:907] critical: at <0xffffffff>
2016-06-24 12:50:22.715 App2[491:907] critical:
Native stacktrace:
2016-06-24 12:50:22.964 App2[491:907] critical: 0 App2 0x0004f49d mono_handle_native_sigsegv + 240
2016-06-24 12:50:22.968 App2[491:907] critical: 1 App2 0x00056a23 mono_sigsegv_signal_handler + 222
2016-06-24 12:50:22.971 App2[491:907] critical: 2 libsystem_c.dylib 0x3a37ee93 _sigtramp + 42
2016-06-24 12:50:22.975 App2[491:907] critical: 3 App2 0x0033d3d0 map_dwarf_reg_to_hw_reg + 0
2016-06-24 12:50:22.978 App2[491:907] critical: 4 App2 0x0004ed4f mono_handle_exception_internal + 1508
2016-06-24 12:50:22.982 App2[491:907] critical: 5 App2 0x0004e767 mono_handle_exception + 30
2016-06-24 12:50:22.985 App2[491:907] critical: 6 App2 0x0004819b mono_arm_throw_exception + 106
2016-06-24 12:50:22.989 App2[491:907] critical: 7 App2 0x00244194 throw_exception + 64
2016-06-24 12:50:22.996 App2[491:907] critical: 8 App2 0x00274c74 ObjCRuntime_Runtime_throw_ns_exception_intptr + 28
2016-06-24 12:50:23.000 App2[491:907] critical: 9 App2 0x002ab490 wrapper_native_to_managed_ObjCRuntime_Runtime_throw_ns_exception_intptr + 72
2016-06-24 12:50:23.004 App2[491:907] critical: 10 App2 0x000f1bac xamarin_throw_ns_exception + 52
2016-06-24 12:50:23.007 App2[491:907] critical: 11 App2 0x000f3a64 _ZL17exception_handlerP11NSException + 224
2016-06-24 12:50:23.011 App2[491:907] critical: 12 CoreFoundation 0x322a457f + 614
2016-06-24 12:50:23.014 App2[491:907] critical: 13 libobjc.A.dylib 0x39f00a65 + 128
2016-06-24 12:50:23.018 App2[491:907] critical: 14 libc++abi.dylib 0x3994d07b + 78
2016-06-24 12:50:23.025 App2[491:907] critical: 15 libc++abi.dylib 0x3994d114 + 19
2016-06-24 12:50:23.029 App2[491:907] critical: 16 libc++abi.dylib 0x3994e599 cxa_current_exception_type + 0
2016-06-24 12:50:23.032 App2[491:907] critical: 17 libobjc.A.dylib 0x39f009d1 objc_exception_rethrow + 12
2016-06-24 12:50:23.036 App2[491:907] critical: 18 CoreFoundation 0x321eaf21 CFRunLoopRunSpecific + 456
2016-06-24 12:50:23.039 App2[491:907] critical: 19 CoreFoundation 0x321ead49 CFRunLoopRunInMode + 104
2016-06-24 12:50:23.043 App2[491:907] critical: 20 UIKit 0x34103485 + 668
2016-06-24 12:50:23.046 App2[491:907] critical: 21 UIKit 0x34100301 UIApplicationMain + 1120
2016-06-24 12:50:23.054 App2[491:907] critical: 22 App2 0x002a6fec wrapper_managed_to_native_UIKit_UIApplication_UIApplicationMain_int_string___intptr_intptr + 252
2016-06-24 12:50:23.057 App2[491:907] critical: 23 App2 0x0026f8a4 UIKit_UIApplication_Main_string___intptr_intptr + 52
2016-06-24 12:50:23.064 App2[491:907] critical: 24 App2 0x0026f864 UIKit_UIApplication_Main_string___string_string + 204
2016-06-24 12:50:23.069 App2[491:907] critical: 25 App2 0x0010a8e8 App2_Application_Main_string + 152
2016-06-24 12:50:23.073 App2[491:907] critical: 26 App2 0x00223870 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 256
2016-06-24 12:50:23.078 App2[491:907] critical: 27 App2 0x0005842b mono_jit_runtime_invoke + 1562
2016-06-24 12:50:23.083 App2[491:907] critical: 28 App2 0x000991e7 mono_runtime_invoke + 102
2016-06-24 12:50:23.087 App2[491:907] critical: 29 App2 0x0009c799 mono_runtime_exec_main + 284
2016-06-24 12:50:23.092 App2[491:907] critical: 30 App2 0x0010a4c0 xamarin_main + 2232
2016-06-24 12:50:23.096 App2[491:907] critical: 31 App2 0x002b6d6d main + 112
2016-06-24 12:50:23.101 App2[491:907] critical: 32 libdyld.dylib 0x3a337b20 + 0
2016-06-24 12:50:23.106 App2[491:907] critical: Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
2016-06-24 12:50:22.691 App2[491:907]+[AVCaptureDevice authorizationStatusForMediaType:]:发送到类0x3a49c070的无法识别的选择器
2016-06-24 12:50:22.704附录2[491:907]关键:堆栈跟踪:
2016-06-24 12:50:22.708附录2[491:907]关键:在
2016-06-24 12:50:22.712附录2[491:907]关键:在
2016-06-24 12:50:22.715附录2[491:907]关键:
本机堆栈跟踪:
2016-06-24 12:50:22.964附件2[491:907]严重:0附件2 0x0004f49d单声道手柄本机sigsegv+240
2016-06-24 12:50:22.968附录2[491:907]关键:附录0x00056a23单信号处理器+222
2016-06-24 12:50:22.971附录2[491:907]临界:2 libsystem_c.dylib 0x3a37ee93_sigtramp+42
2016-06-24 12:50:22.975附录2[491:907]关键:3附录2 0x0033D0映射到附录2+0
2016-06-24 12:50:22.978附件2[491:907]严重:4附件2 0x0004ed4f单声道处理内部异常+1508
2016-06-24 12:50:22.982附件2[491:907]严重:5附件0x0004e767单声道句柄异常+30
2016-06-24 12:50:22.985附件2[491:907]严重:6附件2 0x0004819b单声道手臂抛出异常+106
2016-06-24 12:50:22.989 App2[491:907]严重:7 App2 0x00244194抛出异常+64
2016-06-24 12:50:22.996 App2[491:907]严重:8 App2 0x00274c74对象运行时抛出异常intptr+28
2016-06-24 12:50:23.000 App2[491:907]严重:9 App2 0x002ab490包装器\u本机\u到\u托管\u对象运行时\u运行时\u抛出\u异常\u intptr+72
2016-06-24 12:50:23.004附件2[491:907]严重:10附件0x000f1bac xamarin_throw_ns_异常+52
2016-06-24 12:50:23.007附件2[491:907]严重:附件11 0x000f3a64异常处理程序异常+224
2016-06-24 12:50:23.011附录2[491:907]临界:12芯基础0x322a457f+614
2016-06-24 12:50:23.014附录2[491:907]临界:13 libobjc.A.dylib 0x39f00a65+128
2016-06-24 12:50:23.018附录2[491:907]临界:14 libc++abi.dylib 0x3994d07b+78
2016-06-24 12:50:23.025 App2[491:907]临界:15 libc++abi.dylib 0x3994d114+19
2016-06-24 12:50:23.029 App2[491:907]严重:16 libc++abi.dylib 0x3994e599 cxa\u当前异常类型+0
2016-06-24 12:50:23.032附录2[491:907]关键:17 libobjc.A.dylib 0x39f009d1 objc_异常_rethrow+12
2016-06-24 12:50:23.036附录2[491:907]关键:18 CoreFoundation 0x321eaf21 CFRunLoopRunSpecific+456
2016-06-24 12:50:23.039附录2[491:907]临界:19 CoreFoundation 0x321ead49 CFRunLoopRunInMode+104
2016-06-24 12:50:23.043附件2[491:907]严重:20 UIKit 0x34103485+668
2016-06-24 12:50:23.046附录2[491:907]严重:21 UIKit 0x34100301 UIApplicationMain+1120
2016-06-24 12:50:23.054 App2[491:907]严重:22 App2 0x002a6fec包装器\u托管\u到\u本地\u UIKit\u UIApplication\u UIApplicationMain\u int\u字符串\uuuuuuuuuu intptr\u intptr+252
2016-06-24 12:50:23.057附录2[491:907]关键:23附录2 0x0026f8a4 UIKit\u UIKit\u UIApplication\u Main\u string\uuuuuuuuuuuu intptr\u intptr+52
2016-06-24 12:50:23.064附件2[491:907]关键:24附件2 0x0026f864 UIKit\U UIKit\U UIApplication\U Main\U string\U string\U string+204
2016-06-24 12:50:23.069附件2[491:907]严重:25附件2 0x0010a8e8附件2应用程序主字符串+152
2016-06-24 12:50:23.073 App2[491:907]临界:26 App2 0x00223870包装器运行时调用对象运行时调用动态intptr intptr intptr intptr+256
2016-06-24 12:50:23.078 App2[491:907]临界:27 App2 0x0005842b mono_jit_runtime_invoke+1562
2016-06-24 12:50:23.083 App2[491:907]严重:28 App2 0x000991e7单声道运行时调用+102
2016-06-24 12:50:23.087 App2[491:907]临界:29 App2 0x0009c799单声道运行时执行主+284
2016-06-24 12:50:23.092附件2[491:907]临界:30附件2 0x0010a4c0 xamarin_main+2232
2016-06-24 12:50:23.096附件2[491:907]严重:31附件2 0x002b6d6d干管+112
2016-06-24 12:50:23.101附录2[491:907]临界:32 libdyld.dylib 0x3a337b20+0
2016-06-24 12:50:23.106 App2[491:907]严重:在执行本机代码时收到SIGSEGV。这通常表明
mono运行时或某个本机库中出现致命错误
由您的应用程序使用。
+[AVCaptureDevice authorizationStatusForMediaType:]:发送到类0x3a49c070的无法识别的选择器

您的设备上运行的iOS版本是什么

选择iOS 6.1作为部署目标

因为如果它是6.1,就像您的部署目标一样,那么您就不能调用此API,因为它是在iOS 7.0中添加的

您需要在iOS 7.0+上有条件地调用它,例如

if (UIDevice.CurrentDevice.CheckSystemVersion (7,0)) {
   AVCaptureDevice.GetAuthorizationStatus (AVMediaType.Video); 
}

部件浏览器可以通过属性向您显示API所需的最低版本。

谢谢。这解释了很多。我的设备是3GS,运行iOS 6.1。我想知道为什么AVCaptureDevice可以在iOS 4+中使用,而AVCaptureDevice.GetAuthorizationStatus只能在7+中使用。这是否意味着不需要检查iOS 6上的摄像头访问权限?像
AVCaptureDevice
这样的类型通常会在新的iOS SDK版本中获得额外的API(有些API会被弃用)。我不记得iOS 6.x是如何处理摄像头授权的。。。时间太长了。与此同时,我发现一些评论告诉我,在iOS 6下,确实不能从应用程序内部进行检查。。。我会试试看。。。再次感谢。。。