HTML5技术

C#开发移动应用系列(3.使用照相机扫描二维码+各种基础知识) - GuZhenYin(2)

字号+ 作者:H5之家 来源:H5之家 2017-06-24 17:01 我要评论( )

OnActivityResult( int requestCode, Result resultCode, Intent data){ base .OnActivityResult(requestCode, resultCode, data); (requestCode == 1 resultCode == Result.Ok){webView.LoadUrl(data.GetStringExt

OnActivityResult(int requestCode, Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); (requestCode == 1 && resultCode == Result.Ok) { webView.LoadUrl(data.GetStringExtra()); Toast.MakeText(+ data.GetStringExtra(), ToastLength.Short).Show(); } }

大家可以看到,上面我们有一个判断requestCode==1,这个1就是我们传递过去的第二个参数.

当你有多个跳转界面的时候,就可以用这个requestCode来区分.

这样,我们就完成了界面的跳转和获取返回值

3.学会如何识别相机预览中的二维码,并读取

下面我们讲讲如何读取相机中的二维码.

.Net解析二维码,在我的知识储备里面...常用的只有2个库,一个是QRCode,一个是ZXing.Net.(PS:如果有大神知道更好的,请留言赐教..)

很遗憾QRCode,使用的是GDI+ 也就是System.drawing..很明显..我们在手机端..调用不到..

所以只能用ZXing.Net

我们在nuget中搜索ZXing.Net.

如图:

类型很多..而且有各种版本..我们选择ZXing.Net.Mobile,

当然这里还有个ZXing.Net.Mobile.Forms,这个是封装好的二维码扫描控件..本文主要是学习,所以不使用(当然..你主要是实现功能..就用这个..巨人的肩膀上 多刺激..).

我们首先定义一个方法CodeDecoder来专门解析二维码,代码如下:

二维码解码 CodeDecoder(byte[] data,int width,int height) { byte[] bytes = data;//获取图片字节 //设置位图源 PlanarYUVLuminanceSource source = , ); //处理像素值内容信息 BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); //初始化解析器 ZXing.Reader reader = new QRCodeReader(); //解析位图 ZXing.Result result = reader.decode(bitmap); if (result == null) return null; return result.Text;//返回解析结果 }

 

前面我们说过了.OnPreviewFrame()是照相机预览的回调.所以我们现在就来实现他.

代码如下:

public void OnPreviewFrame(byte[] data, Android.Hardware.Camera camera) { try { previewWidth = camera.GetParameters().PreviewSize.Width; previewHeight = camera.GetParameters().PreviewSize.Height; date = CodeDecoder(data, previewWidth, previewHeight); (date != null) { //跳转回主页面 Intent intent = new Intent(this, typeof(MainActivity)); //放入一个key 为code 的解析后的值 intent.PutExtra(, date); //状态设为OK SetResult(Android.App.Result.Ok, intent); //关闭当前界面 Finish(); } } catch (IOException) { } }

上面的代码,if中的代码就是如何跳转回主界面,并且传递返回值.

 

最后我们用百度的网址,生成一个二维码,调试,扫描..就是前面的效果图拉~

 

 

写在最后

感觉很多东西..其实基本和JAVA都是一样的..

所以不要抱怨Xamarin的资料少..你能查到相关的JAVA资料..基本也就搞定Xamarin了..

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 高德地图和canvas画图结合应用的一些感想(一) - sky2008wj

    高德地图和canvas画图结合应用的一些感想(一) - sky2008wj

    2017-06-24 14:04

  • .NET 开发环境搭建 - Alan_beijing

    .NET 开发环境搭建 - Alan_beijing

    2017-06-20 11:01

  • 微信公众平台网页开发实战--3.利用JSSDK在网页中获取地理位置(HTML5+jQuery) - 一个自由的出版人

    微信公众平台网页开发实战--3.利用JSSDK在网页中获取地理位置(HTML5

    2017-06-20 10:00

  • 微信公众平台网页开发实战--2.从手机相册中选照片然后分享 - 一个自由的出版人

    微信公众平台网页开发实战--2.从手机相册中选照片然后分享 - 一个自

    2017-06-17 11:00

网友点评
8