luc*_*t89 10 iphone ipad ios ios-camera
我在尝试使用相机时遇到了一些问题.问题是有些设备会在设置下显示Camera条目,而其他设备则不会.在那些没有出现Camera开关的设备中,我无法使用相机,因为它没有权限,并且它也不会出现在设置下以启用它们.
这是它在有效设备上的外观:
这就是它在不起作用的设备中的外观.
当我拍摄这些截图时,应用程序应该已经要求权限,但事实并非如此.
我还验证了这些设备没有启用限制.
有任何想法吗?
更新1:添加了代码
这是我用来显示相机的代码(它在自定义视图下,而不是本机相机视图控制器)
self.captureSession = [[AVCaptureSession alloc] init];
AVCaptureDevice *videoCaptureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
NSError *error = nil;
AVCaptureDeviceInput *videoInput = [AVCaptureDeviceInput deviceInputWithDevice:videoCaptureDevice error:&error];
if(videoInput)
{
[self.captureSession addInput:videoInput];
}
else
{
NSLog(@"Error: %@", error);
}
AVCaptureMetadataOutput *metadataOutput = [[AVCaptureMetadataOutput alloc] init];
[self.captureSession addOutput:metadataOutput];
[metadataOutput setMetadataObjectsDelegate:self
queue:dispatch_get_main_queue()];
[metadataOutput setMetadataObjectTypes:@[AVMetadataObjectTypeCode39Code, AVMetadataObjectTypeQRCode]];
AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.captureSession];
previewLayer.frame = self.view.layer.bounds;
UIView * previewView = [[UIView alloc] initWithFrame:self.view.frame];
[previewView.layer addSublayer:previewLayer];
[self.view addSubview:previewView];
[self.view sendSubviewToBack:previewView];
[self.captureSession startRunning];
Run Code Online (Sandbox Code Playgroud)
您需要在打开会话之前请求权限.使用
[AVCaptureDevice requestAccessForMediaType:completionHandler:]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7450 次 |
| 最近记录: |