Android实战——扫一扫

效果图(模拟器不支持摄像头)

在这里插入图片描述

首先加入依赖

implementation 'com.github.yuzhiqiang1993:zxing:2.2.5'//扫一扫

添加权限

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />

    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />

    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

添加控件

<ImageView
    android:id="@+id/imageView"
    android:layout_width="25dp"
    android:layout_height="25dp"
    android:layout_marginEnd="10dp"
    android:layout_marginRight="10dp"
    android:src="@drawable/sao"
    app:layout_constraintBottom_toTopOf="@+id/textView5"
    app:layout_constraintEnd_toStartOf="@+id/imageView2"
    app:layout_constraintTop_toTopOf="parent" />

拿到引用

ImageView scan  = findViewById(R.id.imageView);
scan.setOnClickListener(new View.OnClickListener() {
    
    //扫一扫
            @Override
            public void onClick(View v) {
    
    
                if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
                //请求权限
                ActivityCompat.requestPermissions(MainActivity.this, new String[]{
    
    Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}, 1);
                Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
                ZxingConfig config = new ZxingConfig();
                config.setPlayBeep(true);//是否播放扫描声音 默认为true
                config.setShake(true);//是否震动  默认为true
                config.setDecodeBarCode(true);//是否扫描条形码 默认为true
                config.setReactColor(R.color.colorAccent);//设置扫描框四个角的颜色 默认为白色
                config.setFrameLineColor(R.color.colorAccent);//设置扫描框边框颜色 默认无色
                config.setScanLineColor(R.color.colorAccent);//设置扫描线的颜色 默认白色
                config.setFullScreenScan(false);//是否全屏扫描  默认为true  设为false则只会在扫描框中扫描
                intent.putExtra(Constant.INTENT_ZXING_CONFIG, config);
                startActivityForResult(intent,111);
                onActivityResult(111,RESULT_OK,intent);
            }
        });

猜你喜欢

转载自blog.csdn.net/qq_43337254/article/details/112887321
今日推荐