UNITY2021 开发安卓app 扫描一维二维条码
2016年,我用PDA(WINCE)开发了潍柴汽车物料仓库收货程序,实现物料扫描数据直连SAP服务器。记得当时PDA扫描一维码时很快,扫描二维码时,明显就要慢一些。
潍汽ERP系统PDA终端直连解决方案
2017年,胡总的需求使用终端直连SAP,实现验证总装工位上的BOM准确性,为LES配送纠正数据,我用UNITY开发了一个安卓APP。记得当时使用手机扫描一维码时是比较慢的,我的华为P7手机扫描一下VIN码大概要2~3秒钟,还总是扫不到。
潍汽ERP系统安卓终端直连解决方案
今天突然想到,这几年微信扫描支付很便捷,可谓所见即所得,扫描的速度非常快,难道是手机硬件提高后情况改变了?打开UNITY,写了一个APP,用手机测试了一下,果然和微信的扫描速度一样的秒扫。那手机硬件如此强大的今天,选择条码获取的终端设备,还需要什么PDA啊?手机应该足够了。
做个笔记详细记录一下:
1、安装UNITY 2021
登录官网下载UNITY HUB,安装选择UNITY2021正式版本,安装时把安卓的SDK和NDK一起安装,很方便打一个勾就行,再不需要提前去安装android studio了。
2、新建一个UNITY2D项目
在海尔啊骑里面,Main Camera主摄像机中添加一个Canvas桌布:
Canvas桌布的空间属性中,选择"Camera摄像机“,2D平面即桌布就是摄像机的视野。
注意红色的箭头,需要把摄像机拖到这里,就和桌布建立了关系。
在game视图中设定分辨率,竖屏:
我们再在桌布上放上RawImage,button,Text三个控件。
RawImage用来显示手机摄像头,button按一下就识别一下条码,Text用来显示条码的文本内容。
3、程序脚本
在桌布控件上,新建一个C#脚本,每一个物体都可以挂载脚本,我们这里给桌布挂一个就好。
使用脚本之前,还需要导入一个ZXING开源的条码扫描库”zxing.unity.dll“看这名字就知道zxing专门为unity提供的:
我的网盘下载 zxing.unity.dll 版本是16.6
链接:https://pan.baidu.com/s/1wAcXdRcjloD6MWFouA0YCA
提取码:bkjs
全部代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using ZXing;
using ZXing.QrCode;public class NewBehaviourScript : MonoBehaviour
{public RawImage m_RawImage;public Text m_Text; private WebCamTexture m_webCameraTexture; // Start is called before the first frame updatevoid Start(){WebCamDevice[] tDevices = WebCamTexture.devices; //获取所有摄像头string tDeviceName = tDevices[0].name; //获取第一个摄像头,用第一个摄像头的画面生成图片信息 m_webCameraTexture = new WebCamTexture(tDeviceName, (int)m_RawImage.rectTransform.rect.width, (int)m_RawImage.rectTransform.rect.height);//名字,宽,高m_webCameraTexture.Play(); //开始实时显示m_RawImage.texture = m_webCameraTexture; //赋值图片信息 }public void CheckQRCode(){m_Text.text = "Scan......";Color32[] m_colorData = m_webCameraTexture.GetPixels32(); //存储摄像头画面的颜色数组 BarcodeReader m_barcodeRender = new BarcodeReader(); //二维码的变量 var s = m_barcodeRender.Decode(m_colorData, m_webCameraTexture.width, m_webCameraTexture.height);//将画面中的二维码信息检索出来m_Text.text = s.Text;}// Update is called once per framevoid Update(){ }
}
脚本中出现了public全局变量后,在桌布的属性节目中,找到脚本界面属性,发现全局变量还需要和UI控件关联上,方法也是把控件拖上去,就和UI上的控件关联上了:
4、解决一个 UNITY zxing 竖屏扫描摄像头画面都是旋转了90度的问题:
网上的例子,大都在问这个问题,我已经解决了,把RawImage控件,旋转属性中,设置-90度即可:
5、编译UNITY APP
打开手机的USB调试模式,用USB数据线连接电脑与手机,UNITY中切换平台至android,直接编译运行即可:
------------2021.7.8-----扫码上传服务器---------------
手机上扫到条码数据后,我还可以上传到自己的web服务器上:
一、UNITY增加上传服务器的全部代码:
使用HTTP GET把条码数据传给服务器
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using UnityEngine;
using UnityEngine.UI;using ZXing;
using ZXing.QrCode;public class NewBehaviourScript : MonoBehaviour
{public RawImage m_RawImage;public Text m_Text;private WebCamTexture m_webCameraTexture;// Start is called before the first frame updatevoid Start(){WebCamDevice[] tDevices = WebCamTexture.devices; //获取所有摄像头string tDeviceName = tDevices[0].name; //获取第一个摄像头,用第一个摄像头的画面生成图片信息 m_webCameraTexture = new WebCamTexture(tDeviceName, (int)m_RawImage.rectTransform.rect.width, (int)m_RawImage.rectTransform.rect.height);//名字,宽,高m_webCameraTexture.Play(); //开始实时显示m_RawImage.texture = m_webCameraTexture; //赋值图片信息}// Update is called once per framevoid Update(){ }public void OnMyClickButton(){m_Text.text = "Scan......";Color32[] m_colorData = m_webCameraTexture.GetPixels32(); //存储摄像头画面的颜色数组 BarcodeReader m_barcodeRender = new BarcodeReader(); //二维码的变量 var s = m_barcodeRender.Decode(m_colorData, m_webCameraTexture.width, m_webCameraTexture.height);//将画面中的二维码信息检索出来m_Text.text = s.Text;string url = "http://esb.baonengmotor.com/GetClientPost.aspx";string postDataStr = "username=liuxin&password=123456&ordno="+ s.Text;string result = HttpGet(url, postDataStr); }//用于http get请求public static string HttpGet(string Url, string postDataStr){HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr);request.Method = "GET";request.ContentType = "text/html;charset=UTF-8";HttpWebResponse response = (HttpWebResponse)request.GetResponse();Stream myResponseStream = response.GetResponseStream();StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);string retString = myStreamReader.ReadToEnd();myStreamReader.Close();myResponseStream.Close();return retString;}}
二、web服务器接收的全部.net代码:
当然,web这还是使用了EF6和FineUI框架,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace WMS
{public partial class GetClientPost : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){//http://esb.baonengmotor.com/GetClientPost.aspx?username=liuxin&password=123456&ordno=fdafgagfdagafd789078906fadgdafg6598//http://localhost:12345/GetClientPost.aspx?username=liuxin&password=123456&ordno=fdafgagfdagafd789078906fadgdafg6598string username = Request["username"];string password = Request["password"];string ordno = Request["ordno"];var someone = (from t in po.db.BA_USERwhere(t.ZUSER.Equals(username) &&t.PASSWORD.Equals(password))select t).FirstOrDefault();if (someone == null) { Response.Write("user or pass error."); return; }JK_MOM_MileStoneReport one = new JK_MOM_MileStoneReport();one.OSBID = username; one.SERNO = username;one.ORDNO = ordno;one.ZPASS_S = DateTime.Now.Date;one.ZPASS_T = DateTime.Now.TimeOfDay;po.pdadb.JK_MOM_MileStoneReport.Add(one);po.pdadb.SaveChanges();Response.Write("DataSaved.");/*var some = from w in po.db.RE_USER_ROLEfrom t in po.db.RE_ROLE_TCODEwhere(w.ZUSER.Equals(username) && w.ROLE.Equals(t.ROLE) )select new{ t.TCODE};foreach (var one in some){ Response.Write(one.TCODE+",");}*/}}
}
UNITY2021 开发安卓app 扫描一维二维条码相关推荐
- 安卓app,iOS二维码下载链接FIR
企业APP开发出来以后,需要放到互联网上面推广. 现推荐一个比较好用的企业APP管理网站http://fir.im/. 1.先去http://fir.im/官网上面注册一个账号. 2.上传你的安卓ap ...
- 小程序实现一维二维条码
扫码之后的样式:点击图标实现扫码功能,将信息返回给前端进行展示 wxml <view style="width:90%;margin:5% 0 5% 5%"> < ...
- 一码多用:扫描一个二维码自动跳转支付宝/微信小程序、安卓/iosAPP
随着支付宝,微信小程序的慢慢崛起,现在很多公司同一款程序都开发了四个版本.支付宝/微信小程序.安卓/iosAPP.但是随着程序的增加,引导用户使用就成了问题.比如,一家店门口如何贴一张二维码.实现用户 ...
- 【Android App】人脸识别中扫描识别二维码实战解析(附源码和演示 超详细)
需要源码请点赞关注收藏后评论区留言私信~~~ 一.扫描识别二维码 不仅可以利用zxing库生成二维码,同样利用zxing库可以扫描二维码并解析得到原始文本,此时除了给build.gradle添加如下一 ...
- 安卓app和苹果app共用一个二维码
应项目要求,现在安卓app和苹果app共用一个二维码,对外提供下载: <html><head><meta http-equiv="Content-Type&qu ...
- 想用二维码推广应用,如何保证 Andriod 用户和 iOS 用户扫描同一个二维码后获得相应的 App ?
想用二维码推广应用,如何保证 Andriod 用户和 iOS 用户扫描同一个二维码后获得相应的 App ? 这个问题纠结了好些天,后来想到的办法是:把桥页地址生成二维码,扫描后跳到桥页,在桥页判断平台 ...
- 浅析IM即时通讯开发之扫码登录二维码
二维码技术使用起来很简单,本系列的前三篇文章也专门针对IM扫码登录这个功能做了详细的分享,但本着学习技术不留死角的习惯,我认为有必要单独学习一下到底什么是二维码(说不定哪天被个刚入行的程序员轻轻一句& ...
- python能开发安卓app吗_如何Python写一个安卓APP
前言:用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择,而且实在不想学习Java,再者,就编程而言已经会的就Python与Golang(注:Python,Golang水平都一般 ...
- python安卓应用程序开发,python怎么开发安卓app
python可以写软件么怎么写? 22点24分准时推送,第一时间送达编辑:技术君 | 来源:youerning上一篇:正文前言用 Python 写安卓 APP 肯定不是最好的选择,目前用Java和 k ...
- php 冒泡排序数组,php一维二维数组键之冒泡排序
php一维二维数组键之冒泡排序 功能:对数组进行重新排序. 说明:冒泡排序 (一维数组)(二维数组某个健排序) 两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据 ...
最新文章
- linux主机密钥管理,管理ssh主机和私钥的最佳方法
- 【RecyclerView】 三、RecyclerView 布局 ( 线性布局管理器 LinearLayoutManager )
- Skpi List跳表
- 用JavaScript玩转计算机图形学(一)光线追踪入门
- php输出多维json,json多维数组怎么利用php进行构造
- 岗位推荐 | 蚂蚁金服招聘机器学习、自然语言处理算法工程师
- mysql创建表格1warning_MySQL:创建、修改和删除表
- gb50243-2016通风与空调工程施工质量验收规范_【规范】现行建筑标准规范集合:(六)专业工程...
- 云服务器磁盘挂载_实战记录阿里云服务器不关机扩展系统盘容量/磁盘扩容
- ionic3 图片(轮播)预览 ionic-gallary-modal组件使用方法
- 惯量比多少合适_详解】伺服电机负载惯量比的合理取值汇总
- 580刷590bios_AMD rx470/480/570/580/590高端技术公版/非公强刷BIOS教程教学-没差老师出品...
- 汽车超人:从电商到汽后新零售的华丽转身
- MATLIB从excel表中读取数据并画出函数图像
- 泰克Tektronix示波器软件TDS520|TDS1001|TDS1002上位机软件NS-Scope
- 对象的高级使用-插入图片对象(转)
- 移动硬盘坏点测试软件,移动硬盘坏道检测工具
- easyExcel的一些操作
- 1110 - 好像事情没我想的那么糟
- 笔记本计算机的功率一般多少钱,笔记本功率一般是多少瓦