效果图(模拟器不支持摄像头)
首先加入依赖
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);
config.setShake(true);
config.setDecodeBarCode(true);
config.setReactColor(R.color.colorAccent);
config.setFrameLineColor(R.color.colorAccent);
config.setScanLineColor(R.color.colorAccent);
config.setFullScreenScan(false);
intent.putExtra(Constant.INTENT_ZXING_CONFIG, config);
startActivityForResult(intent,111);
onActivityResult(111,RESULT_OK,intent);
}
});