UIImagePickerController captureMode 分配不正确

UIImagePickerController captureMode not assigning correctly

我正在使用 UIImagePickerController 从我的应用中拍摄照片和视频。在两者之间切换还不错。如果用户选择录制视频,我先检查这个:

if (picker.cameraCaptureMode == UIImagePickerControllerCameraCaptureModeVideo)
{
    [self captureVideo];
}
else
{
    picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo;
    [self captureVideo];
}

这通常工作得很好。这是问题所在。我还使用 Tokbox 的 OpenTok 进行视频通话,似乎 captureMode 分配在视频通话后不起作用。看起来完全疯了,但我做了这个修改来做一些调试:

if (picker.cameraCaptureMode == UIImagePickerControllerCameraCaptureModeVideo)
{
    [self captureVideo];
}
else
{
    picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo;
    if (picker.cameraCaptureMode != UIImagePickerControllerCameraCaptureModeVideo)
    {
        NSLog(@"Assignment unsuccessful???")
    }
    [self captureVideo];
}

而且我每次都会收到此 "Assignment unsuccessful???" 日志。 UIImagePickerController 不得允许分配或其他内容。我真的想不通。我还在 OpenTok 的网站上创建了一个论坛 post,看看他们是否可能不发布一些相机资源,但我认为这不是他们的问题。

这里有什么见解吗?

使用:

+ (NSArray *)availableCaptureModesForCameraDevice:(UIImagePickerControllerCameraDevice)cameraDevice 

检查哪些来源类型可用。此外,如果您使用的是模拟器,它永远不会正确分配。

已通过 TokBox 论坛上的解决方案解决。在尝试访问麦克风之前,我需要先更改我的音频会话。

AVAudioSession *mySession = [AVAudioSession sharedInstance];
[mySession setCategory:AVAudioSessionCategorySoloAmbient error:nil];

[self presentViewController:picker animated:YES completion:NULL];