Android实现一维二维码扫描生成功能(一)-zxing导入现有项目

前言

目前二维码扫描功能很流行也非常成熟了,而zxing项目也是目前可以说是最流行的二维码扫描方面的开源项目很多大神都对zxing进行了封装,github上也有很多好用的二维码开源库,但是我更喜欢原版的zxing开源库,而原版zxing导入比较麻烦,很多新人要导入很久,关键是还不一定导入的对。我在网上搜索了很久也没有一篇完整的可参考文章。下面总结导入方式,希望对大家有所帮助。

一、下载zxing源码

        1.zxing开源地址:https://github.com/zxing/zxing

笔者当前操作zxing版本为zxing-3.5.1

        2.下载zip源码

图1

        3.解压zip

图2

我们只关注其中的androidandroid-core两个文件夹

二、在现有项目创建文件夹及文件复制

        1.文件夹创建

在现有项目根目录(local.properties或者settings.gradle或app文件夹所在目录)创建zxing文件夹,在zxing文件夹中创建src文件夹,在src文件夹中创建main文件夹,在main文件中创建java文件夹,文件夹结构如下图(其中testzxing为已有项目根目录)

图3

   2.复制android文件夹下源码

打开图2中的android文件夹,如图5

图5 解压后的zxing的android文件夹内容

将pom.xml及proguard.cfg文件复制到图3的zxing目录下,复制后如下图

图6 已有项目zxing文件夹

复制图5中res和assets文件夹及AndroidManifest.xml到已有项目新建的main文件夹下,复制后如图7

图7 复制后已有项目的main文件夹

打开图5中的src文件夹,将com文件夹复制到已有项目新建的java文件夹下,复制后如图8

图8 复制后的已有项目java文件夹

  3.复制下载解压后的android-core文件夹内唯一的一个源码文件

复制CameraConfigurationUtils.java到已有项目对应的camera文件夹下,复制后如图9

图9 复制CameraConfigurationUtils.java文件

4.文件复制结束

三、导入zxing依赖包及将zxing改为库模式

在已有项目的zxing目录下,新建build.gradle文件,内容填写如下

plugins {

    id 'com.android.library'  //库模式

    id 'kotlin-android'

}

android {

    compileSdk 32  //改成和已有项目一致

    defaultConfig {

        minSdkVersion 16  //改成和已有项目一致

        targetSdkVersion 30  //改成和已有项目一致



        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

        consumerProguardFiles "consumer-rules.pro"

    }

    buildTypes {

        release {

            minifyEnabled false

            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

        }

    }

    dependencies {

        //zxing的core库,不编译下载的core库,直接引用

        implementation "com.google.zxing:core:3.5.1"

        //zxing

        implementation "com.google.zxing:zxing-parent:3.5.1"

    }

}

 

四、AndroidManifest.xml文件修改

1.删除

<intent-filter>

        <action android:name="android.intent.action.MAIN"/>

        <category android:name="android.intent.category.LAUNCHER"/>

      </intent-filter>

2.删除logo,防止编译后和主项目冲突,或者编译合并出错

android:icon="@drawable/launcher_icon"

android:logo="@drawable/launcher_icon"

android:label="@string/app_name"

      3.修改横竖屏

<activity android:name=".CaptureActivity"

          android:screenOrientation="sensorLandscape"

改成

<activity android:name=".CaptureActivity"

              android:screenOrientation="sensorPortrait"

五、将zxing加入已有项目的dependency

在AndroidStudio的 文件-项目结构中添加依赖,选Module Dependency,将前面复制好的zxing项目加入依赖,如图10

图10 已有项目加入zxing依赖

六、编译排错

重新编译项目,会报R文件错误,如图11

不用担心,根据提示点击进去你会发现所有报错的地方都有一个共同点,那就是都用了switch语句,然后你要做的就是将所有的switch语句换成if语句就可以了。

七、导入完成,测试

至此zxing就导入到你的项目中去了,在自己的应用中启动CaptureActivity就可以进行扫描了。

看看能否在主项目中调用zxing module 的 CaptureActivity

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tvMain = (TextView) findViewById(R.id.tv_main);
    tvMain.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.tv_main:
        Intent intent = new Intent(this, CaptureActivity.class);
        startActivityForResult(intent, 1);
    break;
    }
}

证明我们的zxing 导入成功了。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android Studio中使用二维码扫描生成功能需要借助zxing.jar包。zxing是一个开源的二维码处理库,可以实现二维码的扫描生成。 首先,我们需要将zxing.jar包添加到我们的Android Studio项目中。可以通过两种方式来导入这个库。一种方式是将zxing.jar包拷贝到app/libs目录下,然后在build.gradle文件中添加依赖。另一种方式是通过在build.gradle文件的dependencies中添加远程依赖来导入库。如下所示: ``` dependencies { implementation 'com.google.zxing:core:3.4.1' } ``` 导入zxing.jar包后,我们就可以使用其中的类和方法来实现二维码的扫描生成。 要实现二维码的扫描功能,我们可以使用IntentIntegrator类。在需要扫描二维码的地方,调用IntentIntegrator的initiateScan方法即可启动扫描界面。扫描结果可以通过onActivityResult方法来获取。可以参考下面的代码片段: ``` IntentIntegrator integrator = new IntentIntegrator(this); integrator.setCaptureActivity(CustomCaptureActivity.class); //自定义扫描界面 integrator.setOrientationLocked(false); integrator.initiateScan(); @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if (result != null) { if (result.getContents() == null) { //扫描取消 } else { String content = result.getContents(); //获取扫描结果 } } } ``` 要实现二维码的生成功能,我们可以使用MultiFormatWriter类和BitMatrix类。我们可以通过调用MultiFormatWriter的encode方法来生成BitMatrix,然后将BitMatrix转换成Bitmap。可以参考下面的代码片段: ``` MultiFormatWriter writer = new MultiFormatWriter(); try { BitMatrix bitMatrix = writer.encode(content, BarcodeFormat.QR_CODE, width, height); int[] pixels = new int[width * height]; for (int y = 0; y < height; y++) { int offset = y * width; for (int x = 0; x < width; x++) { pixels[offset + x] = bitMatrix.get(x, y) ? Color.BLACK : Color.WHITE; } } Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); bitmap.setPixels(pixels, 0, width, 0, 0, width, height); imageView.setImageBitmap(bitmap); //在ImageView中显示生成的二维码 } catch (WriterException e) { e.printStackTrace(); } ``` 通过以上步骤,我们就可以在Android Studio中实现二维码的扫描生成功能了。注意,在使用zxing库的时候,我们需要添加相关的权限,如相机权限等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值