ZXing 前置摄像头自动启动

ZXing auto start with front camera

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

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

主要活动:

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();
            }

        }
    }

...

}

我该怎么做?

查看 ZXing 库的来源

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

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

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