如何使用cocos2d-x App的QRCode Reader?

时间:2015-03-09 13:40:16

标签: objective-c cocos2d-x qr-code zxing zbar

我想在我的应用程序中使用QRCodeReader的功能 我的应用程序是用cocos2d-x开发的 我想我必须使用本机代码(Android / iOS) 有一些方法可以在iOS中使用QRCodeReader。 (ZXing,ZBar和iOS中的QR功能(http://www.renaudpradenc.com/?p=453))

但我的代码无论如何都不能正常工作...... 有谁知道怎么办?

它可能与此问题无关,以下代码可以在iOS中调用Camera。

void NativeLauncher::ShowCameraView(){
    AppController  *appController = (AppController *)[UIApplication sharedApplication].delegate;

    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];

    imagePicker.sourceType =  UIImagePickerControllerSourceTypeCamera;

    [appController.viewController presentModalViewController:imagePicker animated:YES];

} 

4 个答案:

答案 0 :(得分:1)

这是Objective C中的一个很棒的教程:

How To Scan QR Code Using AVFoundation Framework

这是斯威夫特的一个:

QR Code Swift tutorial

答案 1 :(得分:1)

对不起,迟到了。

你可能会考虑2种策略,因为没有本地cocos2d-x支持QRCode解码。

1)开发Objective-C - > C ++包装器

在objc端实现AVFoundationFramework方法,并为您将使用的图像解码助手 在cocos2d-x项目中的C ++包装类上调用这些方法(以Carlo的Google Game Services作为起点:https://github.com/cpinan)。

2)使用任何QRCode C ++库

c ++中有许多QRCode解码器,但您需要确保针对所需的archtectures的库。 (例如https://github.com/zxing/zxing

希望它有所帮助。干杯!

答案 2 :(得分:0)

如果您的应用适用于iOS 7以上,则可以使用AVCaptureMetadataOutputObjectsDelegate在应用内部实施QRCode扫描。如果你不知道如何实现AVCaptureMetadataOutputObjectsDelegate这里是一个简单的实现。

https://github.com/dilumnavanjana/MetaQR

添加MetaQR.h& .m文件到您的项目&添加此代码,

MetaQR *metaQR = [[MetaQR alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
metaQR.delegate = self;
[self.view addSubview:metaQR];

此委托方法将为您提供QRCode的数据

-(void)capturedMetaOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection

答案 3 :(得分:0)

对于7.0或更高版本的部署目标,您可以使用AVFoundationFramework读取Qr代码。

以下是执行此操作的教程:http://www.ama-dev.com/iphone-qr-code-library-ios-7/

这个问题也在这里得到解答:QR Code Scanning in ios application