成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深度解析iPhone 二維碼使用說(shuō)明

移動(dòng)開(kāi)發(fā) iOS
本文介紹的是深度解析iPhone 二維碼使用說(shuō)明,二維條碼/二維碼能夠在橫向和縱向兩個(gè)方位同時(shí)表達(dá)信息,因此能在很小的面積內(nèi)表達(dá)大量的信息,來(lái)看內(nèi)容。

深度解析iPhone 二維碼使用說(shuō)明是本文要介紹的內(nèi)容,二維碼是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號(hào)信息的。不多說(shuō),我們直接來(lái)奧康納內(nèi)容詳解。

1、二維碼簡(jiǎn)介

二維碼 (2-dimensional bar code) 是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號(hào)信息的;在代碼編制上巧妙地利用構(gòu)成計(jì)算機(jī)內(nèi)部邏輯基礎(chǔ)的“0”、“1”比特流的概念,使用若干個(gè)與二進(jìn)制相對(duì)應(yīng)的幾何形體來(lái)表示文字?jǐn)?shù)值信息,通過(guò)圖象輸入設(shè)備或光電掃描設(shè)備自動(dòng)識(shí)讀以實(shí)現(xiàn)信息自動(dòng)處理: 二維條碼/二維碼能夠在橫向和縱向兩個(gè)方位同時(shí)表達(dá)信息,因此能在很小的面積內(nèi)表達(dá)大量的信息。

2、獲取iphone開(kāi)源代碼工程

http://code.google.com/p/zxing/

首先我們工具上面的地址直接下載開(kāi)源的代碼,詳見(jiàn)圖1

深度解析iPhone 二維碼使用說(shuō)明

下載到本地以后解壓進(jìn)入文件夾可以看到

iphone文件夾-->(在點(diǎn)擊進(jìn)入)

ScanTest(測(cè)試工程) 和 ZXingWidget(連接庫(kù) .a)

3、編譯ZXingWidget并且在工程中調(diào)用

因?yàn)樵?.0以上才有提供獲取攝像頭數(shù)據(jù)的類(lèi) AVCaptureDeviceInput AVCaptureVideoDataOutput類(lèi)等 (這樣我們?cè)?.x上面才能自動(dòng)對(duì)焦對(duì)二維碼進(jìn)行解碼,獲取二維碼的信息)

其中在ZXingWidget靜態(tài)庫(kù)

ZXingWidgetController.h中為我們提供了 HAS_AVFF的判斷開(kāi)關(guān)(默認(rèn)為1)

這樣的話 ZXingWidget 工程只能 選擇 Base SDK 4.0

如圖2

深度解析iPhone 二維碼使用說(shuō)明

下編譯才能通過(guò)

編譯完.a后那打開(kāi)ScanTest工程 一樣選擇 Base SDK 4.0 編譯工程就可以編譯運(yùn)行成功

其中二維碼解碼的調(diào)用可以詳見(jiàn)

RootViewController.mm的文件 可以看到 方法

//此方法就是調(diào)用 調(diào)用攝像頭數(shù)據(jù)自動(dòng)對(duì)焦解碼

  1. - (IBAction)scanPressed:(id)sender  
  2. {  
  3. //此處代碼 詳見(jiàn)工程  
  4. }  
  5. //以下delegate 方法返回 解碼結(jié)果  
  6. #pragma mark ZXingDelegateMethods  
  7.  
  8. - (void)zxingController:(ZXingWidgetController*)controller didScanResult:(NSString *)result  
  9. {  

其實(shí)到這邊為止我們已經(jīng)可以編譯的程序可以在4.x以上的機(jī)子運(yùn)行了

但是這樣只能支持4.x 這里我們難道不能支持3.x的機(jī)子碼?

其實(shí)是可以的但是我們要修改添加一些代碼

首先還是確保  靜態(tài)庫(kù).a和調(diào)用程序 編譯試在 BADE SDK 4.0

但是要在調(diào)用程序如 ScanTest中要修改工程的設(shè)置

如圖3、4

- (IBAction)scanPressed:(id)sender 

- (IBAction)scanPressed:(id)sender

修改完設(shè)置后然后拷貝以下的代碼 替換 原來(lái)

scanPressed的方法

  1. - (IBAction)scanPressed:(id)sender {  
  2. if (NSClassFromString(@"AVCaptureSession") && NSClassFromString(@"AVCaptureVideoPreviewLayer"))  
  3. {  
  4. MLOG(@"__IPHONE_4_0");  
  5. ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO];  
  6. widController.view.backgroundColor = [UIColor blueColor];  
  7. QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];  
  8. NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];  
  9. [qrcodeReader release];  
  10. widController.readers = readers;  
  11. [readers release];  
  12. NSBundle *mainBundle = [NSBundle mainBundle];  
  13. widController.soundToPlay =  
  14. [NSURL fileURLWithPath:[mainBundle pathForResource:@"beep-beep" ofType:@"aiff"] isDirectory:NO];  
  15. [self presentModalViewController:widController animated:YES];  
  16. [widController release];  
  17. }  
  18. else//3.x以下的固件系統(tǒng)*/  
  19. {  
  20. MLOG(@"__IPHONE_3_0");  
  21. UIImagePickerController *pickCtr = [[UIImagePickerController alloc] init];  
  22. pickCtr.sourceType = UIImagePickerControllerSourceTypeCamera;  
  23. pickCtr.delegate = self;  
  24. [self presentModalViewController:pickCtr animated:YES];  
  25. [pickCtr release];  
  26. }  
  27. }  
  28. #pragma mark -  
  29. #pragma mark UIImagePickerControllerDelegate  
  30.  
  31. - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info  
  32. {  
  33. NSLog(@"info ==== %@", info);  
  34. UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];  
  35. QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];  
  36. NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];  
  37. [qrcodeReader release];  
  38. CGRect cropRect = [UIScreen mainScreen].applicationFrame;  
  39. Decoder *d = [[Decoder alloc] init];  
  40. d.readers = readers;  
  41. d.delegate = self;  
  42. int res = [d decodeImage:image];  
  43. MLOG(@"res === %d", res);  
  44. [d release];  
  45. [self dismissModalViewControllerAnimated:YES];  
  46. }  
  47. - (void)decoder:(Decoder *)decoder didDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset withResult:(TwoDDecoderResult *)twoDResult {  
  48. MLOG(@"twoDResult text ==== %@", [twoDResult text]);  
  49. UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:[twoDResult text] message:[twoDResult text] 
  50. delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];  
  51. [alertView show];  
  52. [alertView release];  
  53. }  
  54.  
  55. - (void)decoder:(Decoder *)decoder failedToDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset reason:(NSString *)reason {  
  56. MLOG(@"twoDResult text ==== failedToDecodeImage");  
  57. decoder.delegate = nil;  

這樣在4.0編譯完以后就可以自動(dòng)識(shí)別機(jī)子固件調(diào)用不同的解碼方式了

其中 在4.0以上的我們?cè)囎詣?dòng)對(duì)焦解碼二維碼

在4.0以下的我們?cè)囌{(diào)用照相的功能然后對(duì)拍出來(lái)的圖片進(jìn)行解碼

4、自己模擬二維碼測(cè)試數(shù)據(jù)

我們可以在瀏覽器中輸入

http://chart.apis.google.com/chart?cht=qr&chs=150x150&chl=http://www.hiapk.com

就可以看到看到如圖5所示 google的開(kāi)源二維碼

cht就是代表生成二維碼的類(lèi)型

其中chs代表二維碼生成的大小

chl就是代表二維碼顯示的信息

以上這些信息都可以自己修改(最好不要修改cht 二維碼類(lèi)型)然后用剛才編譯出的程序進(jìn)行測(cè)試

正確的結(jié)果試會(huì)解碼出chl的內(nèi)容

小結(jié):深度解析iPhone 二維碼使用說(shuō)明的內(nèi)容介紹完了,希望本文對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2024-06-26 08:46:45

2013-01-30 12:16:49

二維碼NFC近場(chǎng)通訊

2014-08-27 08:59:28

2023-11-17 09:07:51

.NET生成二維碼識(shí)別二維碼

2017-02-21 09:17:46

二維碼漏洞

2023-11-17 15:44:06

C++庫(kù)生成二維碼

2015-11-09 13:03:47

JavaServlet創(chuàng)建二維碼

2011-12-06 16:40:45

二維碼快拍二維碼靈動(dòng)快拍

2015-01-14 09:46:52

Google API

2011-12-30 17:09:41

二維碼APP靈動(dòng)快拍

2012-04-01 09:53:13

二維碼

2023-12-25 14:53:36

2014-03-05 14:41:55

二維碼登錄

2015-09-24 09:56:19

.NET二維碼

2023-08-08 14:16:07

二維碼開(kāi)發(fā)鴻蒙

2015-10-28 13:33:50

二維碼條形碼掃描源碼

2020-10-08 18:48:02

二維碼安全應(yīng)用安全網(wǎng)絡(luò)攻擊

2024-06-03 10:33:08

2011-11-24 16:00:23

信息圖QR碼二維碼

2025-03-04 09:15:00

惡意軟件網(wǎng)絡(luò)安全郵件釣魚(yú)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 九九热免费视频在线观看 | 亚洲入口 | 美国一级片在线观看 | 国产日韩在线观看一区 | 国产精品毛片一区二区三区 | 国产91在线观看 | 久久成人国产精品 | 中文字幕一区在线观看视频 | 成人在线a | 欧美中国少妇xxx性高请视频 | 1204国产成人精品视频 | 高清视频一区二区三区 | 草久久 | 天天躁日日躁狠狠的躁天龙影院 | 秋霞av国产精品一区 | 日本 欧美 三级 高清 视频 | 久久99精品久久久久久国产越南 | 欧美一区视频在线 | 亚洲精品小视频在线观看 | 九九热精品视频在线观看 | 欧美网站一区二区 | 亚洲一区中文字幕在线观看 | 免费看国产a| 欧美黄色一区 | 色偷偷人人澡人人爽人人模 | 精品免费视频一区二区 | 91精品久久久久久久久久 | 狠狠综合网 | 亚洲国产一区二区三区四区 | 国产成人在线一区二区 | 成人精品一区二区 | 国产色片| 日韩视频在线一区 | 国产精品国产三级国产aⅴ中文 | 国产精品区二区三区日本 | 综合一区| 成人不卡 | 亚洲国产精品成人 | 91精品久久久久久久 | 欧美专区日韩 | 干干天天 |