1. 程式人生 > >簡單使用系統的裝置實現二維碼掃描

簡單使用系統的裝置實現二維碼掃描

這裡我用了系統的東西簡單的實現了一下掃描二維碼

.h

#import <UIKit/UIKit.h>

#import <AVFoundation/AVFoundation.h>

@interface saoMiaoViewController : UIViewController

@property(nonatomic,retain) UIView * sanRectView;

//硬體裝置

@property(nonatomic,retain) AVCaptureDevice * device;

//輸入裝置

@property(nonatomic,retain) AVCaptureDeviceInput

* input;

//輸出裝置

@property(nonatomic,retain) AVCaptureMetadataOutput * outPut;

//橋樑。連結輸入和輸出裝置

@property(nonatomic,retain)AVCaptureSession * session;

@property(nonatomic,retain)AVCaptureVideoPreviewLayer * preView;

@end


接下來看.m檔案

@interfacesaoMiaoViewController ()<AVCaptureMetadataOutputObjectsDelegate

>

@end

@implementation saoMiaoViewController

- (void)viewDidLoad {

    [superviewDidLoad];

// Do any additional setup after loading the view.

self.title = @"進入連線";

CGSize windowSize = [UIScreenmainScreen].bounds.size;

CGSize scanSize = CGSizeMake(windowSize.width*3/5, windowSize.width * 3/5);

CGRect scanRect = CGRectMake( ((windowSize.height-scanSize.height)/2)/windowSize.height,((windowSize.width-scanSize.width)/2)/windowSize.width,  (scanSize.height+10)/windowSize.height,(scanSize.width + 10)/windowSize.width);

self.device = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo];

self.input = [AVCaptureDeviceInputdeviceInputWithDevice:self.deviceerror:nil];

self.outPut = [[AVCaptureMetadataOutputalloc] init];

    [self.outPutsetMetadataObjectsDelegate:selfqueue:dispatch_get_main_queue()];

self.session = [[AVCaptureSessionalloc] init];

    [self.sessionsetSessionPreset:([UIScreenmainScreen].bounds.size.height<500)?AVCaptureSessionPreset640x480:AVCaptureSessionPresetHigh];

    [self.sessionaddInput:self.input];

    [self.sessionaddOutput:self.outPut];

self.outPut.metadataObjectTypes[email protected][AVMetadataObjectTypeQRCode];

self.preView = [AVCaptureVideoPreviewLayerlayerWithSession:self.session];

self.preView.videoGravity = AVLayerVideoGravityResizeAspectFill;

self.preView.frame = [UIScreenmainScreen].bounds;

self.preView.backgroundColor = [UIColorcolorWithRed:1 green:1 blue:1 alpha:0.7].CGColor;

    [self.view.layerinsertSublayer:self.preViewatIndex:0];

self.sanRectView = [UIViewnew];

    [self.viewaddSubview:self.sanRectView];

self.sanRectView.frame = CGRectMake(0, 0, scanSize.width, scanSize.height);

self.sanRectView.center = CGPointMake(CGRectGetMidX([UIScreenmainScreen].bounds), CGRectGetMidY([UIScreenmainScreen].bounds));

self.sanRectView.layer.borderColor = [UIColorwhiteColor].CGColor;

self.sanRectView.layer.borderWidth = 2;

self.outPut.rectOfInterest =scanRect;

//開始捕獲

    [self.sessionstartRunning];

}

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

{

if ( (metadataObjects.count==0) )

    {

return;

    }

if (metadataObjects.count>0) {

        [self.sessionstopRunning];

AVMetadataMachineReadableCodeObject *metadataObject = metadataObjects.firstObject;

SendUrlViewController * send = [[SendUrlViewControlleralloc] init];

        send.nameUrl = metadataObject.stringValue;

        [self.navigationControllerpushViewController:send animated:YES];

    }

}

此文純屬個人為了記憶而寫。當然要是能幫到別人當然也很開心了A.A


相關推薦

簡單使用系統裝置實現掃描

這裡我用了系統的東西簡單的實現了一下掃描二維碼 .h #import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> @interface saoMiaoViewController :

使用系統提供的AVFoundation 實現掃描(帶動畫)

注意這裡的掃描必須真機測試 模擬器上是看不出來效果的 #import "ViewController.h" #import <AVFoundation/AVFoundation.h> @interface ViewController ()<AVCa

簡單實現掃描

文章是我轉載的哦,一片楓葉_劉超大神寫的好棒,謝謝分享,原文地址http://blog.csdn.net/qq_23547831/article/details/52037710#reply 本文將講解一下我最近寫的一個快速整合二維碼掃描庫,這裡需要說明的是其核心的實現

使用系統的AVMetadataObject類實現掃描

前言 有關二維碼的介紹,我這裡不做過多說明, 可以直接去基維百科檢視,附上鍊接QR code. IOS7之前,開發者進行掃碼程式設計時,一般會藉助第三方庫。常用的是ZBarSDKa和ZXingObjC,IOS7之後,系統的AVMetadataObject類中,為我們提供

實現掃描

首先app頁面 public class MyApp extends Application{ @Override public void onCreate() { super.onCreate(); ZXingL

Xamarin.Android-用ZXing實現掃描以及連續掃描

一、前言 本文的內容有兩個基礎:ZXing.Net和ZXing.Net.Mobile ZXing.Net:ZXing的C#實現,主要封裝了各種二維碼的編碼、解碼等跨平臺的演算法 ZXing.Net.Mobile:對ZXing.Net在xamarin的應用進行了封裝,主要實現了攝像頭掃描、掃描view、掃

Android實現掃描功能(三)-閃光燈控制

簡介 本篇我們對光線暗淡情況下閃光燈的使用做出介紹。 效果 晚上測試時: 開燈後: 未開燈: 實現步驟 1、在activity_scanner.xml介面上加上閃光燈開關按鈕。可以是Button、Checkbox等控制元件。

Android實現掃描登入網頁

    之前寫過一個二維碼掃描demo,用的Zxing的框架,點選下載,後續掃描二維碼中出現一些問題,比如解決壓縮圖片,調整掃描視窗大小等等。後續單位要求做掃描登入實現,發現難點就是怎麼知道你掃描的是

iOS開發——系統原生的掃描

對於現在的App應用來說,掃描二維碼這個功能是再正常不過的一個功能了,在早期開發這些功能的時候,大家或多或少的都接觸過ZXing和ZBar這類的第三方庫,但從iOS7以後,蘋果就給我們提供了系統原生的API來支援我們掃描獲取二維碼,ZXing和ZBar在使用中或多或少有不盡如人意的地方,再之停止更新很久了

Android開發之Zbar實現掃描功能

前言: 在寫這篇文章之前已經寫過兩篇關於二維碼功能的文章,有興趣的可以看看——》文章1:Android開發之利用ZXing庫實現二維碼的掃描;文章2:Android開發之利用ZXing庫實現二維碼的生成,這兩篇文章中使用到的二維碼生成庫是ZXing,在本篇

Android實現掃描功能()-ZXing個性化與近距離識別優化

簡介 本篇我們對掃碼介面進行優化,並對ZXing近距離無法識別的問題做出優化。 個性化定製 每個APP都有自己的表現形式,實現個性化掃碼介面定製,主要有兩個地方: activity_scanner.xml介面檔案 com.google.zxin

Android實現掃描(仿微信,輕量Zxing)

前言 要做一個功能,二維碼識別。網上找一堆相關的Demo,但是總不是想要的效果,或者都是多年前的版本,權衡考慮之後,決定親自操刀。不糾結直接選中Zxing框架,https://github.com/zxing/zxing 在網站上直接clone下來,執行,然後就發現問題了.

React Native實現掃描

依賴包匯入步驟 詳細步驟可看github上的說明,簡要記錄如下: 1. npm install react-native-camera –save 2. react-native link react-native-camera android手動l

使用開原始碼實現掃描和生成

把BarCodeTest導到ADT中,然後建立自己的工程TestQRcode,並關聯BarCodeTest.在TestQRcode工程配置檔案中新增許可權 <uses-permission android:name="android.permis

ios-實現掃描功能

在此就簡單的介紹下二維碼掃描功能的實現把 首先先說下思路,我們需要去配置的就是   1、輸入裝置(用來獲取外界資訊),輸入裝置有攝像頭、麥克風、鍵盤   2、輸出裝置(將收集到的資訊進行解析去獲取收到的內容)   3、會話的session(用來連線輸入和輸出的裝置),不然的

Google zxing實現掃描完美解決方案

最近因專案需求,需要在App中整合二維碼掃描的功能。網上找了很多資料,最後決定使用Google的zxing來實現。實現的過程遇到了很多的坑,也是因為這些坑在網上沒有具體的解決方案,今天就把我的實現過程分享給大家。 我會分為兩步來和大家分享: (1)專案中如何整合zxing

iOS使用ZBar實現掃描以及實現識別相簿中圖片功能

使用zbar呼叫相機掃碼程式碼: //開啟相機 - (void) init_camera { self.navigationController.navigationBarHidden=YES;     [commonaddNavigationAddToView:

web/html5呼叫攝像頭實現掃描

閒話不說,直接上程式碼,本人測試通過! html/js <!DOCTYPE html> <html><head> <title>HTML5 code Reader</title> <meta http-

Android記錄貼:使用ZXing來實現掃描

參考資料 前言 最近一個專案需要用到掃描二維碼的功能,在網上查了一下,都是使用google的ZXing開源庫來實現的 第一步:匯入依賴 匯入依賴包,目前最新的是3.3.2,可以通過這裡來檢視最新版本 implementation 'com.go

使用依賴(ZXing)簡單實現掃描和生成

一個簡單的佈局 第一步:新增依賴 //二維碼依賴 implementation 'cn.yipianfengye.android:zxing-library:2.1' 這時候你要新增進去的話會有一個版本衝突,下面解決V4、V7版本衝突 //解決V4、V7版本衝突