Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.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
将摄像头从Qr码移开后才播放音频-iOS_Ios_Objective C_Qr Code_Avaudioplayer - Fatal编程技术网

将摄像头从Qr码移开后才播放音频-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

我不熟悉iOS
开发
,我正在开发一个应用程序,当检测到
二维码
时,我想在其中播放一些音频。我可以检测到
二维码
,也可以播放音频,但问题是音频只在我将相机移离
二维码
时播放。因此,如果我将摄像头指向
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我已经添加了代码