如何使用Zxing Android Embedded扫描纯文本二维码
我已经有了一个QR/条形码扫描仪,它正在工作。但我有一个问题。扫描仪只读取包含url的二维码,但我只想扫描文本二维码。有人知道问题出在哪里吗 使用过的库:如何使用Zxing Android Embedded扫描纯文本二维码,android,zxing,Android,Zxing,我已经有了一个QR/条形码扫描仪,它正在工作。但我有一个问题。扫描仪只读取包含url的二维码,但我只想扫描文本二维码。有人知道问题出在哪里吗 使用过的库: implementation 'com.journeyapps:zxing-android-embedded:3.4.0' 方法: private void scanCode() { IntentIntegrator integrator = new IntentIntegrator(this); integrator.se
implementation 'com.journeyapps:zxing-android-embedded:3.4.0'
方法:
private void scanCode() {
IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setCaptureActivity(CaptureAct.class);
integrator.setOrientationLocked(false);
integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES);
integrator.setPrompt("Scanning Code");
integrator.initiateScan();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
...
}
您好,您需要使用以下配置 编译SDK版本28//Android 9(API级别28) MinsdkVersion24//Android 7.0(API级别24) 在应用程序的build.gradle中使用google vision的依赖项 实现'com.google.android.gms:play services愿景:17.0.2' 这是扫描二维码的代码
cameraViewQR = findViewById(R.id.cameraView);
cameraViewQR.setZOrderMediaOverlay(true);
qrHolderScreen = cameraViewQR.getHolder();
barcodeQR = new BarcodeDetector.Builder(this)
.setBarcodeFormats(Barcode.QR_CODE)
.build();
if (!barcodeQR.isOperational()) {
Toast.makeText(getApplicationContext(), "Problem Occurred in Setup", Toast.LENGTH_SHORT).show();
this.finish();
}
cameraSourcePhone = new CameraSource.Builder(this, barcodeQR)
.setFacing(CameraSource.CAMERA_FACING_BACK)
.setRequestedFps(24)
.setAutoFocusEnabled(true)
.setRequestedPreviewSize(480, 480)
.build();
cameraViewQR.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
if (ContextCompat.checkSelfPermission(ScanActivity.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
cameraSourcePhone.start(cameraViewQR.getHolder());
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
barcodeQR.setProcessor(new Detector.Processor<Barcode>() {
@Override
public void release() {
}
@Override
public void receiveDetections(Detector.Detections<Barcode> detections) {
final SparseArray<Barcode> barcode = detections.getDetectedItems();
if (barcode.size() > 0) {
Intent intent = new Intent();
intent.putExtra("QRCODE", barcode.valueAt(0));
setResult(RESULT_OK, intent);
finish();
}
}
});
cameraViewQR=findViewById(R.id.cameraView);
cameraViewQR.setzordermediagoverlay(真);
qrHolderScreen=cameraViewQR.getHolder();
barcodeQR=新的BarcodeDetector.Builder(此)
.setBarcodeFormats(条形码.QR\U码)
.build();
如果(!barcodeQR.isOperational()){
Toast.makeText(getApplicationContext(),“安装程序中出现问题”,Toast.LENGTH_SHORT.show();
这个;
}
cameraSourcePhone=new CameraSource.Builder(这是barcodeQR)
.setFacing(摄像机源.摄像机面向后)
.setRequestedFps(24)
.setAutoFocusEnabled(真)
.setRequestedPreviewSize(480480)
.build();
cameraViewQR.getHolder().addCallback(新的SurfaceHolder.Callback()函数){
@凌驾
已创建的公共空白表面(表面持有人){
试一试{
if(ContextCompat.checkSelfPermission(ScanActivity.this、Manifest.permission.CAMERA)==PackageManager.permission\u已授予){
cameraSourcePhone.start(cameraViewQR.getHolder());
}
}捕获(IOE异常){
e、 printStackTrace();
}
}
@凌驾
公共空白表面更改(表面文件夹持有者、整型格式、整型宽度、整型高度){
}
@凌驾
公共空间表面覆盖(表面覆盖物持有人){
}
});
条形码qr.setProcessor(新检测器.Processor(){
@凌驾
公开无效释放(){
}
@凌驾
公共空隙接收检测(检测器。检测){
最终SparseArray条形码=检测。getDetectedItems();
如果(条形码大小()>0){
意图=新意图();
intent.putExtra(“QRCODE”,条形码.valueAt(0));
设置结果(结果正常,意图);
完成();
}
}
});
您好,您需要使用以下配置
编译SDK版本28//Android 9(API级别28)
MinsdkVersion24//Android 7.0(API级别24)
在应用程序的build.gradle中使用google vision的依赖项
实现'com.google.android.gms:play services愿景:17.0.2'
这是扫描二维码的代码
cameraViewQR = findViewById(R.id.cameraView);
cameraViewQR.setZOrderMediaOverlay(true);
qrHolderScreen = cameraViewQR.getHolder();
barcodeQR = new BarcodeDetector.Builder(this)
.setBarcodeFormats(Barcode.QR_CODE)
.build();
if (!barcodeQR.isOperational()) {
Toast.makeText(getApplicationContext(), "Problem Occurred in Setup", Toast.LENGTH_SHORT).show();
this.finish();
}
cameraSourcePhone = new CameraSource.Builder(this, barcodeQR)
.setFacing(CameraSource.CAMERA_FACING_BACK)
.setRequestedFps(24)
.setAutoFocusEnabled(true)
.setRequestedPreviewSize(480, 480)
.build();
cameraViewQR.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
if (ContextCompat.checkSelfPermission(ScanActivity.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
cameraSourcePhone.start(cameraViewQR.getHolder());
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
barcodeQR.setProcessor(new Detector.Processor<Barcode>() {
@Override
public void release() {
}
@Override
public void receiveDetections(Detector.Detections<Barcode> detections) {
final SparseArray<Barcode> barcode = detections.getDetectedItems();
if (barcode.size() > 0) {
Intent intent = new Intent();
intent.putExtra("QRCODE", barcode.valueAt(0));
setResult(RESULT_OK, intent);
finish();
}
}
});
cameraViewQR=findViewById(R.id.cameraView);
cameraViewQR.setzordermediagoverlay(真);
qrHolderScreen=cameraViewQR.getHolder();
barcodeQR=新的BarcodeDetector.Builder(此)
.setBarcodeFormats(条形码.QR\U码)
.build();
如果(!barcodeQR.isOperational()){
Toast.makeText(getApplicationContext(),“安装程序中出现问题”,Toast.LENGTH_SHORT.show();
这个;
}
cameraSourcePhone=new CameraSource.Builder(这是barcodeQR)
.setFacing(摄像机源.摄像机面向后)
.setRequestedFps(24)
.setAutoFocusEnabled(真)
.setRequestedPreviewSize(480480)
.build();
cameraViewQR.getHolder().addCallback(新的SurfaceHolder.Callback()函数){
@凌驾
已创建的公共空白表面(表面持有人){
试一试{
if(ContextCompat.checkSelfPermission(ScanActivity.this、Manifest.permission.CAMERA)==PackageManager.permission\u已授予){
cameraSourcePhone.start(cameraViewQR.getHolder());
}
}捕获(IOE异常){
e、 printStackTrace();
}
}
@凌驾
公共空白表面更改(表面文件夹持有者、整型格式、整型宽度、整型高度){
}
@凌驾
公共空间表面覆盖(表面覆盖物持有人){
}
});
条形码qr.setProcessor(新检测器.Processor(){
@凌驾
公开无效释放(){
}
@凌驾
公共空隙接收检测(检测器。检测){
最终SparseArray条形码=检测。getDetectedItems();
如果(条形码大小()>0){
意图=新意图();
intent.putExtra(“QRCODE”,条形码.valueAt(0));
设置结果(结果正常,意图);
完成();
}
}
});
提及您正在使用的库或显示一些相关的code@DavidKroukamp编辑它。我认为它只是不能在模拟器上工作。这是一个很小的问题,如果可以忽略的话least@DavidKroukamp对对,如释重负,我不必实施一个新的扫描将有助于提及您正在使用的库或显示一些相关的code@DavidKroukamp编辑它。我认为它只是不能在模拟器上工作。这是一个很小的问题,如果可以忽略的话least@DavidKroukamp是的,是的,放心吧,我不必安装新的扫描仪