- 浏览: 44825 次
- 性别:
- 来自: 上海
最新评论
-
chengt:
http://jareye.com/
推荐一个下载jar包的网站-----jareye.com -
chengt:
http://jareye.com/
推荐一个下载jar包的网站-----jareye.com
转自:http://blog.csdn.net/linkai5696/article/details/6290001
1、二维码简介
二维码 (2-dimensional bar code) 是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理: 二维条码/二维码能够在横向和纵向两个方位同时表达信息,因此能在很小的面积内表达大量的信息。
2、获取iphone开源代码工程
http://code.google.com/p/zxing/
下载到本地以后解压进入文件夹可以看到
iphone文件夹-->(在点击进入)
ScanTest(测试工程) 和 ZXingWidget(连接库 .a)
3、编译ZXingWidget并且在工程中调用
-------------------------------------------------------------------------------------
因为在4.0以上才有提供获取摄像头数据的类 AVCaptureDeviceInput AVCaptureVideoDataOutput类等 (这样我们在4.x上面才能自动对焦对二维码进行解码
,获取二维码的信息)
-------------------------------------------------------------------------------------
其中在ZXingWidget静态库
ZXingWidgetController.h中为我们提供了 HAS_AVFF的判断开关(默认为1)
这样的话 ZXingWidget 工程只能 选择 Base SDK 4.0
如图2
下编译才能通过
编译完.a后那打开ScanTest工程 一样选择 Base SDK 4.0 编译工程就可以编译运行成功
其中二维码解码的调用可以详见
RootViewController.mm的文件 可以看到 方法
//此方法就是调用 调用摄像头数据自动对焦解码
- (IBAction)scanPressed:(id)sender
{
//此处代码 详见工程
}
//以下delegate 方法返回 解码结果
#pragma mark ZXingDelegateMethods
- (void)zxingController:(ZXingWidgetController*)controller didScanResult:(NSString *)result
{
}
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
其实到这边为止我们已经可以编译的程序可以在4.x以上的机子运行了
但是这样只能支持4.x 这里我们难道不能支持3.x的机子码?
其实是可以的但是我们要修改添加一些代码
首先还是确保 静态库.a和调用程序 编译试在 BADE SDK 4.0
但是要在调用程序如 ScanTest中要修改工程的设置
如图3、4
修改完设置后然后拷贝以下的代码 替换 原来
scanPressed的方法
///////////////////////////////////////代码区/////////////////////////////////////////////////
- (IBAction)scanPressed:(id)sender {
if (NSClassFromString(@"AVCaptureSession") && NSClassFromString(@"AVCaptureVideoPreviewLayer"))
{
MLOG(@"__IPHONE_4_0");
ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO];
widController.view.backgroundColor = [UIColor blueColor];
QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];
[qrcodeReader release];
widController.readers = readers;
[readers release];
NSBundle *mainBundle = [NSBundle mainBundle];
widController.soundToPlay =
[NSURL fileURLWithPath:[mainBundle pathForResource:@"beep-beep" ofType:@"aiff"] isDirectory:NO];
[self presentModalViewController:widController animated:YES];
[widController release];
}
else//3.x以下的固件系统*/
{
MLOG(@"__IPHONE_3_0");
UIImagePickerController *pickCtr = [[UIImagePickerController alloc] init];
pickCtr.sourceType = UIImagePickerControllerSourceTypeCamera;
pickCtr.delegate = self;
[self presentModalViewController:pickCtr animated:YES];
[pickCtr release];
}
}
#pragma mark -
#pragma mark UIImagePickerControllerDelegate
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSLog(@"info ==== %@", info);
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];
[qrcodeReader release];
CGRect cropRect = [UIScreen mainScreen].applicationFrame;
Decoder *d = [[Decoder alloc] init];
d.readers = readers;
d.delegate = self;
int res = [d decodeImage:image];
MLOG(@"res === %d", res);
[d release];
[self dismissModalViewControllerAnimated:YES];
}
- (void)decoder:(Decoder *)decoder didDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset withResult:(TwoDDecoderResult *)twoDResult {
MLOG(@"twoDResult text ==== %@", [twoDResult text]);
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:[twoDResult text] message:[twoDResult text] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
[alertView release];
}
- (void)decoder:(Decoder *)decoder failedToDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset reason:(NSString *)reason {
MLOG(@"twoDResult text ==== failedToDecodeImage");
decoder.delegate = nil;
}
///////////////////////////////////////代码区/////////////////////////////////////////////////
这样在4.0编译完以后就可以自动识别机子固件调用不同的解码方式了
其中 在4.0以上的我们试自动对焦解码二维码
1、二维码简介
二维码 (2-dimensional bar code) 是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理: 二维条码/二维码能够在横向和纵向两个方位同时表达信息,因此能在很小的面积内表达大量的信息。
2、获取iphone开源代码工程
http://code.google.com/p/zxing/
下载到本地以后解压进入文件夹可以看到
iphone文件夹-->(在点击进入)
ScanTest(测试工程) 和 ZXingWidget(连接库 .a)
3、编译ZXingWidget并且在工程中调用
-------------------------------------------------------------------------------------
因为在4.0以上才有提供获取摄像头数据的类 AVCaptureDeviceInput AVCaptureVideoDataOutput类等 (这样我们在4.x上面才能自动对焦对二维码进行解码
,获取二维码的信息)
-------------------------------------------------------------------------------------
其中在ZXingWidget静态库
ZXingWidgetController.h中为我们提供了 HAS_AVFF的判断开关(默认为1)
这样的话 ZXingWidget 工程只能 选择 Base SDK 4.0
如图2
下编译才能通过
编译完.a后那打开ScanTest工程 一样选择 Base SDK 4.0 编译工程就可以编译运行成功
其中二维码解码的调用可以详见
RootViewController.mm的文件 可以看到 方法
//此方法就是调用 调用摄像头数据自动对焦解码
- (IBAction)scanPressed:(id)sender
{
//此处代码 详见工程
}
//以下delegate 方法返回 解码结果
#pragma mark ZXingDelegateMethods
- (void)zxingController:(ZXingWidgetController*)controller didScanResult:(NSString *)result
{
}
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
其实到这边为止我们已经可以编译的程序可以在4.x以上的机子运行了
但是这样只能支持4.x 这里我们难道不能支持3.x的机子码?
其实是可以的但是我们要修改添加一些代码
首先还是确保 静态库.a和调用程序 编译试在 BADE SDK 4.0
但是要在调用程序如 ScanTest中要修改工程的设置
如图3、4
修改完设置后然后拷贝以下的代码 替换 原来
scanPressed的方法
///////////////////////////////////////代码区/////////////////////////////////////////////////
- (IBAction)scanPressed:(id)sender {
if (NSClassFromString(@"AVCaptureSession") && NSClassFromString(@"AVCaptureVideoPreviewLayer"))
{
MLOG(@"__IPHONE_4_0");
ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO];
widController.view.backgroundColor = [UIColor blueColor];
QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];
[qrcodeReader release];
widController.readers = readers;
[readers release];
NSBundle *mainBundle = [NSBundle mainBundle];
widController.soundToPlay =
[NSURL fileURLWithPath:[mainBundle pathForResource:@"beep-beep" ofType:@"aiff"] isDirectory:NO];
[self presentModalViewController:widController animated:YES];
[widController release];
}
else//3.x以下的固件系统*/
{
MLOG(@"__IPHONE_3_0");
UIImagePickerController *pickCtr = [[UIImagePickerController alloc] init];
pickCtr.sourceType = UIImagePickerControllerSourceTypeCamera;
pickCtr.delegate = self;
[self presentModalViewController:pickCtr animated:YES];
[pickCtr release];
}
}
#pragma mark -
#pragma mark UIImagePickerControllerDelegate
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSLog(@"info ==== %@", info);
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];
[qrcodeReader release];
CGRect cropRect = [UIScreen mainScreen].applicationFrame;
Decoder *d = [[Decoder alloc] init];
d.readers = readers;
d.delegate = self;
int res = [d decodeImage:image];
MLOG(@"res === %d", res);
[d release];
[self dismissModalViewControllerAnimated:YES];
}
- (void)decoder:(Decoder *)decoder didDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset withResult:(TwoDDecoderResult *)twoDResult {
MLOG(@"twoDResult text ==== %@", [twoDResult text]);
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:[twoDResult text] message:[twoDResult text] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
[alertView release];
}
- (void)decoder:(Decoder *)decoder failedToDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset reason:(NSString *)reason {
MLOG(@"twoDResult text ==== failedToDecodeImage");
decoder.delegate = nil;
}
///////////////////////////////////////代码区/////////////////////////////////////////////////
这样在4.0编译完以后就可以自动识别机子固件调用不同的解码方式了
其中 在4.0以上的我们试自动对焦解码二维码
发表评论
-
iOS开发中如何解决TableView中图片延时加载
2012-06-01 13:44 1641IOS开发中如何解决TableView中图片延时加载是本文要介 ... -
让模拟器也支持GPS定位(模拟实现)
2012-06-01 13:36 2141iOS上的GPS定位一般需要真机才能看到效果,但在开发的过程中 ... -
判断UITextField的输入只为数字的方法
2012-06-01 13:35 1135实现下面的委托 #define NUMBERS @" ... -
反向地理编码用法
2012-06-01 13:33 1140与地图打交道时,有时需要查找经纬度获取地理信息,MapKit提 ... -
关于出现僵尸信号SIGBAT或者EXC_BAD_ACCESS的解决方案
2012-06-01 13:31 675随着用xcode开发的深入,相信很多同学都对出现SIGBAT或 ... -
iOS 应用的 UI 开发资源
2012-05-28 23:27 954中文 http://blog.csdn.net/column ... -
汉字转拼音
2012-05-20 19:47 1328// // ChineseToPinyin.h // ... -
修改图标上的提示符(badge)
2012-05-20 19:35 975程序推送,或者AppStore软件有更新都会有提示,那代码怎么 ... -
Info.plist中常用的key简介
2012-05-20 19:10 927UIRequiresPersistentWiFi 在程序中弹出 ... -
返回 父级 的父级 view
2012-05-09 14:48 907[color=blue]有3个view A,B,C A是第一级 ... -
如何获取view的controller
2012-05-09 14:45 1494[b]如何获取view的controller[/b] ... -
xcode4 svn+ssh
2012-05-04 22:18 11251. Clear the contents of your ~ ... -
多线程的使用与注意事项
2012-03-17 11:20 1268多线程的使用与注意事项 这一回,主要介绍一下iPhone ... -
在程序中使用GPS定位
2012-03-17 10:28 860这一回简单地介绍一下G ... -
开源ZXing在XCode上如何使用
2012-03-17 10:18 9771.在 zxing/iphone/ZXingWidget/里的 ... -
iphone开发随笔,有用的
2012-03-14 20:52 7461.将view设置成圆角 首先导入QuartzCore.fra ... -
iphone开发中发送短信
2012-03-14 20:46 1329iOS4.0新加入了MFMessageComposeViewC ... -
iphone中设置控件语言
2012-03-14 20:40 878最近项目遇到这样一个问题: 发送短信时,发现控件显示的是英 ... -
How to use ZXing(decode qr code) .
2012-03-14 20:26 1276ZXing for iOS is a sub-project ... -
SVN+SSH
2012-03-10 20:00 1116Setup SSH access Go to the cPan ...
相关推荐
本文主要介绍如何在iPhone上使用手机QQ 2013发送电脑上的文件,以及微信和邮件的相关文件管理技巧。 一、手机QQ 2013发送电脑文件 在iPhone上使用手机QQ 2013发送电脑上的文件,首先需要借助第三方工具iTools。...
- 如需同时使用多部iPhone控制同一架AR.Drone,需逐一配对连接。 五、LED颜色含义 不同颜色的LED灯代表AR.Drone的不同状态,例如绿色表示正常运行,红色则可能意味着故障或紧急情况。 六、设置与调试 ### 基本...
源码使用Hbuilder导入插件即可使用。无后端代码。 兼容所有热门终端。小程序,安卓,iOS,H5 完美兼容! ------------------- #### 软件架构 仿iPhone、安卓模拟来电通话功能,支持Android和iOS系统,社交恐惧症...
根据提供的文件内容,以下是关于家庭版智能主机APP使用说明书的详细知识点。 一、运行环境 用户需要了解的是,智能主机APP支持不同版本的Android和iOS操作系统。具体而言,APP兼容Android 4.0及以上版本,以及iOS ...
### 南京物联传感ZigBee智能家居软件_IOS【V5】版本使用说明 #### 一、前言 ##### 1、欢迎使用 欢迎使用南京物联传感技术有限公司提供的ZigBee智能家居软件(IOS V5版)。该软件旨在为用户提供智能化的生活体验,...
该资源是一个名为“黑色大气的iphone app企业官网模板下载_黑色 大气 企业 iphone ...这个模板提供了构建专业企业级iPhone app官网的基础框架,通过合理的定制,可以有效地提升品牌在线形象,并促进app的下载和使用。
- 使用宣传单上的二维码进行下载。 **身份验证:** - 首次使用时需输入手机号码进行验证。 - 系统会自动读取SIM卡中的信息以完成验证过程。 - 若网络连接不佳,则无法完成验证。 **总机通讯录更新:** - 客户端会...
值得注意的是,这款APP目前仅支持iOS系统,所以只有iPhone用户能够使用该蓝牙模块。用户可以通过扫描二维码的方式方便快捷地完成下载和安装。在使用APP时,用户可能需要授予其访问位置信息的权限。这是因为当有来电...
在本文中,我们将深入探讨"Caysn打印机IOS开发包、接口说明文档、打印示例程序_20170717"所涵盖的关键知识点,这将帮助iOS开发者理解和使用Caysn打印机进行应用程序集成。 首先,我们关注的是标题中的"Caysn打印机...
在使用条码大师时,还需要确保手机摄像头功能正常,因为这是扫描条形码和二维码的基础。 总之,移动端下载和安装条码大师的过程并不复杂,用户只需遵循上述步骤,即可在移动设备上实现高效的数据录入和管理。了解...
2. 阅读说明:为了更好地利用软件功能,请用户在使用前仔细阅读此使用说明,了解各项操作流程和注意事项。 3. 产品概述:该软件支持Zigbee协议,能够与南京物联传感的各种智能硬件配合,实现远程控制、定时任务设定...
Acktie Mobile QR Reader Module (iOS) for 2.0 注意:本文档适用于 2.0,允许从视图创建扫描仪。...要开始使用,请查看 Appcelerator 网站上的 [模块安装说明]( tor.com/titanium/2.0/#!/guide/Usin
一、IOS(iPhone/iPad)平台移动终端证书安装说明 1. 获取根证书:用户需要向系统管理员索要根证书,管理员授权后将根证书发送给用户。 2. 安装证书:用户登录邮件,点击邮件中的证书附件开始安装。 3. 确认证书...
- **文档**:详细说明了SDK的功能、使用方法、接口说明、错误处理等,是开发者学习和调试的重要参考资料。 2. **热敏打印技术**: - 热敏打印技术不使用墨水或碳粉,而是利用热敏纸上的特殊涂层,在加热时会发生...
- Edge 820适用于iPhone 4S及更高版本的iOS设备,以及Android 4.3及以上并支持蓝牙4.0的安卓手机。 - 在配对设备前,需确保手机满足上述系统要求,以保证Garmin Connect Mobile APP的正常运行。 2. **下载与安装*...
8. **微信扫描二维码示例**:文档可能通过展示微信扫描二维码的场景,说明响应式网站如何在不同设备上提供一致的交互体验,比如在手机上扫描二维码后,响应式设计能确保网站在小屏幕上也能清晰、方便地使用。...
### 基于iBeacon手机APP智能一卡通管理系统功能参数说明 #### iBeacon技术简介 iBeacon是由苹果公司开发的一种通过低功耗蓝牙技术实现精准微定位的技术。该技术利用蓝牙4.0标准,能够以极低的功耗进行数据传输,...
演示点菜页面只适应了iphone6,使用5寸以上手机,微信扫描二维码,即可进入点菜页面。效果等同于访问网址: 点菜页面如下:备注:因为顾客已经下单,所以此时扫码是加菜模式,在购物车中可以查看已点菜的状态。管理...
在iOS应用开发中,iPad和iPhone的摄像头是十分重要的功能组件,它们允许用户捕捉照片、录制视频,并在各种应用场景中使用这些媒体数据。本教程将深入讲解如何在iPad上实现基础的摄像头读取功能,同时该方法也适用于...