在将相机从二维码移开之前不会播放音频 - iOS
Posted
技术标签:
【中文标题】在将相机从二维码移开之前不会播放音频 - iOS【英文标题】:Audio not playing until moving the camera away from Qr code - iOS 【发布时间】:2019-08-09 07:17:23 【问题描述】:我是ios
development
的新手,我正在开发一个应用程序,我想在检测到QR code
时播放一些音频。我能够检测到QR code
并播放音频,但问题是当我将相机从QR code
移开时仅播放音频。所以,如果我将相机指向QR code
,它不会播放音频,但只要我移动相机(即没有检测到QR code
),音频就会开始播放。我不希望这种行为在检测到QR code
后立即播放音频。任何建议都会很棒,因为我刚刚开始 iOS
development
2 3 天前。谢谢。
-(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.framework。当然我添加代码 @RaviSharma 我已经添加了代码 【参考方案1】:不要在这个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];
您可以在viewWillAppear()
方法中调用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];
试试这个。
【讨论】:
以上是关于在将相机从二维码移开之前不会播放音频 - iOS的主要内容,如果未能解决你的问题,请参考以下文章
Android 音频播放——AudioTrack直接播PCMMediaPlayer播媒体文件可以是audio
当通过 JavaScript 填充源时,Html5 音频不会在 Safari 中播放