将摄像头从Qr码移开后才播放音频-iOS
我不熟悉iOS将摄像头从Qr码移开后才播放音频-iOS,ios,objective-c,qr-code,avaudioplayer,Ios,Objective C,Qr Code,Avaudioplayer,我不熟悉iOS开发,我正在开发一个应用程序,当检测到二维码时,我想在其中播放一些音频。我可以检测到二维码,也可以播放音频,但问题是音频只在我将相机移离二维码时播放。因此,如果我将摄像头指向QR-code,它不会播放音频,但只要我移动摄像头(即没有检测到QR-code),音频就会开始播放。我不希望出现这种行为,我希望在检测到二维码时立即播放音频。任何建议都很好,因为我在两三天前刚刚开始iOS的开发。谢谢 -(void)captureOutput:(AVCaptureOutput *)capture
开发
,我正在开发一个应用程序,当检测到二维码
时,我想在其中播放一些音频。我可以检测到二维码
,也可以播放音频,但问题是音频只在我将相机移离二维码
时播放。因此,如果我将摄像头指向QR-code
,它不会播放音频,但只要我移动摄像头(即没有检测到QR-code
),音频就会开始播放。我不希望出现这种行为,我希望在检测到二维码时立即播放音频。任何建议都很好,因为我在两三天前刚刚开始iOS的开发。谢谢
-(void)captureOutput:(AVCaptureOutput *)captureOutput
didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection(AVCaptureConnection *)connection{
NSString *detected=@"";
if (metadataObjects != nil && [metadataObjects count] > 0) {
AVMetadataMachineReadableCodeObject *metadataObj = [metadataObjects objectAtIndex:0];
if ([[metadataObj type] isEqualToString:AVMetadataObjectTypeQRCode]) {
detected=[NSString stringWithString:[metadataObj stringValue]];
NSString *path = [[NSBundle mainBundle] pathForResource:@"cbp" ofType:@"mp3"];
NSURL *url = [NSURL URLWithString:path];
_audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:NULL];
[_audioPlayer play];
}
}
}不要在这个AVFoundation
委托方法中初始化AVAudioPlayer
,在开始扫描之前,用声音文件加载播放器
(void)loadSound{
NSString *beepFilePath = [[NSBundle mainBundle] pathForResource:@"cbp" ofType:@"mp3"];
NSURL *beepURL = [NSURL URLWithString:beepFilePath];
NSError *error;
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:beepURL error:&error];
if (error) {
NSLog(@"Could not play sound file.");
NSLog(@"%@", [error localizedDescription]);
}
else{
[_audioPlayer prepareToPlay];
}
}
您可以在viewwillappease()
方法中调用loadSound()
函数。您的AVFoundation
委托方法如下所示:-
(void)captureOutput:(AVCaptureOutput *)captureOutput
didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection(AVCaptureConnection *)connection{
NSString *detected=@"";
if (metadataObjects != nil && [metadataObjects count] > 0) {
AVMetadataMachineReadableCodeObject *metadataObj = [metadataObjects objectAtIndex:0];
if ([[metadataObj type] isEqualToString:AVMetadataObjectTypeQRCode]) {
detected=[NSString stringWithString:[metadataObj stringValue]];
if (_audioPlayer) {
[_audioPlayer play];
}
}
}
}
试试这个。您使用哪个库检测二维码?如果你能在问题正文中添加代码就更好了。我只是在使用AVFoundation.framework。当然,我添加了code@RaviSharma我已经添加了代码