二维码现在越来越火爆,使用的越发广泛,对于二维码二维码的生成与解析,有多种途径,这里我选择用google老大的ZXing。
1.要导入架包,添加依赖
2.写简单的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.bwie.erweima.MainActivity">
<Button
android:text="开始扫描"
android:onClick="start"
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv"
android:text="扫描的结果是:"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<EditText
android:ems="20"
android:id="@+id/ed"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:onClick="sc"
android:text="生成二维码"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
3.代码
public class MainActivity extends AppCompatActivity {
private TextView tv;
private EditText ed;
private ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取控件
tv = findViewById(R.id.tv);
ed = findViewById(R.id.ed);
iv = findViewById(R.id.iv);
}
//开始扫描按钮的监听事件
public void start(View v){
//开启意图,进行跳转,跳转的是架包类
Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
//开启回跳
startActivityForResult(intent,1);
}
//生成二维码按钮的监听
public void sc(View v){
//获取输入框的内容
String s = ed.toString();
//把drawablet图片转成Bitmap
Resources res = getResources();
Bitmap b = BitmapFactory.decodeResource(res,R.drawable.a_07);
//调取架包类生成二维码的方法
//参数1.文字字符串,2.宽3.高4.生成二维码里面的Logo
Bitmap bitmap = EncodingUtils.createQRCode(s, 200, 200, b);
//把获取的二维码图片赋值给imageview控件
iv.setImageBitmap(bitmap);
}
//在自动接收跳转页面传过来的数据OnActivityResult里接收扫描结果,并对结果进行处理
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//判断是否是扫描
if(requestCode==1){
//获取回传的图片
Bundle bundle = data.getExtras();
//判断是否为空
if (bundle == null) {
return;
}
//获取字符串,因为二维码都是字符串生成
String result = bundle.getString("result");
//赋值给控件
tv.setText("扫描的结果是:"+result);
}
}
}