ZXing开辟详解_摇钱树捕鱼注册送分100 

效劳热线:025-86112490/18014487552
以后地位:主页 > 新闻动态 > > ZXing开辟详解

ZXing开辟详解

文章来由:摇钱树捕鱼注册送分100工控人气: 宣布工夫2019-09-10 09:05:50
什么是Z*?
在Android平台做过二维码相干模块的一定都熟知ZXing开源项目,Z*是一个开源Java类库用于剖析多种款式的1D/2D条形码。目的是可以对QR编码、Data Matrix、UPC的1D条形码停止解码。 其提供了多种平台下的客户端包罗:J2ME、J2SE和Android。其GitHub地点是:传送门
 
Z*项目外面代码许多,完成的功用也许多,摇钱树捕鱼注册送分100的使用只需求剥离此中的扫描模块即可,再多一点也便是天生二维码的功用;接上去摇钱树捕鱼注册送分100就一同来精简ZXing项目,终极构成一个小的Demo案例,固然江湖上曾经有过N多种版本的ZXing精简项目,什么横屏改竖屏,绘制扫描界面,开启闪光灯等等,而且很多都是基于ZXing2.3.0来做精简的,后续有很多更新的版本,包罗主动对焦,Camera办理,bug修复等等新功用;笔者运用的是ZXing3.1.0版本,这里需求阐明的便是我的这版Demo相对是江湖下面还没有呈现的,也算是一点点小小的创新把,那便是去除ZXing项目中末路人的ViewFinderView的绘制,运用XML结构扫描界面,添加扫描动画,准确盘算扫描地区
 
克隆Z*项目到当地
1
git clone https://github.com/zxing/zxing.git
整理ZXing代码
翻开ZXing项目标文件夹,可以看到如下文件目次:
 
 
 
此中摇钱树捕鱼注册送分100次要存眷2个文件夹里的内容: 
 
1. core : Z*项目标中心代码,可以新建一个Java工程,然后export成jar来挪用。如下图所示:
 
 
 
免打包即可取得的zxing-3.1.0.jar  猛戳下载 
 
2. android : Android示例工程代码,乐成运转之后便是一个专业的扫码使用了。如下图所示:
 
 
 
免引入免整理的zxing原始工程 ZXingRawProject  猛戳下载
 
但是如许就让你满意了,那怎样可以说是极致二维码扫描呢,有木有觉得ZXing的扫描框的绘制很不爽啊?自界说的View绘制的很丑,多屏幕适配的时分还常常不兼容,原始项目照旧横屏形式的,现在各人都习气竖屏扫描呢。怎样办?别怕,我来通知你,我要将ViewFinderView砍失,运用xml界面结构,添加扫描动画,终极一样精确无误的扫描到二维码数据,只需求瞄准,是的,毫厘不差的瞄准就可以了。
 
精简Z*代码,打造极致扫描
1. 去失Z*中一些和扫描有关的代码,终极留下的代码构造如下图所示,最要害的是你看不到ViewFinderView 了
 
 
 
2. 结构扫描界面,xml代码如下:
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/transparent" 
    android:orientation="vertical" > 
   
    <SurfaceView 
        android:id="@+id/capture_preview" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" /> 
   
    <RelativeLayout 
        android:id="@+id/capture_container" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" > 
   
        <ImageView 
            android:id="@+id/capture_mask_top" 
            android:layout_width="match_parent" 
            android:layout_height="120dp" 
            android:layout_alignParentTop="true" 
            android:background="@drawable/shadow" /> 
   
        <RelativeLayout 
            android:id="@+id/capture_crop_view" 
            android:layout_width="200dp" 
            android:layout_height="200dp" 
            android:layout_below="@id/capture_mask_top" 
            android:layout_centerHorizontal="true" 
            android:background="@drawable/qr_code_bg" > 
   
            <ImageView 
                android:id="@+id/capture_scan_line" 
                android:layout_width="match_parent" 
                android:layout_height="wrap_content" 
                android:layout_alignParentTop="true" 
                android:layout_marginBottom="5dp" 
                android:layout_marginTop="5dp" 
                android:src="@drawable/scan_line" /> 
        </RelativeLayout> 
   
        <ImageView 
            android:id="@+id/capture_mask_bottom" 
            android:layout_width="match_parent" 
            android:layout_height="wrap_content" 
            android:layout_alignParentBottom="true" 
            android:layout_below="@id/capture_crop_view" 
            android:background="@drawable/shadow" /> 
   
        <ImageView 
            android:id="@+id/capture_mask_left" 
            android:layout_width="wrap_content" 
            android:layout_height="match_parent" 
            android:layout_above="@id/capture_mask_bottom" 
            android:layout_alignParentLeft="true" 
            android:layout_below="@id/capture_mask_top" 
            android:layout_toLeftOf="@id/capture_crop_view" 
            android:background="@drawable/shadow" /> 
   
        <ImageView 
            android:id="@+id/capture_mask_right" 
            android:layout_width="wrap_content" 
            android:layout_height="match_parent" 
            android:layout_above="@id/capture_mask_bottom" 
            android:layout_alignParentRight="true" 
            android:layout_below="@id/capture_mask_top" 
            android:layout_toRightOf="@id/capture_crop_view" 
            android:background="@drawable/shadow" /> 
    </RelativeLayout> 
   
</RelativeLayout>
3. 盘算截取地区 知心表明: 假如你没有看上一篇ZBar扫描中关于扫描地区盘算的表明,那赶忙归去,咱不克不及急,看完再来接上,不然你会不睬解的!传送门
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
private void initCrop() { 
    int cameraWidth = cameraManager.getCameraResolution().y; 
    int cameraHeight = cameraManager.getCameraResolution().x; 
   
    /** 获取结构中扫描框的地位信息 */ 
    int[] location = new int[2]; 
    scanCropView.getLocationInWindow(location); 
   
    int cropLeft = location[0]; 
    int cropTop = location[1] - getStatusBarHeight(); 
   
    int cropWidth = scanCropView.getWidth(); 
    int cropHeight = scanCropView.getHeight(); 
   
    /** 获取结构容器的宽高 */ 
    int containerWidth = scanContainer.getWidth(); 
    int containerHeight = scanContainer.getHeight(); 
   
    /** 盘算终极截取的矩形的左上角极点x坐标 */ 
    int x = cropLeft * cameraWidth / containerWidth; 
    /** 盘算终极截取的矩形的左上角极点y坐标 */ 
    int y = cropTop * cameraHeight / containerHeight; 
   
    /** 盘算终极截取的矩形的宽度 */ 
    int width = cropWidth * cameraWidth / containerWidth; 
    /** 盘算终极截取的矩形的高度 */ 
    int height = cropHeight * cameraHeight / containerHeight; 
   
    /** 天生终极的截取的矩形 */ 
    mCropRect = new Rect(x, y, width + x, height + y); 
摇钱树捕鱼注册送分100小尺寸手持终端PDA:6寸windows10操纵零碎,支持一维码、二维码扫描,IP67加固型产业手持机,支持底座通讯、蓝牙手柄、电池可装配,自带wifi蓝牙GPS
此文要害字:此文要害词:

相干资讯

    

    南京摇钱树捕鱼注册送分100信息微信,扫扫有惊喜哦!