001.作为一个菜鸟,在实现二维码扫描时耗时良久,爬过很多坑庆幸终于得带了解决,得益于慕课网的视频,主要也是精简Zxing的二维码打包为第三方库,直接引入自己项目!总之菜鸟们的福利来了,70多行代码量完成二维码的扫描识别和生成,废话不多说先上项目开发之前的资源:
00a.eclipse的第三方架包 jar包下载地址
00b. 第三方库文件地址 精简之后的代码文件 (下载的为as代码,直接选择有用的导入ec即可)
00c. 先上效果图看看 : 欢迎交流学习
002.将下载的jar包导入libs项目,将下载的第三方库文件解压缩,复制java目录下的文件到自己新建的项目src下(因为我的包名有com,所以目录选取的com后面的,根据自己的选择),按图操作
003.开始新建自己的项目,之后配置清单文件,如下:
android:versionCode="1"
android:versionName="1.0" >
android:targetSdkVersion="18" />
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:label="@string/app_name" >
布局文件:
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_margin="10dp"
tools:context=".MainActivity" >
004.直接开始编写代码:
public class MainActivity extends Activity {
//初始化控件
private TextView mTvResult;//解析的二维码结果
private EditText mInput;//输入要生成的二维码文本
private ImageView mImg;//显示生成的二维码
private CheckBox mLogo;//是否添加Logo选项
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTvResult=(TextView)findViewById(R.id.resultId);
mInput=(EditText)findViewById(R.id.editId);
mImg=(ImageView)findViewById(R.id.imgId);
mLogo=(CheckBox)findViewById(R.id.checkId);
}
/*-------------------------------------------- 解析二维码 -------------------------------------*/
/** 点击按钮时通过第三方解析二维码*/
public void doClick(View v){
//接收CaptureActivity返回的数据,显示在我们的Activity
startActivityForResult(new Intent(MainActivity.this,CaptureActivity.class), 0);//resultCode:默认值0
}
/**有了startActivityForResult,就需要重写此方法获取CaptureActivity返回的数据*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//判断返回码是否成功
if(resultCode==RESULT_OK){
Bundle bundle=data.getExtras();//返回的数据都是存储在Intent data中
//根据扫描时存的key取值(CaptureActivity中)
/*
* //二维码的数据是对一串文本的编码,所以扫描的二维码返回也是一串文本,可以是真实的String或者url地址,
* 都可以转化为文本储存
*/
String result=bundle.getString("result");
Log.i("Info", result);
//显示扫描的结果
mTvResult.setText(result);
}
}
/*-------------------------------------------- 生成二维码 -------------------------------------*/
//点击生成二维码
/**二维码可以放置logo是因为:二维码的高容错性,编码具有一定的纠错性,覆盖一部分一样可以解码*/
public void doClick1(View v){
//点击按钮获取输入的内容
String input=mInput.getText().toString();
if(input.equals("")){
Toast.makeText(MainActivity.this, "输入不能为空!!!", 0).show();
}else{//生成二维码
//参数:1.content:我们输入的文字 2.widthPix:二维码宽度 500 3.heightPix:二维码高度 500 4.logoBm:二维码中间的logo
Bitmap bitmap=EncodingUtils.createQRCode(input, 500, 500,
mLogo.isChecked() ? BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher) : null);//三目定理需要Logo时自己设置,null 不设置logo
//将生成的二维码显示出来
mImg.setImageBitmap(bitmap);
}
}
}