二维码扫描+输入框输入内容,点击按钮生成二维码


实现步骤:

1. 倒libzxing包

2. 在Settings.gradle中添加  

include ':app','libzxing'

3.添加依赖


//布局文件

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFF"
    android:scrollbars="none">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/tv_scan_result"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="15dp"
            android:text="显示扫描结果字符串" />

        <Button
            android:id="@+id/btn_scan_barcode"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_margin="10dp"
            android:text="扫描二维码" />

        <EditText
            android:id="@+id/et_qr_string"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text"
            android:padding="15dp" />

        <ImageView
            android:id="@+id/iv_qr_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:contentDescription="@null"
            android:padding="10dp"
            android:src="@mipmap/ic_launcher" />

        <CheckBox
            android:id="@+id/logo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:text="是否显示logo(图片)" />

        <Button
            android:id="@+id/btn_add_qrcode"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_margin="10dp"
            android:text="生成二维码" />

    </LinearLayout>
</ScrollView>

//核心代码

扫描二维码关注公众号,回复: 1822661 查看本文章
public class ShowActivity extends AppCompatActivity {

    private TextView resultTextView;
    private EditText qrStrEditText;
    private ImageView qrImgImageView;
    private CheckBox mCheckBox;
    private Button scanBarCodeButton;
    private Button generateQRCodeButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show);
        resultTextView = (TextView) this.findViewById(R.id.tv_scan_result);
        qrStrEditText = (EditText) this.findViewById(R.id.et_qr_string);
        qrImgImageView = (ImageView) this.findViewById(R.id.iv_qr_image);
        mCheckBox = (CheckBox) findViewById(R.id.logo);
        scanBarCodeButton = (Button) this.findViewById(R.id.btn_scan_barcode);
        generateQRCodeButton = (Button) this.findViewById(R.id.btn_add_qrcode);

        //扫描
        //扫描
        scanBarCodeButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (ContextCompat.checkSelfPermission(ShowActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                    // 申请CAMERA权限
                    ActivityCompat.requestPermissions(ShowActivity.this, new String[]{Manifest.permission.CAMERA}, 1);
                }else{
                    //跳转到zxing的扫描页面
                    // 打开扫描界面扫描条形码或二维码
                    Intent openCameraIntent = new Intent(ShowActivity.this, CaptureActivity.class);
                    startActivityForResult(openCameraIntent, 0);
                }
            }
        });
        //根据输入的字符串生成二维码
        generateQRCodeButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //1读et的内容 2生成bitmap 3设置给iv
                String contentString = qrStrEditText.getText().toString();
                if (!TextUtils.isEmpty(contentString)) {
                    // 根据字符串生成二维码图片并显示在界面上,第二个参数为图片的大小(350*350)
                    Bitmap qrCodeBitmap = EncodingUtils.createQRCode(contentString, 350, 350,mCheckBox.isChecked() ? BitmapFactory.decodeResource(getResources(), R.drawable.ac3
                    ) : null);
                    qrImgImageView.setImageBitmap(qrCodeBitmap);
                } else {
                    Toast.makeText(ShowActivity.this, "Text can not be empty", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //接受zixing扫描页面的字符串扫描结果
        if (resultCode == RESULT_OK) {
            Bundle bundle = data.getExtras();
            String scanResult = bundle.getString("result");
            resultTextView.setText(scanResult);
        }
    }

    //用户是否同意权限的回调
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        //如果同意直接打开相机
        //跳转到zxing的扫描页面
        // 打开扫描界面扫描条形码或二维码
        Intent openCameraIntent = new Intent(ShowActivity.this, CaptureActivity.class);
        startActivityForResult(openCameraIntent, 0);
    }
}



猜你喜欢

转载自blog.csdn.net/chenyibai/article/details/80711091