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

2、資源檔案中的資料複制在新的工程res下,(layout、raw、values下的ids.xml,依次複制在對應的目錄下)
複制後
![]()
二維碼開源包zxing的jar包的引入 ![]()
二維碼開源包zxing的jar包的引入
3、複制BarCodeTest中res下的values下的colors中的所有顔色全部複制在對應新的工程中的對應的相應的colors檔案中。記住不要去替換。
4、将BarCodeTest中的AndroidManiFest.xml中所有權限複制在新的工程的AndroidManiFest.xml檔案中
直接複制過去就好了
5、複制src目錄下的com下的zxing目錄到新的工程中的java目錄中,記住一定要選擇main/java這個目錄
6、首先,需要修改的目前的錯誤ViewfinderView檔案中的錯誤,直接删除錯誤的導包,讓它自動導入新的包
把灰色的導包删除,然後Android Studio會自動導入正确的包
7、在新的工程中的layout下的camera.xml中去更改ViewfinderView的目錄,去掉com就可以,并删除掉textView裡面的背景錯誤
修改前
修改後
删除掉textView裡面的背景錯誤;
修改前
修改以後
8、打開zxing包下的activity包中CaptureActivity,删除錯誤的導包,然後重新導包,根據錯誤的類,去查找到decoding包下的相應類,然後跟改改類中的錯誤的導包,然後重新導包。依次查找到錯誤的類,然後删除掉錯誤的導包,導入新的包。
可能出現錯誤的類是CaptureActivity--->CaptureActivityHandler-->DecodeThread--->DecodeHandler依次更具錯誤的的類找就好了
(1)删除灰色的錯誤導包、系統會自動導入正确的包
(2)找下一個錯誤類,根據CaptureActivity.java中的錯誤找,找到了錯誤的類CaptureActivityHandler.java
繼續删除錯誤導包,依次修改錯誤類,直到沒有一個類是錯誤的
9、在manifest檔案中添加CaptureActivity的配置、 注意每一個包下的内容都要沒錯誤 ,才算配置成功。
直接複制過來,如圖
修改如圖
大功告成!!!
附上一些簡單測試代碼,
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();
}
}
}
}