天天看點

二維碼開源包zxing的jar包的引入

1、解壓BarCodeTest,将該BarCodeTest工程打開之後,将libs下的jar包全部複制在新的工程libs下,然後同步

二維碼開源包zxing的jar包的引入
二維碼開源包zxing的jar包的引入
二維碼開源包zxing的jar包的引入

2、資源檔案中的資料複制在新的工程res下,(layout、raw、values下的ids.xml,依次複制在對應的目錄下)

二維碼開源包zxing的jar包的引入
二維碼開源包zxing的jar包的引入

複制後

二維碼開源包zxing的jar包的引入
二維碼開源包zxing的jar包的引入

3、複制BarCodeTest中res下的values下的colors中的所有顔色全部複制在對應新的工程中的對應的相應的colors檔案中。記住不要去替換。

二維碼開源包zxing的jar包的引入

4、将BarCodeTest中的AndroidManiFest.xml中所有權限複制在新的工程的AndroidManiFest.xml檔案中

二維碼開源包zxing的jar包的引入

直接複制過去就好了

5、複制src目錄下的com下的zxing目錄到新的工程中的java目錄中,記住一定要選擇main/java這個目錄

二維碼開源包zxing的jar包的引入

6、首先,需要修改的目前的錯誤ViewfinderView檔案中的錯誤,直接删除錯誤的導包,讓它自動導入新的包

二維碼開源包zxing的jar包的引入

把灰色的導包删除,然後Android Studio會自動導入正确的包

7、在新的工程中的layout下的camera.xml中去更改ViewfinderView的目錄,去掉com就可以,并删除掉textView裡面的背景錯誤

修改前

二維碼開源包zxing的jar包的引入

修改後

二維碼開源包zxing的jar包的引入

删除掉textView裡面的背景錯誤;

修改前

二維碼開源包zxing的jar包的引入

修改以後

二維碼開源包zxing的jar包的引入

8、打開zxing包下的activity包中CaptureActivity,删除錯誤的導包,然後重新導包,根據錯誤的類,去查找到decoding包下的相應類,然後跟改改類中的錯誤的導包,然後重新導包。依次查找到錯誤的類,然後删除掉錯誤的導包,導入新的包。

可能出現錯誤的類是CaptureActivity--->CaptureActivityHandler-->DecodeThread--->DecodeHandler依次更具錯誤的的類找就好了

(1)删除灰色的錯誤導包、系統會自動導入正确的包

二維碼開源包zxing的jar包的引入

(2)找下一個錯誤類,根據CaptureActivity.java中的錯誤找,找到了錯誤的類CaptureActivityHandler.java

二維碼開源包zxing的jar包的引入

繼續删除錯誤導包,依次修改錯誤類,直到沒有一個類是錯誤的

9、在manifest檔案中添加CaptureActivity的配置、 注意每一個包下的内容都要沒錯誤 ,才算配置成功。  

直接複制過來,如圖

二維碼開源包zxing的jar包的引入

修改如圖

二維碼開源包zxing的jar包的引入

大功告成!!!

附上一些簡單測試代碼,

MainActivity.xml      
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"
    android:orientation="vertical">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:id="@+id/textViewId"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="BarCodeScanner"
        android:text="進入掃描"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editTextId"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/createBarCodeId"
        android:onClick="createBarCode"
        android:text="生成二維碼"/>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageViewId"/>

</LinearLayout>
           
MainActivity.java
       
package com.afang.mybarcodedemo2;

import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

import com.google.zxing.WriterException;

import zxing.activity.CaptureActivity;
import zxing.encoding.EncodingHandler;

public class MainActivity extends AppCompatActivity {
    private TextView textView;
    private ImageView imageView;
    private EditText editText;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = ((TextView) findViewById(R.id.textViewId));
        imageView = ((ImageView) findViewById(R.id.imageViewId));
        editText = ((EditText) findViewById(R.id.editTextId));


    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==0)
        {
            if(data!=null)
            {
                String result = data.getStringExtra("result");
                textView.setText(result);
            }
        }
    }

    /**
     * 跳轉到掃描頁面
     * @param view
     */
    public void BarCodeScanner(View view) {
        startActivityForResult(new Intent(this, CaptureActivity.class),0);
    }

    /**
     * 生成二維碼
     * @param view
     */
    public void createBarCode(View view) {
        String content = editText.getText().toString().trim();
        if(content!=null&&content.length()>0)
        {
            try {
                /**
                 * 第一個參數:生成二維碼内容的字元串
                 * 第二個參數:二維碼的寬,高
                 */
                Bitmap qrCodeBitmap = EncodingHandler.createQRCode(content,500);
                if(qrCodeBitmap!=null)
                {
                    imageView.setImageBitmap(qrCodeBitmap);
                }
            } catch (WriterException e) {
                e.printStackTrace();
            }
        }
    }
}