关闭

集成ZXing二维码第三方库的使用和常见错误问题解析和步骤

标签: ZXing二维码错误ZXing集成问题二维码生成二维码和解析Zxing兼容问题
2054人阅读 评论(0) 收藏 举报
分类:

    由于原生的比较大所以就参考精简的ZXing,基本能满足开发中使用:

生成与解析主要引用参考一片枫叶这:

https://github.com/yipianfengye/android-zxingLibrary

集成到项目中后一般会出现以下的问题:

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : Attribute application@name value=(com.example.zsh.zxingtestscan.global.MyApplication) from AndroidManifest.xml:7:9-45
is also present at [cn.yipianfengye.android:zxing-library:1.8] AndroidManifest.xml:23:9-58 value=(com.uuzuche.lib_zxing.ZApplication).
Suggestion: add 'tools:replace="android:name"' to <application> element at AndroidManifest.xml:6:5-20:19 to override.

详细步骤和集成问题解决有一下两种方案。

第一种gradle集成:

As的集成地址compile 'cn.yipianfengye.android:zxing-library:1.8',但是会出现一些问题。

1.application公用字段问题。一般项目都会定义一个application类来初始化信息。需要在application中添加一下语句

tools:replace="android:name"

log或者tools:replace="android:name,android:icon"log提示什么加什么还有可能出现sdk版本不一致兼容问题,但网上说的好像自己没碰见过这问题。


2.第一个问题解决完但是在扫描二维码还是会出现应用退出问题:

所以要在自己的application类里面

重写下面的方法主要是初始化屏幕资源像素等转化问题:

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        initDisplayOpinion();
    }

    /**
     * 这是初始化二维码扫描的信息
     */
    private void initDisplayOpinion() {
        DisplayMetrics dm = getResources().getDisplayMetrics();
        DisplayUtil.density = dm.density;
        DisplayUtil.densityDPI = dm.densityDpi;
        DisplayUtil.screenWidthPx = dm.widthPixels;
        DisplayUtil.screenhightPx = dm.heightPixels;
        DisplayUtil.screenWidthDip = DisplayUtil.px2dip(getApplicationContext(), dm.widthPixels);
        DisplayUtil.screenHightDip = DisplayUtil.px2dip(getApplicationContext(), dm.heightPixels);
    }
}
 

第二种(下载库手动来集成,推荐,es&as集成,能最大程度上解决个版本的兼容信息问题)

详细步骤:

1.将项目中的lib-zxing中的src/main/java/com/uuzuche/下的lib_zxing拷贝到自己项目中对应的包内,然后按提示错误点击相关的类并删除导入信息并自动生成。

2.libs文件下的zxing.jar添加到项目中。

3.AndroidManifest.xml中的权限。

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
 
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
 
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />

  <activity
            android:configChanges="orientation|keyboardHidden"
            android:name="com.uuzuche.lib_zxing.activity.CaptureActivity"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="stateAlwaysHidden"
            android:theme="@style/Theme.AppCompat.NoActionBar"
            ></activity>

添加自己项目中的AndroidManifest.xml文件中,并修改activity中对应的位置。或者改变theme版本的兼容问题。

4. lib-zxing资源res文件夹下对应的文件或文件夹拷贝对项目中对应的位置。

5. 打开开源库中ZApplication.java下的初始化屏幕资源像素方法初始化到自己项目中的application类中(就是文章前面的那些初始化代码)

6. 删除ZApplication.java文件。手动集成的方法不用去application符里面添加什么,这样就哦了大笑

   

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3938次
    • 积分:114
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条