ZXing自动启动前置摄像头

时间:2017-01-28 13:29:00

标签: android android-camera qr-code zxing

我正在尝试构建一个从IDCard读取QRCode的应用程序,我公司的每个人都会使用它。

我想在运行应用程序时默认使用前置摄像头。我设法用后置摄像头做到了,但理想情况下我不想使用按钮来切换。

MainActivity:

public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
    private static final int REQUEST_CAMERA = 1;
    private ZXingScannerView mScannerView;

    Passageiros mPassageiro; //

    Collection<Passageiros> listaPassageiros;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mScannerView = new ZXingScannerView(this){

            @Override
            protected IViewFinder createViewFinderView(Context context) {
                return new CustomZXingScannerView(context);
            }

        };
        List<BarcodeFormat> formats = new ArrayList<>();

        formats.add(BarcodeFormat.QR_CODE);

        setContentView(mScannerView);

        int currentapiVersion = android.os.Build.VERSION.SDK_INT;
        if (currentapiVersion >= android.os.Build.VERSION_CODES.M) {
            if (checkPermission()) {
                Toast.makeText(getApplicationContext(), "Permission already granted", Toast.LENGTH_LONG).show();

            } else {
                requestPermission();
            }

        }
    }

...

}

我该怎么做?

1 个答案:

答案 0 :(得分:1)

查看ZXing库的来源

ZXingCameraView正在扩展BarcodeScannerView,它有一个私有的CameraWrapper,可以使用setupLayout方法设置。 CameraWrapper允许您初始化com.android.Camera。

该问题显示了如何从可用的相机中选择必要的内容:How do I open the "front camera" on the Android platform?

编辑:实际上设备背面甚至还有一个ZXing CameraUtils class选择摄像头。只需将其更改为返回前置摄像头的ID,并将该ID传递给ZXingCameraView上的startCamera(frontCameraId)。