Чтение QR-кода и штрих-кода в Windows Phone 8

Я работаю над разработкой приложений для Windows Phone 8. Мое требование - отсканировать QR-код и штрих-код и получить встроенное в него значение.

Я много пробовал с библиотекой Zxing. Пожалуйста, предоставьте мне подходящее решение.


person Kartiikeya    schedule 30.03.2015    source источник


Ответы (3)


наконец .. я реализовал этот метод ..

Включите следующее пространство имен в свой образец

xmlns:jwqr="clr-namespace:JeffWilcox.Controls;assembly=JeffWilcox.Controls.QR"

в файле XAml.. включите следующий элемент управления

<jwqr:QRCodeScanner
ScanComplete="QRCodeScanner_ScanComplete"
Error="QRCodeScanner_Error"
Width="400"
Height="400"/>

В исходном коде включите обработчики событий.

private void QRCodeScanner_ScanComplete(object sender, JeffWilcox.Controls.ScanCompleteEventArgs e)
{
ApplicationTitle.Text = e.Result;
}

private void QRCodeScanner_Error(object sender, JeffWilcox.Controls.ScanFailureEventArgs e)
{
throw e.Exception;
}

для получения полной справки. нажмите здесь

person Kartiikeya    schedule 29.04.2015

Включите свою ZXing.Net библиотеку в свой проект.

View.xaml

<Grid x:Name="grdCamera">
<Rectangle x:Name="_previewRect" 
       Margin="0" 
       Height="800" 
       Width="600" 
       HorizontalAlignment="Center" 
       VerticalAlignment="Center">
    <Rectangle.Fill>
        <VideoBrush x:Name="_previewVideo">
            <VideoBrush.RelativeTransform>
                <CompositeTransform  
                x:Name="_previewTransform" CenterX=".5" CenterY=".5" />
            </VideoBrush.RelativeTransform>
        </VideoBrush>
    </Rectangle.Fill>
</Rectangle>

C# code

private readonly DispatcherTimer _timer;
private PhotoCameraLuminanceSource _luminance;
private QRCodeReader _reader;
private PhotoCamera _photoCamera;

//Constructor
public ScanPage()
{
    InitializeComponent();

    _timer = new DispatcherTimer();
    _timer.Interval = TimeSpan.FromMilliseconds(250);
    _timer.Tick += (o, arg) => ScanPreviewBuffer();
}

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    _photoCamera = new PhotoCamera();
    _photoCamera.Initialized += OnPhotoCameraInitialized;
    _previewVideo.SetSource(_photoCamera);

    CameraButtons.ShutterKeyHalfPressed += (o, arg) => _photoCamera.Focus();

    base.OnNavigatedTo(e);
}

private void OnPhotoCameraInitialized(object sender, CameraOperationCompletedEventArgs e)
{
    int width = Convert.ToInt32(_photoCamera.PreviewResolution.Width);
    int height = Convert.ToInt32(_photoCamera.PreviewResolution.Height);

    _luminance = new PhotoCameraLuminanceSource(width, height);
    _reader = new QRCodeReader();

    Dispatcher.BeginInvoke(() =>
    {
        _previewTransform.Rotation = _photoCamera.Orientation;
        _timer.Start();
    });
}

private void ScanPreviewBuffer()
{
    try
    {
        _photoCamera.GetPreviewBufferY(_luminance.PreviewBufferY);
        var binarizer = new HybridBinarizer(_luminance);
        var binBitmap = new BinaryBitmap(binarizer);
        var result = _reader.decode(binBitmap);
        Dispatcher.BeginInvoke(() => MessageBox.Show(result.Text));
    }
    catch
    {
    }
}

Следующие ссылки могут помочь вам

http://jonas.follesoe.no/2011/07/22/qr-code-scanning-on-windows-phone-75-using-zxlib/

http://social.technet.microsoft.com/wiki/contents/articles/27164.windows-phone-optical-reader-library-for-windows-phone-8.aspx

person Ajay    schedule 30.03.2015

Например это решение. RadBarCode Здесь представлен полный набор функций.

person user2784555    schedule 30.03.2015