简单的扫描二维码吐司+生成二维码

1.导入依赖(build.gradle)

implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.4'

2.MainActivity页面

public class MainActivity extends AppCompatActivity {

private EditText editText;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    init();
}

private void init() {
    //获取资源ID
    editText = findViewById(R.id.edtext);
    imageView = findViewById(R.id.img);

    //点击按钮扫描二维码
    findViewById(R.id.scan).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            checkedPermission();
        }
    });

    //点击按钮生成二维码
    findViewById(R.id.produce).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            creatQRCode();
        }
    });
}

//判断版本是否在6.0以上。6.0以上需要动态添加权限
private void checkedPermission() {
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
        //判断有没有权限,没有就授权,否则进行跳转
        if(ContextCompat.checkSelfPermission(this,Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA},100);
        }else{
            //进行跳转
            startActivity(new Intent(MainActivity.this,LoginActivity.class));
        }
    }
}


@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == 100 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
        //进行跳转
        startActivity(new Intent(MainActivity.this,LoginActivity.class));
    }
}

//生成二维码
    private void creatQRCode(){
        QRTask qrTask = new QRTask(this,imageView,editText);
        qrTask.execute(editText.getText().toString());
    }
    static class QRTask extends AsyncTask<String,Void,Bitmap>{

    private WeakReference<Context> mContext;
    private WeakReference<ImageView> imageView;

    public QRTask(Context context,ImageView mimageView,EditText editText){
        mContext = new WeakReference<>(context);
        imageView = new WeakReference<>(mimageView);
    }

    @Override
    protected Bitmap doInBackground(String... strings) {
        String str = strings[0];
        if(TextUtils.isEmpty(str)){
            return null;
        }
        int size = mContext.get().getResources().getDimensionPixelOffset(R.dimen.qr_code_size);
        return QRCodeEncoder.syncEncodeQRCode(str,size);
    }

    @Override
    protected void onPostExecute(Bitmap bitmap) {
        super.onPostExecute(bitmap);
        if (bitmap != null){
            imageView.get().setImageBitmap(bitmap);
        }else{
            Toast.makeText(mContext.get(),"生成失败",Toast.LENGTH_SHORT).show();
        }
    }
}
}

3.扫描二维码提示吐司的Activity

public class LoginActivity extends AppCompatActivity implements QRCodeView.Delegate {

private ZXingView xingView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    //获取资源ID
    xingView = findViewById(R.id.zXing);
    xingView.setDelegate(this);
}

@Override
protected void onResume() {
    super.onResume();
    xingView.startCamera();
    xingView.startSpotAndShowRect();
    /*xingView.openFlashlight();*/
}

@Override
protected void onStop() {
    super.onStop();
    xingView.stopCamera();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    xingView.onDestroy();
}

@Override
public void onScanQRCodeSuccess(String result) {

    Toast.makeText(this,result.toString(),Toast.LENGTH_SHORT).show();

}

@Override
public void onCameraAmbientBrightnessChanged(boolean isDark) {

    //环境改变,是否变暗,变暗isDark为true
}

@Override
public void onScanQRCodeOpenCameraError() {
    //打开相机失败

}
}

3.1Xml布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
    tools:context=".LoginActivity">

<cn.bingoogolapple.qrcode.zxing.ZXingView
    android:id="@+id/zXing"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

</android.support.constraint.ConstraintLayout>

4.Main Xml布局

<?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=".MainActivity">

<Button
    android:id="@+id/scan"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="扫描二维码"
    />

<EditText
    android:id="@+id/edtext"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="15"
    android:hint="请输入内容"
    />

<Button
    android:id="@+id/produce"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="生成二维码"
    />

<ImageView
    android:id="@+id/img"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:gravity="center_horizontal"
    android:background="@mipmap/ic_launcher"
    />

</LinearLayout>

在清单文件中配置权限

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.CAMERA" />

猜你喜欢

转载自blog.csdn.net/weixin_43587850/article/details/84778360