1、解压BarCodeTest,将该BarCodeTest工程打开之后,将libs下的jar包全部复制在新的工程libs下,然后同步
2、资源文件中的数据复制在新的工程res下,(layout、raw、values下的ids.xml,依次复制在对应的目录下)
复制后
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.javapackage 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(); } } } }