ITxiaoguang/MLKitScanner

相机视频时,解析不了。

Closed this issue · 3 comments

zghnx commented

public void onPreview(final byte[] nv21, Camera camera) {

    YuvImage yuvImage = new YuvImage(nv21, ImageFormat.NV21, camera.getParameters().getPreviewSize().width, camera.getParameters().getPreviewSize().height, null);
    ByteArrayOutputStream stream = new ByteArrayOutputStream(nv21.length);
    yuvImage.compressToJpeg(new Rect(0, 0, yuvImage.getWidth(), yuvImage.getHeight()), 90, stream);

    Bitmap bitmap = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size());


    InputImage inputImage = InputImage.fromBitmap(bitmap, 0);
    //InputImage inputImage = InputImage.fromMediaImage(imageProxy.getImage(), imageProxy.getImageInfo().getRotationDegrees());

// final Bitmap finalBitmap = bitmap;

    barcodeScanner.process(inputImage)
            .addOnSuccessListener(new OnSuccessListener<List<Barcode>>() {
                @Override
                public void onSuccess(@NonNull List<Barcode> barcodes) {
                    if (barcodes.size() == 0) {
                        return;
                    }

                    for (Barcode barcode : barcodes) {
                        String value = barcode.getRawValue();
                        Log.e("======", "value:" + value);
                    }

                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.e("======", "onFailure---:" + e.toString());
                }
            });

}
不知道为什么解析不了。

zghnx commented

问题找到了,是手机前置摄像头不支持,后置摄像头支持。怎么样解决手机前置摄像头不支持?

正常来说 Bitmap 有数据就是可以解析的,你可以断点看一下Bitmap图片是否有二维码,有的话,是可以解析的.
前置摄像头应该是取不到数据造成的.

zghnx commented

正常来说 Bitmap 有数据就是可以解析的,你可以断点看一下Bitmap图片是否有二维码,有的话,是可以解析的. 前置摄像头应该是取不到数据造成的.

Bitmap有的。可能是没聚焦。解析不出来。