iOS开发笔记--自定义Zbar扫描界面

作者:朱克锋

邮箱:zhukefeng@iboxpay.com

转载请注明出处:http://blog.csdn.net/linux_zkf

这个简单的实例实在ZBarReaderViewControllerview层上再加一层用于定义自己的界面


- (void)QRscan

{

    ZBarReaderViewController *reader = [ZBarReaderViewController new];

    reader.readerDelegate = self;

//非全屏

    reader.wantsFullScreenLayout = NO;

    //隐藏底部控制按钮

    reader.showsZBarControls = NO;    

//设置自己定义的界面

    [self setOverlayPickerView:reader];

    ZBarImageScanner *scanner = reader.scanner;

   [scanner setSymbology: ZBAR_I25

                   config: ZBAR_CFG_ENABLE

                       to: 0];

    [self presentModalViewController: reader

                            animated: YES];

    [reader release];

}

- (void)setOverlayPickerView:(ZBarReaderViewController *)reader

{

//清除原有控件

    for (UIView *temp in [reader.view subviews]) {        

        for (UIButton *button in [temp subviews]) {

            if ([button isKindOfClass:[UIButton class]]) {                

                [button removeFromSuperview];               

            }

        }        

        for (UIToolbar *toolbar in [temp subviews]) {               

            if ([toolbar isKindOfClass:[UIToolbar class]]) {                

                [toolbar setHidden:YES];

                [toolbar removeFromSuperview];

            }

        }

    }

    //画中间的基准线

    UIView* line = [[UIView alloc] initWithFrame:CGRectMake(40, 220, 240, 1)];

    line.backgroundColor = [UIColor redColor];

    [reader.view addSubview:line];

    [line release];   

//最上部view

    UIView* upView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 80)];

    upView.alpha = 0.3;

    upView.backgroundColor = [UIColor blackColor];

    [reader.view addSubview:upView];

    //用于说明的label

    UILabel * labIntroudction= [[UILabel alloc] init];

    labIntroudction.backgroundColor = [UIColor clearColor];

    labIntroudction.frame=CGRectMake(15, 20, 290, 50);

    labIntroudction.numberOfLines=2;   

    labIntroudction.textColor=[UIColor whiteColor];

    labIntroudction.text=@"将二维码图像置于矩形方框内,离手机摄像头10CM左右,系统会自动识别。";

    [upView addSubview:labIntroudction];

    [labIntroudction release];

    [upView release];    

//左侧的view

    UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 80, 20, 280)];

    leftView.alpha = 0.3;

    leftView.backgroundColor = [UIColor blackColor];

    [reader.view addSubview:leftView];

    [leftView release];

//右侧的view  

    UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(300, 80, 20, 280)];

    rightView.alpha = 0.3;

    rightView.backgroundColor = [UIColor blackColor];

    [reader.view addSubview:rightView];

    [rightView release];   

    //底部view

    UIView * downView = [[UIView alloc] initWithFrame:CGRectMake(0, 360, 320, 120)];

    downView.alpha = 0.3;

    downView.backgroundColor = [UIColor blackColor];

    [reader.view addSubview:downView];

    [downView release];           

    //用于取消操作的button

    UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];    

    cancelButton.alpha = 0.4;

    [cancelButton setFrame:CGRectMake(20, 390, 280, 40)]; 

    [cancelButton setTitle:@"取消" forState:UIControlStateNormal];

    [cancelButton.titleLabel setFont:[UIFont boldSystemFontOfSize:20]];

    [cancelButton addTarget:self action:@selector(dismissOverlayView:)forControlEvents:UIControlEventTouchUpInside];

    [reader.view addSubview:cancelButton];

}

//取消button方法

- (void)dismissOverlayView:(id)sender{ 

    [self dismissModalViewControllerAnimated: YES];

}


### 回答1: 要在Android应用程序中使用bga-qrcode-zbar库,可以按照以下步骤进行操作: 1. 在项目根目录的build.gradle文件中添加以下代码: ``` allprojects { repositories { maven { url 'https://jitpack.io' } } } ``` 2. 在app模块的build.gradle文件中添加以下依赖项: ``` dependencies { implementation 'com.github.yipianfengye:zbar:1.9.8' implementation 'cn.bingoogolapple:bga-qrcode-zbar:1.2.6' } ``` 3. 在代码中使用BGAQRCodeUtil类来生成和扫描二维码。例如,以下代码将生成一个包含指定字符串的二维码并显示在ImageView中: ``` String content = "https://www.example.com"; ImageView imageView = findViewById(R.id.image_view); BGAQRCodeUtil.setImageViewQRCodeWithLogo(this, imageView, content, BitmapFactory.decodeResource(getResources(), R.drawable.logo)); ``` 希望这可以帮助你成功使用bga-qrcode-zbar库。 ### 回答2: 要在Android中使用bga-qrcode-zbar库,首先需要在项目的build.gradle文件中添加以下依赖项: ``` dependencies { implementation 'cn.bingoogolapple:bga-qrcode-zbar:latestVersion' } ``` 然后,在需要使用二维码扫描的Activity中,先在布局文件中添加一个SurfaceView,用于显示相机预览,并在代码中初始化和使用扫描功能。 1. 在布局文件中添加SurfaceView: ```xml <SurfaceView android:id="@+id/sv_qrcode" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 2. 在Activity中进行初始化和使用: ```java public class QRCodeScanActivity extends AppCompatActivity implements BGAQRCodeUtil.Delegate { private SurfaceView mSurfaceView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_qrcode_scan); mSurfaceView = findViewById(R.id.sv_qrcode); // 初始化扫描工具类 BGAQRCodeUtil.setDelegate(this); } @Override protected void onResume() { super.onResume(); // 打开相机并进行预览 BGAQRCodeUtil.onResume(this); } @Override protected void onPause() { super.onPause(); // 关闭相机预览并释放资源 BGAQRCodeUtil.onPause(this); } @Override protected void onDestroy() { super.onDestroy(); // 释放资源 BGAQRCodeUtil.onDestroy(this); } // 扫描结果回调 @Override public void onScanQRCodeSuccess(String result) { // 扫描成功后的处理逻辑 } // 扫描出错回调 @Override public void onScanQRCodeOpenCameraError() { // 打开相机出错的处理逻辑 } } ``` 这样,你就可以在Android应用中使用bga-qrcode-zbar库提供的功能了。记得在AndroidManifest.xml中添加相机权限:`<uses-permission android:name="android.permission.CAMERA" />`。 ### 回答3: 在Android中引用bga-qrcode-zbar的代码需要按照以下步骤进行操作: 1. 首先,在项目的build.gradle文件中的dependencies中添加以下代码依赖: ``` implementation 'cn.bingoogolapple:bga-qrcode-zbar:2.2.8' implementation 'cn.bingoogolapple:bga-qrcode-core:2.2.8' ``` 2. 然后,在布局文件的合适位置添加BGAQRCodeCaptureView控件,例如: ``` <cn.bingoogolapple.qrcode.zbar.ZBarView android:id="@+id/zbarview" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 3. 在Activity或Fragment中,找到控件并初始化: ``` private ZBarView mZBarView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mZBarView = findViewById(R.id.zbarview); } @Override protected void onResume() { super.onResume(); mZBarView.startCamera(); mZBarView.startSpot(); } @Override protected void onPause() { super.onPause(); mZBarView.stopCamera(); } @Override protected void onDestroy() { super.onDestroy(); mZBarView.onDestroy(); } ``` 4. 最后,在AndroidManifest.xml文件中添加摄像头的权限: ``` <uses-permission android:name="android.permission.CAMERA" /> ``` 现在你可以在Android应用中使用bga-qrcode-zbar库了,它提供了扫描二维码的功能。为了更好的体验,在使用该库之前,你需要检查设备是否有摄像头,并且在需要的时候请求相机权限。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值