android studio zxing 生成和扫描二维码

本文介绍了如何在Android Studio项目中集成ZXing库,用于生成和扫描二维码。包括添加依赖、关键类如MainActivity、zxing_Utlis(包含生成二维码的方法)和Uri_Utlis(解析二维码的方法)的实现,并强调经过真机测试,所有方法功能正常。

加依赖

 	implementation 'com.journeyapps:zxing-android-embedded:3.6.0'  //生成
    implementation 'com.google.zxing:javase:3.0.0'

MainActivity

package wlt.com.hyjj;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
import com.journeyapps.barcodescanner.BarcodeEncoder;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
   
   
    TextView jieguo;
    ImageView imageView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.content_main);
        init();
    }
    Handler handler=new Handler(new Handler.Callback() {
   
   
        @Override
        public boolean handleMessage(Message msg) {
   
   

            if (msg.arg1==101){
   
   
                imageView.setImageBitmap((Bitmap) msg.obj);
            }
            return true;
        }
    });
    public  void init(){
   
   
        jieguo=(TextView)this.findViewById(R.id.jieguo);
        imageView=(ImageView)this.findViewById(R.id.imgscar);
    }

   

    /**
     * 生成二维码1
     */

    public static Bitmap createBitmap(String str){
   
   
        Bitmap bitmap = null;
        BitMatrix result = null;
        MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
        try {
   
   
            result = multiFormatWriter.encode(str, BarcodeFormat.QR_CODE, 400, 400);
            BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
            bitmap = barcodeEncoder.createBitmap(result);
        } catch (WriterException e){
   
   
            e.printStackTrace();
        } catch (IllegalArgumentException iae){
   
   
            return null;
        }
        return bitmap;
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   
   
        super.onActivityResult(requestCode,resultCode,data);
        if (requestCode == 101) {
   
   
            System.out.print("=====101=======");
            IntentResult scanResult = IntentIntegrator.parseActivityResult(resultCode, data);
            final String qrContent = scanResult.getContents();
            Toast.makeText(MainActivity.this, "扫描结果:" + qrContent, Toast.LENGTH_SHORT).show();
            jieguo.setText(qrContent);
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
   
   
        getMenuInflater().inflate(R.menu.item,menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected( MenuItem item) {
   
   
        switch (item.getItemId()){
   
   

            case R.id.bdtp:
                Bitmap bitmap =zxing_Utlis.QRCode.createQRCode("https://blog.csdn.net/qq_38218307");
                Message mess=new Message();
                mess.arg1=101;
                mess.obj=bitmap;
                handler.sendMessage(mess);
                if (bitmap!=null){
   
   
                    Toast.makeText(MainActivity.this,"成功",Toast.LENGTH_SHORT).show();
                }
                break;
            case R.id.dtp:
                Bitmap bit=  BitmapFactory.decodeResource(getResources(),R.drawable.s);
                Bitmap bitmaps=  zxing_Utlis.QRCode.createQRCodeWithLogo("https://blog.csdn.net/qq_38218307",bit);
                Message messs=new
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值