gpt4 book ai didi

iOS 自定义键盘 - 相机不工作

转载 作者:技术小花猫 更新时间:2023-10-29 10:59:48 27 4
gpt4 key购买 nike

我想创建一个自定义键盘,用作条形码扫描器。我已经完成了整个编码,但输出与预期不同:系统要求我提供摄像头权限(第一次),但摄像头没有向 View 发送视频。

我认为,出于安全原因,使用键盘可能会有一些限制?!?

1.) 打开手电筒

-(void) turnFlashOn
{
AVCaptureDevice *flashLight = [AVCaptureDevice
defaultDeviceWithMediaType:AVMediaTypeVideo];
if([flashLight isTorchAvailable] && [flashLight
isTorchModeSupported:AVCaptureTorchModeOn])
{
BOOL success = [flashLight lockForConfiguration:nil];
if(success){
NSError *error;
[flashLight setTorchMode:AVCaptureTorchModeOn];
[flashLight setTorchModeOnWithLevel:1.0 error:&error];
NSLog(@"Error: %@", error);
[flashLight unlockForConfiguration];
NSLog(@"flash turned on -> OK");

}
else
{
NSLog(@"flash turn on -> ERROR");
}
}

}

这给了我这个日志输出,但是 flash 没有任何反应:

Error: (null)
flash turned on -> OK

2.) 扫描条码(viewDidLoad的一部分)

    // SCANNER PART
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:@[AVMetadataObjectTypeQRCode, AVMetadataObjectTypeEAN13Code]];

AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.captureSession];

camView = [[UIView alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
previewLayer.frame = camView.layer.bounds;
[camView.layer addSublayer:previewLayer];
self.keyboard.barcodeView.clipsToBounds=YES;
camView.center = CGPointMake(self.keyboard.barcodeView.frame.size.width/2, self.keyboard.barcodeView.frame.size.height/2);

[self.keyboard.barcodeView addSubview:camView];

如果我在键盘上按下一个特殊的键,这个键叫做:

-(void)scanBarcodeNow{
AudioServicesPlaySystemSound(systemSoundTock);
NSLog(@"Start scanning...");
self.keyboard.barcodeView.hidden=false;
[self.keyboard.barcodeView addSubview:camView];
[self.keyboard.barcodeView setBackgroundColor:[UIColor redColor]];
[self.captureSession startRunning];

唯一发生的事情是 keyboard.barcodeView 将其背景颜色更改为红色。我这样做是为了让我看到,我所做的所有接线都应该没问题。但是没有显示来自摄像头的视频....

谁能帮帮我?

最佳答案

您返回 null 的原因是您无权访问它。这实际上不是错误。根据 Apple 指南,某些 API 不适用于 iOS 8 扩展(请参阅下面的项目符号 #3)。

enter image description here

这很糟糕,但我总是鼓励人们在深入思考一个想法之前阅读新功能,看看他们想做的事情是否可行(节省大量时间)。绝对检查App Extension Programming Guide获取更多信息。

关于iOS 自定义键盘 - 相机不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25957524/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com