Java 如何使用ZXing手电筒启动扫描仪?

Java 如何使用ZXing手电筒启动扫描仪?,java,android,zxing,qr-code,barcode-scanner,Java,Android,Zxing,Qr Code,Barcode Scanner,我想用ZXing库做一个二维码扫描器。 在我的build.gradle中,我添加了以下代码: IntentIntegrator.initiateScan(MainActivity.this); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { CameraManager camManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE)

我想用ZXing库做一个二维码扫描器。 在我的
build.gradle
中,我添加了以下代码:

IntentIntegrator.initiateScan(MainActivity.this);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            CameraManager camManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
            String cameraId = null; // Usually back camera is at 0 position.
            try {
                cameraId = camManager.getCameraIdList()[0];
                camManager.setTorchMode(cameraId, false);  

 // TODO  Turn ON  Flash Light On
                mScannerView.setFlash(true);    
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
        }
存储库{
mavenCentral()
马文{
url“https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/"
}
}
依赖关系{
编译'com.google.zxing:core:2.2'
编译'com.mobile:zxing-android-minimal:1.2。1@aar'
}
当我点击
按钮时,它执行以下代码:

IntentIntegrator.initiateScan(MainActivity.this);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            CameraManager camManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
            String cameraId = null; // Usually back camera is at 0 position.
            try {
                cameraId = camManager.getCameraIdList()[0];
                camManager.setTorchMode(cameraId, false);  

 // TODO  Turn ON  Flash Light On
                mScannerView.setFlash(true);    
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
        }
QR扫描器工作正常

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            CameraManager camManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
            String cameraId = null; // Usually back camera is at 0 position.
            try {
                cameraId = camManager.getCameraIdList()[0];
                camManager.setTorchMode(cameraId, false);  

 // TODO  Turn ON  Flash Light On
                mScannerView.setFlash(true);    
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
        }
现在,我想用闪光灯启动
扫描仪。我该怎么做?
我已经在网上搜索过了,但是例子把我弄糊涂了

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            CameraManager camManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
            String cameraId = null; // Usually back camera is at 0 position.
            try {
                cameraId = camManager.getCameraIdList()[0];
                camManager.setTorchMode(cameraId, false);  

 // TODO  Turn ON  Flash Light On
                mScannerView.setFlash(true);    
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
        }
那么,如何使用闪光灯启动
扫描仪

            Camera camera  =Camera.open();
            Camera.Parameters p;
            p = camera.getParameters();
            p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
            camera.setParameters(p);

            CameraConfigurationUtils.setTorch(p,true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            CameraManager camManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
            String cameraId = null; // Usually back camera is at 0 position.
            try {
                cameraId = camManager.getCameraIdList()[0];
                camManager.setTorchMode(cameraId, false);  

 // TODO  Turn ON  Flash Light On
                mScannerView.setFlash(true);    
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
        }
使用此功能,您可以在android studio的torch上使用条形码/qrcode扫描仪。

源代码

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            CameraManager camManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
            String cameraId = null; // Usually back camera is at 0 position.
            try {
                cameraId = camManager.getCameraIdList()[0];
                camManager.setTorchMode(cameraId, false);  

 // TODO  Turn ON  Flash Light On
                mScannerView.setFlash(true);    
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
        }

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            CameraManager camManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
            String cameraId = null; // Usually back camera is at 0 position.
            try {
                cameraId = camManager.getCameraIdList()[0];
                camManager.setTorchMode(cameraId, false);  

 // TODO  Turn ON  Flash Light On
                mScannerView.setFlash(true);    
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
        }

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            CameraManager camManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
            String cameraId = null; // Usually back camera is at 0 position.
            try {
                cameraId = camManager.getCameraIdList()[0];
                camManager.setTorchMode(cameraId, false);  

 // TODO  Turn ON  Flash Light On
                mScannerView.setFlash(true);    
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
        }
在清单文件中添加依赖项-它正在工作

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            CameraManager camManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
            String cameraId = null; // Usually back camera is at 0 position.
            try {
                cameraId = camManager.getCameraIdList()[0];
                camManager.setTorchMode(cameraId, false);  

 // TODO  Turn ON  Flash Light On
                mScannerView.setFlash(true);    
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
        }

这不起作用,产生错误“由于现有相机用户,相机“0”的火炬不可用”