C# qrcodezxing示例

C# qrcodezxing示例,c#,windows-phone-7,zxing,C#,Windows Phone 7,Zxing,我需要用windows phone创建一个qrreader Xzing示例仅将捕获的qr字符串打印到视频, 我需要一个示例,说明如何理解此字符串是否为vcard,并因此将其保存在contact中,或者它是否为链接并在浏览器中打开 private void ScanPreviewBuffer() { try { _photoCamera.GetPreviewBufferY(_luminance.Preview

我需要用windows phone创建一个qrreader

Xzing示例仅将捕获的qr字符串打印到视频, 我需要一个示例,说明如何理解此字符串是否为vcard,并因此将其保存在contact中,或者它是否为链接并在浏览器中打开

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(() => CheckQr(result.Text));
            }
            catch {  }
     }

    private void CheckQr(string qrString)
    {

        VibrateController vibrate = VibrateController.Default;
        vibrate.Start(TimeSpan.FromMilliseconds(500));

        MessageBox.Show(qrString);
        /* CONTROLS HERE */
    }

显然,您必须首先解析qrString内容,以获得您想要的内容,我认为我们在这一点上都会达成一致

因此,主要问题是:

确定url或vcard的格式 如果需要,分析它们 利用它们触发通缉行动 一,。关于vCard

要确定您的qrString是否持有vCard,您可以尝试使用string.Contains或string.StartsWith方法匹配vCard标题,该标题为BEGIN:vCard,从一个版本到另一个版本似乎始终相同,请参见

对于WindowsPhone7,没有用于解析vCard的内置功能,因此您必须自己完成,或者您可以尝试使用。可以这样使用:

   byte[] byteArray = Encoding.UTF8.GetBytes(qrString);
   using (StreamReader reader = new StreamReader(new MemoryStream(byteArray)))
   {
      vCard card = new vCard(reader);
      // access here card.PropertyFromvCard to get the information you need
   }
关于它没有太多文档,但是可以在codeplex上找到,因此您可能会找到所需的所有属性名称和示例

对于WindowsPhone8,内置方法可以帮助您解析qrString内容,这是官方消息

然后,您需要最终创建您的联系人:

如果您正在Windows Phone 7上开发应用程序,则无法直接从应用程序创建联系人。您需要使用并预填充所需的字段。下面是一个例子:

SaveContactTask saveContactTask = new SaveContactTask();
saveContactTask.Completed += new EventHandler<SaveContactResult>(saveContactTask_Completed);
saveContactTask.FirstName = "John"; // card.PropertyFromvCard and so on...
saveContactTask.LastName = "Doe";
saveContactTask.MobilePhone = "2065550123";
saveContactTask.Show();
最后,要将URL打开到web浏览器中(如果它是有效的),当然,您可以使用或将真正的WebBrowser嵌入到您的应用程序中,并充分利用它。

ZXing有一个名为ResultParseResult的类,它带有一个静态方法parseResult。 ResultParser支持一些常见的内容格式,如vCard、vEvent、URL等。 它将为您返回一个用于vCard内容的AddressBookParsedResult实例

ParsedResult parsedResult = ResultParser.parseResult(result);

您是否看过任何二维码编码文档?这将告诉您如何读取编码字符串是的,但文档/示例仅打印到解码的QR字符串的视频
ParsedResult parsedResult = ResultParser.parseResult(result);