使用ZX和前置摄像头扫描条形码

时间:2015-01-27 12:07:52

标签: android zxing

我正在使用以下代码触发Intent以启动ZX条形码扫描程序。我已将其调整为使用前置摄像头,但这似乎无法扫描任何条形码,因为正面图像是反转的(我假设这是原因)。即书籍条形码显示NBSI(带倒退字母)而不是ISBN。使用后置摄像头,Nexus 5和Nexus 7都可以扫描条形码。切换到前置摄像头时,两者都无法识别条形码。

如何调整我的意图,以便ZX显示一个非反转的前置摄像头图像?

private void startBarcodeScanner() {
    IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
    integrator.addExtra("SCAN_CAMERA_ID", getFrontCameraId());
    integrator.addExtra("SCAN_MODE", "PRODUCT_MODE");
    integrator.initiateScan(IntentIntegrator.PRODUCT_CODE_TYPES);
}

private int getFrontCameraId() {
    int cameraId = -1;
    int numberOfCameras = Camera.getNumberOfCameras();
    for (int i = 0; i < numberOfCameras; i++) {
        Camera.CameraInfo info = new Camera.CameraInfo();
        Camera.getCameraInfo(i, info);
        if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
            cameraId = i;
            return cameraId;
        }
    }
    return -1;
}

2 个答案:

答案 0 :(得分:1)

与Tab S7完美配合,稍加修改:

public void barcodeButtonPressed(View v){
    IntentIntegrator scanIntegrator = new IntentIntegrator(this);       
    scanIntegrator.addExtra("SCAN_CAMERA_ID", getFrontCameraId());
    //scanIntegrator.addExtra("SCAN_MODE", "PRODUCT_MODE");

    scanIntegrator.initiateScan(IntentIntegrator.ALL_CODE_TYPES);
}

答案 1 :(得分:0)

我们在其他设备上进行了更多测试,并且使用前面的代码使用前置摄像头扫描条形码。由于某种原因,我的N5和N7失败了,但我不得不把它放下来聚焦/照明。

如果其他人想要确认ZX使用前置摄像头开箱即可扫描条形码,我会留下这个问题。