在Android应用程序中使用条形码扫描器(例如Zxing库),并通过导入配置来实现自定义条形码扫描器,即用户可以在扫描之前选择所需的配置,以实现更好的体验。
示例代码:
dependencies {
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
implementation 'com.google.zxing:core:3.3.0'
}
public class BarcodeScannerActivity extends AppCompatActivity implements DecoratedBarcodeView.TorchListener {
private static final String TAG = BarcodeScannerActivity.class.getSimpleName();
private static final int REQUEST_CODE_PERMISSIONS = 10;
private static final String[] REQUIRED_PERMISSIONS = new String[]{
Manifest.permission.CAMERA
};
DecoratedBarcodeView barcodeView;
ImageButton flashlightButton;
TextView typeText;
TextView resultText;
TextView debugText;
Button switchFormatsButton;
ImageView logoView;
private String currentBarcodeFormat = null;
private boolean initialized = false;
private SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_barcode_scanner);
barcodeView = findViewById(R.id.barcode_scanner);
flashlightButton = findViewById(R.id.button_flashlight);
typeText = findViewById(R.id.text_type);
resultText = findViewById(R.id.text_result);
debugText = findViewById(R.id.text_debug);
switchFormatsButton = findViewById(R.id.button_switch_formats);
logoView = findViewById(R.id.image_logo);
barcodeView.setTorchListener(this);
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
}
@Override
protected void onResume() {
super.onResume();
if (!initialized) {
initialized = true;
ActivityCompat.requestPermissions(this, REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS);
} else {
barcodeView.resume();
}
}
@Override
protected void onPause() {
super.onPause();
barcodeView.pause();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().