二维码现在越来越火爆,使用的越发广泛,对于二维码二维码的生成与解析,有多种途径,这里我选择用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);
- }
- }
- }