Windows store apps Zxing.net解码在扫描windows phone应用商店时返回空值

Windows store apps Zxing.net解码在扫描windows phone应用商店时返回空值,windows-store-apps,windows-phone-8.1,zxing,Windows Store Apps,Windows Phone 8.1,Zxing,我有下面的代码,用于从相机捕获流图像 下面是设置相机的代码,在这里我初始化相机,设置最高分辨率,禁用闪光灯,旋转视图,设置镜像,并开始预览 _mediaCapture = new MediaCapture(); await _mediaCapture.InitializeAsync(settings); var maxResolution = _mediaCapture.VideoDeviceController.GetAvailableMediaStreamProperties(Me

我有下面的代码,用于从相机捕获流图像

下面是设置相机的代码,在这里我初始化相机,设置最高分辨率,禁用闪光灯,旋转视图,设置镜像,并开始预览

_mediaCapture = new MediaCapture();
await _mediaCapture.InitializeAsync(settings);

var maxResolution =
    _mediaCapture.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.Photo)
        .Aggregate(
            (i1, i2) =>
                (i1 as VideoEncodingProperties).Width > (i2 as VideoEncodingProperties).Width ? i1 : i2);
await _mediaCapture.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.Photo, maxResolution);

_mediaCapture.VideoDeviceController.FlashControl.AssistantLightEnabled = false;
_mediaCapture.VideoDeviceController.TorchControl.Enabled = false;
_mediaCapture.SetPreviewRotation(VideoRotation.Clockwise90Degrees);
_mediaCapture.SetPreviewMirroring(true);
_mediaCapture.VideoDeviceController.PrimaryUse = CaptureUse.Photo;

VideoCapture.Source = _mediaCapture;
await _mediaCapture.StartPreviewAsync();
计时器运行后,使用以下代码捕获流中的照片:

将可写位图对象传递给条形码扫描功能进行解码:

如上所示,我使用了几个选项,但扫描没有成功。Decode函数始终返回null。我还尝试了barcodeReader的ResultFound事件,但仍然是一样的


这里有什么问题吗?

我知道这是一篇老文章,但我也有同样的问题,这可能会节省一些人的时间。对我来说,这与专注有关。根据以下链接,在某些手机上,驾驶员有故障:

以及新的MediaCapture API, 像微软正在与诺基亚或其设备合作 部门将解决此问题。我为之工作的唯一解决办法 运行时应用程序将使用手动焦点。所有其他的尝试都给了我一个 一次又一次的异常,无论是在取消预览时还是在 在预览自己的时候


无论如何,该链接提供了一个使用滑块控制焦点的解决方案

您是否尝试过向其传递一个静态图像,其中包含非常清晰的条形码?这是为了排除糟糕的相机图像。在我的应用程序中,在zxing能够解码之前,我必须对图像进行大量聚焦。我尝试了静态图像,并且能够完美地扫描。那么,我的代码有什么问题,或者我可以做些什么来增强要扫描的图像?是的,我想你需要告诉相机聚焦在预览区域的某个区域。在WP8.0中,调用FocusAtPoint并连接AutoFocusCompleted事件,然后从那里解码图像是很简单的。是的,已经使用FocusAsync来调整焦距,但仍然不能按预期工作。但是,如果我将条形码图像放大,扫描似乎大部分时间都能正常工作。嗯,也许这个ImageEncodingProperties.CreateJpeg的质量不够。尝试一些具有无损属性的东西,如PNG或BMP。在我提到的使用调用SetFocus的滑块的链接中,对于条形码扫描,在CapturePhotoToStreamAsync之前隐藏滑块并在循环中调用SetFocus是更好的用户体验。我使用了100的值,并且假设用户实际上是滑块。在循环中调用SetFocus很重要。
var stream = new InMemoryRandomAccessStream();

await _mediaCapture.CapturePhotoToStreamAsync(ImageEncodingProperties.CreateJpeg(), stream);

using (stream)
{
    var writeableBmp = new WriteableBitmap(1, 1);
    stream.Seek(0);
    await writeableBmp.SetSourceAsync(stream);
    writeableBmp = new WriteableBitmap(writeableBmp.PixelWidth, writeableBmp.PixelHeight);
    stream.Seek(0);
    await writeableBmp.SetSourceAsync(stream);
    _result = ScanBitmap(writeableBmp);
}
private Result ScanBitmap(WriteableBitmap writeableBmp)
{
    var barcodeReader = new BarcodeReader
    {
        AutoRotate = true,
        TryInverted = true,
        Options =
        {
            PureBarcode = false,
            TryHarder = true,
            PossibleFormats = new[]
            {
                BarcodeFormat.QR_CODE,
                BarcodeFormat.EAN_13
            }
        },
    };

    var result = barcodeReader.Decode(writeableBmp);
    return result;
}