有什么软件可以扫二维码,又可以扫条形码扫描仪和二维码

二维码如何设置指定的扫描软件或者扫描枪
您当前的位置: &
& 二维码如何设置指定的扫描软件或者扫描枪
点击图片查看大图
二维码如何设置指定的扫描软件或者扫描枪&
二维码扫描枪&
二维码扫描枪&
商业条码扫描枪&
1.00元/件&
最小起订量:
供货总量:
发货期限:
自买家付款之日起 3 天内发货
发布时间:
11:55:36&&有效期至:长期有效
更新时间:
&  二维码如何设置指定的扫描软件或者扫描枪
  枪的话,估计很难,只有在你的软件里面,把枪的SN跟你软件绑定,然后只有通过把二维码加密,然后通过你的软件解密,这样只有你提供的枪在你的软件里才能正确的显示条码内容.首先二维码官方一点的定义:又称二维条码,它是用特定的几何图形按一定规律在平面(二维方向)上分布的黑白相间的图形,是所有信息数据的一把钥匙.说白了是达到一个连接的通道钥匙,就好像开车你要先有钥匙,才能开车,回家你要有钥匙才能开门.二维码对于商家而言就是一个让客户知道他们公司产品的一个渠道,一个营销推广的工具.
  在百度输入二维码制作,可下载制作二维码的软件,很简单的操作,每个软件制作过程不一样,这里没有特别准确的答案,跟着软件提示操作就行.
  二维码的使用很灵活,例如二维码可以印在宣传彩页上,企业名片上,各种利于宣传推广的地方,最常见的使用方法就是:例如一家化妆品公司做活动,门口就会有几张很大的宣传彩页,上面很明显的就会印上该企业的二维码,然后企业代表会说,扫描二维码并关注,有机会享受几折大奖,诸如此类.
  扫描二维码之后会连接到预先设置好的内容,这个内容设置都是在生产二维码的后台操作,有的商家会设置连接的是网站,有的则是一些活动通知,有的是企业介绍,总之别把二维码想得太难,其实你只要去下载一个制作二维码的软件,就会知道要了解二维码,制作二维码很简单,只是使用的方式方法会考虑到企业营销效果综合考虑而已.
  条码扫描器设置这里我们主要分析通过扫描器设置手册可以实现那些扫描枪功能,对通过PC端软件进行条码扫描器设置的描述放在其它的环节中. 3.1恢复出厂设置 这个设置是条码扫描器设置中最重要的一个设置,一般情况下的条码扫描器故障(如无法识读条码等)都可以通过这个条码扫描器设置来解决问题. 3.2条码数据的前缀和后缀添加设置 有些条码应用中要求识读上传后的条码数据具有一定的前缀和后缀来适应系统的一些功能,通过这个条码扫描器设置,可以方便地为条码扫描器进行前缀和后缀的添加. 3.3条码数据的位数截取设置 有些条码应用中要求识读上传后的条码数据删除前几个字符或者后几个字符来适应系统的一些功能,通过这个条码扫描器设置,可以方便地为条码扫描器进行字符位数的删减. 3.4条码扫描器串口通讯产数设置 可以通过这个条码扫描器设置,方便得进行串口参数的修改,如波特率、奇偶校验、停止位、数据位、握手协议等. 3.5条码扫描器扫描模式设置 目前质量上乘的条码扫描器可以有多种扫描方式,如手动按键式扫描、光线常亮式扫描、光线闪烁式扫描、自感条码式扫描,可以通过这个条码扫描器设置,方便地在各种模式之间进行切换. 3.6条码扫描器码制开通设置 条码扫描枪怎么设置条码扫描器为了加快其译码速度,往往对某些支持的条形码码制进行了锁定,默认状态下扫描器无法识读,如果实际中碰到这类型锁定的条码,可以通过这个条码扫描器设置,进行码制的快速便捷开通. 3.7条码扫描器接口类型设置 当条码扫描器进行接口数据线的更换时,可以通过这个条码扫描器设置,进行接口模式的转换,使条码扫描器可以在该接口模式下正常使用. 3.8条码扫描器蜂鸣器设置 当条码扫描器在嘈杂的中与安静的中交替使用时,可以通过这个条码扫描器设置,对条码扫描器的扫描发声的大小进行控制,以更适合对声音的要求.相关产品推荐: Zebra条码打印机Postek条码打印机新大陆数据采集器博欣数据采集器mindeo扫描枪。
广州远景达科技开发有限公司:本产品网址:/b2b/yjd020/sell/itemid-.html条码扫描器 – 最简单的二维码扫描工具[Android]
Loading...
@张振鸣童鞋:求一款安卓二维码扫描软件,点一下软件图标就能直接扫的那种。最好不要有那些乱七八糟的商品比价功能,越简单越好
这款条码扫描器完全符合要求,由于功能单一纯粹,没办法多余介绍了…
无法使用 Google Play 的同学,可以前往官方主页,有 apk 下载。
不错,这个很还是很有用的
按分类查看文章:
大家都在讨论些什么
: 不能在大陆玩么?: 安装后 工具箱,图层组等就无法正常移动了: 好玩: 希望能开发IOS版本,很喜欢这个软件!: 信息一条一条处理不就行了,除了广告。: 不喜欢这种悬浮在屏幕上的东西。: 好像就没有推送垃圾的app
最热门标签
传说中的小众软件 让你的手机应用与众不同。
个人 blog 转载时请遵循 “署名-非商业性使用-相同方式共享” 的创作共用协议;
商业网站或未授权媒体不得复制本站内容。Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
49799人阅读
转载请注明出处:了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,呵呵,然后做项目的时候,老板说要加上二维码扫描功能,然后自己的屁颠屁颠的去百度,google啥的,发现很多朋友都有介绍二维码扫描的功能,然后我就跟着人家的介绍自己搞起了二维码扫描功能,跟着人家的帖子,很快我的项目就加入了扫描二维码的功能,然后自己还很开心。随着微信的到来,二维码越来越火爆,随处能看到二维码,比如商城里面,肯德基,餐厅等等,对于二维码扫描我们使用的是google的开源框架Zxing,我们可以去下载源码和Jar包,之前我项目中的二维码扫描功能只实现了扫描功能,其UI真的是其丑无比,一个好的应用软件,其UI界面也要被大众所接纳,不然人家就不会用你的软件啦,所以说应用软件功能和界面一样都很重要,例如微信,相信微信UI被很多应用软件所模仿,我也仿照微信扫描二维码效果进行模仿,虽然没有微信做的那么精致,但是效果还是可以的,所以将自己修改UI的代码和扫描二维码的代码分享给大家,一是自己以后项目遇到同样的功能直接拷贝来用,二是给还没有加入二维码功能的人一个参考,站在巨人的肩膀上,哈哈,我之前也是站在巨人的肩膀上加上此功能,接下来跟着我一步一步来实现此项功能,里面去除了很多不必要的文件我们先看下项目的结构如果你项目也想加入此功能,你直接将com.mining.app.zxing.camera,com.mining.app.zxing.decoding,com.mining.app.zxing.view这三个包拷贝到你的项目中,然后引入相对应的资源进去,我也是从我的项目中直接引用过来的,包名都没改呢,当然还需要引用Zxing.jarcom.example.qr_codescan包里面有一个MipcaActivityCapture,也是直接引入我之前项目的代码的,这个Activity主要处理扫描界面的类,比如,扫描成功有声音和振动等等,主要关注里面的handleDecode(Result result, Bitmap barcode)方法,扫描完成之后将扫描到的结果和二维码的bitmap当初参数传递到handleDecode(Result result, Bitmap barcode)里面,我们只需要在里面写出相对应的处理代码即可,其他的地方都不用改得,我这里处理扫描结果和扫描拍的照片[java] /**&&*&处理扫描结果&&*&@param&result&&*&@param&barcode&&*/&&public&void&handleDecode(Result&result,&Bitmap&barcode)&{&&&&&&inactivityTimer.onActivity();&&&&&&playBeepSoundAndVibrate();&&&&&&String&resultString&=&result.getText();&&&&&&if&(resultString.equals(""))&{&&&&&&&&&&Toast.makeText(MipcaActivityCapture.this,&"Scan&failed!",&Toast.LENGTH_SHORT).show();&&&&&&}else&{&&&&&&&&&&Intent&resultIntent&=&new&Intent();&&&&&&&&&&Bundle&bundle&=&new&Bundle();&&&&&&&&&&bundle.putString("result",&resultString);&&&&&&&&&&bundle.putParcelable("bitmap",&barcode);&&&&&&&&&&resultIntent.putExtras(bundle);&&&&&&&&&&this.setResult(RESULT_OK,&resultIntent);&&&&&&}&&&&&&MipcaActivityCapture.this.finish();&&}&&我对MipcaActivityCapture界面的布局做了自己的改动,先看下效果图,主要是用到FrameLayout,里面嵌套RelativeLayout,里面的图片也是从微信里面拿出来的,平常我看到需要什么图片就去微信里面找,没有美工的公司的程序员就是苦逼布局代码如下[html] &?xml&version="1.0"&encoding="utf-8"?&&&&FrameLayout&xmlns:android="/apk/res/android"&&&&&&android:layout_width="fill_parent"&&&&&&&&&&android:layout_height="fill_parent"&&&&&&&&&&&RelativeLayout&&&&&&&&&&android:layout_width="fill_parent"&&&&&&&&&&android:layout_height="fill_parent"&&&&&&&&&&&&&&&SurfaceView&&&&&&&&&&&&&&android:id="@+id/preview_view"&&&&&&&&&&&&&&android:layout_width="fill_parent"&&&&&&&&&&&&&&android:layout_height="fill_parent"&&&&&&&&&&&&&&android:layout_gravity="center"&/&&&&&&&&&&&&&&com.mining.app.zxing.view.ViewfinderView&&&&&&&&&&&&&&android:id="@+id/viewfinder_view"&&&&&&&&&&&&&&android:layout_width="wrap_content"&&&&&&&&&&&&&&android:layout_height="wrap_content"&/&&&&&&&&&&&&&&include&&&&&&&&&&&&&&android:id="@+id/include1"&&&&&&&&&&&&&&android:layout_width="fill_parent"&&&&&&&&&&&&&&android:layout_height="wrap_content"&&&&&&&&&&&&&&android:layout_alignParentTop="true"&&&&&&&&&&&&&&layout="@layout/activity_title"&/&&&&&&&&/RelativeLayout&&&&&&/FrameLayout&&&在里面我将界面上面部分写在另一个布局里面,然后include进来,因为这个activity_title在我项目里面还供其他的Activity使用,我也是直接拷贝出来的[html] &?xml&version="1.0"&encoding="utf-8"?&&&&RelativeLayout&xmlns:android="/apk/res/android"&&&&&&android:layout_width="fill_parent"&&&&&&android:layout_height="wrap_content"&&&&&&android:background="@drawable/mmtitle_bg_alpha"&&&&&&&&&&&Button&&&&&&&&&&android:id="@+id/button_back"&&&&&&&&&&android:layout_width="75.0dip"&&&&&&&&&&android:text="返回"&&&&&&&&&&android:background="@drawable/mm_title_back_btn"&&&&&&&&&&android:textColor="@android:color/white"&&&&&&&&&&android:layout_height="wrap_content"&&&&&&&&&&android:layout_centerVertical="true"&&&&&&&&&&android:layout_marginLeft="2dip"&/&&&&&&&&&&TextView&&&&&&&&&&android:id="@+id/textview_title"&&&&&&&&&&android:layout_width="wrap_content"&&&&&&&&&&android:layout_height="wrap_content"&&&&&&&&&&android:layout_alignBaseline="@+id/button_back"&&&&&&&&&&android:layout_alignBottom="@+id/button_back"&&&&&&&&&&android:layout_centerHorizontal="true"&&&&&&&&&&android:gravity="center_vertical"&&&&&&&&&&android:text="二维码扫描"&&&&&&&&&&android:textColor="@android:color/white"&&&&&&&&&&android:textSize="18sp"&/&&&&&&/RelativeLayout&&&在我这个demo里面,有一个主界面MainActivity,里面一个Button, 一个ImageView和一个TextView,点击Button进入到二维码扫描界面,当扫描OK的时候,回到主界面,将扫描的结果显示到TextView,将图片显示到ImageView里面,然后你可以不处理图片,我这里随带的加上图片,主界面的布局很简单如下[html] &RelativeLayout&xmlns:android="/apk/res/android"&&&&&&xmlns:tools="/tools"&&&&&&android:layout_width="match_parent"&&&&&&android:layout_height="match_parent"&&&&&&android:background="#ffe1e0de"&&&&&&&&&&&Button&&&&&&&&&&android:id="@+id/button1"&&&&&&&&&&android:layout_width="fill_parent"&&&&&&&&&&android:layout_height="wrap_content"&&&&&&&&&&android:layout_alignParentTop="true"&&&&&&&&&&android:text="扫描二维码"&/&&&&&&&&&&TextView&&&&&&&&&&android:id="@+id/result"&&&&&&&&&&android:layout_width="fill_parent"&&&&&&&&&&android:layout_height="wrap_content"&&&&&&&&&&android:layout_below="@+id/button1"&&&&&&&&&&android:lines="2"&&&&&&&&&&android:gravity="center_horizontal"&&&&&&&&&&android:textColor="@android:color/black"&&&&&&&&&&android:textSize="16sp"&/&&&&&&&&&&ImageView&&&&&&&&&&android:id="@+id/qrcode_bitmap"&&&&&&&&&&android:layout_width="fill_parent"&&&&&&&&&&android:layout_height="fill_parent"&&&&&&&&&&android:layout_alignParentLeft="true"&&&&&&&&&&android:layout_below="@+id/result"/&&&&/RelativeLayout&&&MainActivity里面的代码如下,里面的功能在上面已经说了[java] package&com.example.qr_&&&&&&import&android.app.A&&import&android.content.I&&import&android.graphics.B&&import&android.os.B&&import&android.view.V&&import&android.view.View.OnClickL&&import&android.widget.B&&import&android.widget.ImageV&&import&android.widget.TextV&&&&public&class&MainActivity&extends&Activity&{&&&&&&private&final&static&int&SCANNIN_GREQUEST_CODE&=&1;&&&&&&/**&&&&&&*&显示扫描结果&&&&&&*/&&&&&&private&TextView&mTextView&;&&&&&&/**&&&&&&*&显示扫描拍的图片&&&&&&*/&&&&&&private&ImageView&mImageV&&&&&&&&&&&&&&@Override&&&&&&protected&void&onCreate(Bundle&savedInstanceState)&{&&&&&&&&&&super.onCreate(savedInstanceState);&&&&&&&&&&setContentView(R.layout.activity_main);&&&&&&&&&&&&&&&&&&&&mTextView&=&(TextView)&findViewById(R.id.result);&&&&&&&&&&&mImageView&=&(ImageView)&findViewById(R.id.qrcode_bitmap);&&&&&&&&&&&&&&&&&&&&//点击按钮跳转到二维码扫描界面,这里用的是startActivityForResult跳转&&&&&&&&&&//扫描完了之后调到该界面&&&&&&&&&&Button&mButton&=&(Button)&findViewById(R.id.button1);&&&&&&&&&&mButton.setOnClickListener(new&OnClickListener()&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&@Override&&&&&&&&&&&&&&public&void&onClick(View&v)&{&&&&&&&&&&&&&&&&&&Intent&intent&=&new&Intent();&&&&&&&&&&&&&&&&&&intent.setClass(MainActivity.this,&MipcaActivityCapture.class);&&&&&&&&&&&&&&&&&&intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);&&&&&&&&&&&&&&&&&&startActivityForResult(intent,&SCANNIN_GREQUEST_CODE);&&&&&&&&&&&&&&}&&&&&&&&&&});&&&&&&}&&&&&&&&&&&&&&&&&&@Override&&&&&&protected&void&onActivityResult(int&requestCode,&int&resultCode,&Intent&data)&{&&&&&&&&&&super.onActivityResult(requestCode,&resultCode,&data);&&&&&&&&&&switch&(requestCode)&{&&&&&&&&&&case&SCANNIN_GREQUEST_CODE:&&&&&&&&&&&&&&if(resultCode&==&RESULT_OK){&&&&&&&&&&&&&&&&&&Bundle&bundle&=&data.getExtras();&&&&&&&&&&&&&&&&&&//显示扫描到的内容&&&&&&&&&&&&&&&&&&mTextView.setText(bundle.getString("result"));&&&&&&&&&&&&&&&&&&//显示&&&&&&&&&&&&&&&&&&mImageView.setImageBitmap((Bitmap)&data.getParcelableExtra("bitmap"));&&&&&&&&&&&&&&}&&&&&&&&&&&&&&break;&&&&&&&&&&}&&&&&&}&&&&&&&}&&上面的代码还是比较简单,但是要想做出像微信那样只的扫描框,紧紧上面的代码是没有那种效果的,我们必须重写com.mining.app.zxing.view包下面的ViewfinderView类,微信里面的都是用的图片,我是自己画出来的,代码注释的比较清楚,大家直接看代码吧,相信你能理解的,如果你要修改扫描框的大小,去CameraManager类里面修改[java] /*&&*&Copyright&(C)&2008&ZXing&authors&&*&&*&Licensed&under&the&Apache&License,&Version&2.0&(the&"License");&&*&you&may&not&use&this&file&except&in&compliance&with&the&License.&&*&You&may&obtain&a&copy&of&the&License&at&&*&&*&&&&&&http://www.apache.org/licenses/LICENSE-2.0&&*&&*&Unless&required&by&applicable&law&or&agreed&to&in&writing,&software&&*&distributed&under&the&License&is&distributed&on&an&"AS&IS"&BASIS,&&*&WITHOUT&WARRANTIES&OR&CONDITIONS&OF&ANY&KIND,&either&express&or&implied.&&*&See&the&License&for&the&specific&language&governing&permissions&and&&*&limitations&under&the&License.&&*/&&&&package&com.mining.app.zxing.&&&&import&java.util.C&&import&java.util.HashS&&&&import&android.content.C&&import&android.content.res.R&&import&android.graphics.B&&import&android.graphics.C&&import&android.graphics.C&&import&android.graphics.P&&import&android.graphics.R&&import&android.graphics.T&&import&android.util.AttributeS&&import&android.view.V&&&&import&com.example.qr_codescan.R;&&import&com.google.zxing.ResultP&&import&com.mining.app.zxing.camera.CameraM&&&&/**&&*&This&view&is&overlaid&on&top&of&the&camera&preview.&It&adds&the&viewfinder&&*&rectangle&and&partial&transparency&outside&it,&as&well&as&the&laser&scanner&&*&animation&and&result&points.&&*&&&*/&&public&final&class&ViewfinderView&extends&View&{&&&&&&private&static&final&String&TAG&=&"log";&&&&&&/**&&&&&&*&刷新界面的时间&&&&&&*/&&&&&&private&static&final&long&ANIMATION_DELAY&=&10L;&&&&&&private&static&final&int&OPAQUE&=&0xFF;&&&&&&&&/**&&&&&&*&四个绿色边角对应的长度&&&&&&*/&&&&&&private&int&ScreenR&&&&&&&&&&&&/**&&&&&&*&四个绿色边角对应的宽度&&&&&&*/&&&&&&private&static&final&int&CORNER_WIDTH&=&10;&&&&&&/**&&&&&&*&扫描框中的中间线的宽度&&&&&&*/&&&&&&private&static&final&int&MIDDLE_LINE_WIDTH&=&6;&&&&&&&&&&&&/**&&&&&&*&扫描框中的中间线的与扫描框左右的间隙&&&&&&*/&&&&&&private&static&final&int&MIDDLE_LINE_PADDING&=&5;&&&&&&&&&&&&/**&&&&&&*&中间那条线每次刷新移动的距离&&&&&&*/&&&&&&private&static&final&int&SPEEN_DISTANCE&=&5;&&&&&&&&&&&&/**&&&&&&*&手机的屏幕密度&&&&&&*/&&&&&&private&static&float&&&&&&&/**&&&&&&*&字体大小&&&&&&*/&&&&&&private&static&final&int&TEXT_SIZE&=&16;&&&&&&/**&&&&&&*&字体距离扫描框下面的距离&&&&&&*/&&&&&&private&static&final&int&TEXT_PADDING_TOP&=&30;&&&&&&&&&&&&/**&&&&&&*&画笔对象的引用&&&&&&*/&&&&&&private&Paint&&&&&&&&&&&&&/**&&&&&&*&中间滑动线的最顶端位置&&&&&&*/&&&&&&private&int&slideT&&&&&&&&&&&&/**&&&&&&*&中间滑动线的最底端位置&&&&&&*/&&&&&&private&int&slideB&&&&&&&&&&&&private&Bitmap&resultB&&&&&&private&final&int&maskC&&&&&&private&final&int&resultC&&&&&&&&&&&&private&final&int&resultPointC&&&&&&private&Collection&ResultPoint&&possibleResultP&&&&&&private&Collection&ResultPoint&&lastPossibleResultP&&&&&&&&boolean&isF&&&&&&&&&&&&public&ViewfinderView(Context&context,&AttributeSet&attrs)&{&&&&&&&&&&super(context,&attrs);&&&&&&&&&&&&&&&&&&&&density&=&context.getResources().getDisplayMetrics().&&&&&&&&&&//将像素转换成dp&&&&&&&&&&ScreenRate&=&(int)(20&*&density);&&&&&&&&&&&&paint&=&new&Paint();&&&&&&&&&&Resources&resources&=&getResources();&&&&&&&&&&maskColor&=&resources.getColor(R.color.viewfinder_mask);&&&&&&&&&&resultColor&=&resources.getColor(R.color.result_view);&&&&&&&&&&&&resultPointColor&=&resources.getColor(R.color.possible_result_points);&&&&&&&&&&possibleResultPoints&=&new&HashSet&ResultPoint&(5);&&&&&&}&&&&&&&&@Override&&&&&&public&void&onDraw(Canvas&canvas)&{&&&&&&&&&&//中间的扫描框,你要修改扫描框的大小,去CameraManager里面修改&&&&&&&&&&Rect&frame&=&CameraManager.get().getFramingRect();&&&&&&&&&&if&(frame&==&null)&{&&&&&&&&&&&&&&return;&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&//初始化中间线滑动的最上边和最下边&&&&&&&&&&if(!isFirst){&&&&&&&&&&&&&&isFirst&=&true;&&&&&&&&&&&&&&slideTop&=&frame.&&&&&&&&&&&&&&slideBottom&=&frame.&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&//获取屏幕的宽和高&&&&&&&&&&int&width&=&canvas.getWidth();&&&&&&&&&&int&height&=&canvas.getHeight();&&&&&&&&&&&&paint.setColor(resultBitmap&!=&null&?&resultColor&:&maskColor);&&&&&&&&&&&&&&&&&&&&//画出扫描框外面的阴影部分,共四个部分,扫描框的上面到屏幕上面,扫描框的下面到屏幕下面&&&&&&&&&&//扫描框的左边面到屏幕左边,扫描框的右边到屏幕右边&&&&&&&&&&canvas.drawRect(0,&0,&width,&frame.top,&paint);&&&&&&&&&&canvas.drawRect(0,&frame.top,&frame.left,&frame.bottom&+&1,&paint);&&&&&&&&&&canvas.drawRect(frame.right&+&1,&frame.top,&width,&frame.bottom&+&1,&&&&&&&&&&&&&&&&&&paint);&&&&&&&&&&canvas.drawRect(0,&frame.bottom&+&1,&width,&height,&paint);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if&(resultBitmap&!=&null)&{&&&&&&&&&&&&&&//&Draw&the&opaque&result&bitmap&over&the&scanning&rectangle&&&&&&&&&&&&&&paint.setAlpha(OPAQUE);&&&&&&&&&&&&&&canvas.drawBitmap(resultBitmap,&frame.left,&frame.top,&paint);&&&&&&&&&&}&else&{&&&&&&&&&&&&&&&&//画扫描框边上的角,总共8个部分&&&&&&&&&&&&&&paint.setColor(Color.GREEN);&&&&&&&&&&&&&&canvas.drawRect(frame.left,&frame.top,&frame.left&+&ScreenRate,&&&&&&&&&&&&&&&&&&&&&&frame.top&+&CORNER_WIDTH,&paint);&&&&&&&&&&&&&&canvas.drawRect(frame.left,&frame.top,&frame.left&+&CORNER_WIDTH,&frame.top&&&&&&&&&&&&&&&&&&&&&&+&ScreenRate,&paint);&&&&&&&&&&&&&&canvas.drawRect(frame.right&-&ScreenRate,&frame.top,&frame.right,&&&&&&&&&&&&&&&&&&&&&&frame.top&+&CORNER_WIDTH,&paint);&&&&&&&&&&&&&&canvas.drawRect(frame.right&-&CORNER_WIDTH,&frame.top,&frame.right,&frame.top&&&&&&&&&&&&&&&&&&&&&&+&ScreenRate,&paint);&&&&&&&&&&&&&&canvas.drawRect(frame.left,&frame.bottom&-&CORNER_WIDTH,&frame.left&&&&&&&&&&&&&&&&&&&&&&+&ScreenRate,&frame.bottom,&paint);&&&&&&&&&&&&&&canvas.drawRect(frame.left,&frame.bottom&-&ScreenRate,&&&&&&&&&&&&&&&&&&&&&&frame.left&+&CORNER_WIDTH,&frame.bottom,&paint);&&&&&&&&&&&&&&canvas.drawRect(frame.right&-&ScreenRate,&frame.bottom&-&CORNER_WIDTH,&&&&&&&&&&&&&&&&&&&&&&frame.right,&frame.bottom,&paint);&&&&&&&&&&&&&&canvas.drawRect(frame.right&-&CORNER_WIDTH,&frame.bottom&-&ScreenRate,&&&&&&&&&&&&&&&&&&&&&&frame.right,&frame.bottom,&paint);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//绘制中间的线,每次刷新界面,中间的线往下移动SPEEN_DISTANCE&&&&&&&&&&&&&&slideTop&+=&SPEEN_DISTANCE;&&&&&&&&&&&&&&if(slideTop&&=&frame.bottom){&&&&&&&&&&&&&&&&&&slideTop&=&frame.&&&&&&&&&&&&&&}&&&&&&&&&&&&&&canvas.drawRect(frame.left&+&MIDDLE_LINE_PADDING,&slideTop&-&MIDDLE_LINE_WIDTH/2,&frame.right&-&MIDDLE_LINE_PADDING,slideTop&+&MIDDLE_LINE_WIDTH/2,&paint);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//画扫描框下面的字&&&&&&&&&&&&&&paint.setColor(Color.WHITE);&&&&&&&&&&&&&&paint.setTextSize(TEXT_SIZE&*&density);&&&&&&&&&&&&&&paint.setAlpha(0x40);&&&&&&&&&&&&&&paint.setTypeface(Typeface.create("System",&Typeface.BOLD));&&&&&&&&&&&&&&canvas.drawText(getResources().getString(R.string.scan_text),&frame.left,&(float)&(frame.bottom&+&(float)TEXT_PADDING_TOP&*density),&paint);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Collection&ResultPoint&&currentPossible&=&possibleResultP&&&&&&&&&&&&&&Collection&ResultPoint&&currentLast&=&lastPossibleResultP&&&&&&&&&&&&&&if&(currentPossible.isEmpty())&{&&&&&&&&&&&&&&&&&&lastPossibleResultPoints&=&null;&&&&&&&&&&&&&&}&else&{&&&&&&&&&&&&&&&&&&possibleResultPoints&=&new&HashSet&ResultPoint&(5);&&&&&&&&&&&&&&&&&&lastPossibleResultPoints&=&currentP&&&&&&&&&&&&&&&&&&paint.setAlpha(OPAQUE);&&&&&&&&&&&&&&&&&&paint.setColor(resultPointColor);&&&&&&&&&&&&&&&&&&for&(ResultPoint&point&:&currentPossible)&{&&&&&&&&&&&&&&&&&&&&&&canvas.drawCircle(frame.left&+&point.getX(),&frame.top&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+&point.getY(),&6.0f,&paint);&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&}&&&&&&&&&&&&&&if&(currentLast&!=&null)&{&&&&&&&&&&&&&&&&&&paint.setAlpha(OPAQUE&/&2);&&&&&&&&&&&&&&&&&&paint.setColor(resultPointColor);&&&&&&&&&&&&&&&&&&for&(ResultPoint&point&:&currentLast)&{&&&&&&&&&&&&&&&&&&&&&&canvas.drawCircle(frame.left&+&point.getX(),&frame.top&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+&point.getY(),&3.0f,&paint);&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//只刷新扫描框的内容,其他地方不刷新&&&&&&&&&&&&&&postInvalidateDelayed(ANIMATION_DELAY,&frame.left,&frame.top,&&&&&&&&&&&&&&&&&&&&&&frame.right,&frame.bottom);&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&}&&&&&&&&public&void&drawViewfinder()&{&&&&&&&&&&resultBitmap&=&null;&&&&&&&&&&invalidate();&&&&&&}&&&&&&&&/**&&&&&&*&Draw&a&bitmap&with&the&result&points&highlighted&instead&of&the&live&&&&&&*&scanning&display.&&&&&&*&&&&&&&*&@param&barcode&&&&&&*&&&&&&&&&&&&An&image&of&the&decoded&barcode.&&&&&&*/&&&&&&public&void&drawResultBitmap(Bitmap&barcode)&{&&&&&&&&&&resultBitmap&=&&&&&&&&&&&invalidate();&&&&&&}&&&&&&&&public&void&addPossibleResultPoint(ResultPoint&point)&{&&&&&&&&&&possibleResultPoints.add(point);&&&&&&}&&&&}&&上面的代码中,中间那根线微信是用的图片,我这里是画的,如果你想更加仿真点就将下面的代码[java] canvas.drawRect(frame.left&+&MIDDLE_LINE_PADDING,&slideTop&-&MIDDLE_LINE_WIDTH/2,&frame.right&-&MIDDLE_LINE_PADDING,slideTop&+&MIDDLE_LINE_WIDTH/2,&paint);&&改成[java] Rect&lineRect&=&new&Rect();&&&&&&&&&&&&&&lineRect.left&=&frame.&&&&&&&&&&&&&&lineRect.right&=&frame.&&&&&&&&&&&&&&lineRect.top&=&slideT&&&&&&&&&&&&&&lineRect.bottom&=&slideTop&+&18;&&&&&&&&&&&&&&canvas.drawBitmap(((BitmapDrawable)(getResources().getDrawable(R.drawable.qrcode_scan_line))).getBitmap(),&null,&lineRect,&paint);&&那条扫描线自己去微信里面找一下,我贴出来的失真了,下载微信apk,将后缀名改成zip,然后解压就行了画扫描框下面字体的代码需要修改下,这样子能根据字体自动排列在中间,如果字太长我没有处理,那个要自动换行,你可以自行处理[java] paint.setColor(Color.WHITE);&&&&paint.setTextSize(TEXT_SIZE&*&density);&&&&paint.setAlpha(0x40);&&&&paint.setTypeface(Typeface.DEFAULT_BOLD);&&&String&text&=&getResources().getString(R.string.R.string.scan_text);&&float&textWidth&=&paint.measureText(text);&&&&canvas.drawText(text,&(width&-&textWidth)/2,&(float)&(frame.bottom&+&(float)TEXT_PADDING_TOP&*density),&paint)&&运行界面截图,其中中间的那根绿色的线会上下移动,跟微信的效果差不多,当然运行你还需要相对应的权限问题,有兴趣的朋友可以去下载demo从8点多写这篇博客写到现在,看起来这么点字,但实际上还是比较耗时间的,如果你觉得这篇文章对你有帮助,你就顶一下,哈哈,洗澡睡觉去了,上面的项目中还有一些资源文件我没有贴出来,想要看效果可以下载源码我在这篇文章中实现了对手机中二维码照片的扫描,并且替换了中间的扫描线,和微信效果更加相似,建议大家去下那文章的项目源码
上一篇下一篇
其实我一直没看懂handleDecode这个方法是在哪个地方调用 的...129楼
单独运行楼主的例子很好没什么问题,但是移植到我自己的项目中,跳转之后黑屏,无法打开摄像头,也没有报错 这是什么原因呢,很着急,望楼主解答128楼
楼主我想在扫描界面加一个button,用于控制和关闭闪光灯,界面已经做好了,请问如何设置?127楼
楼主,我想在扫描界面中加一个BUTTON,用于开启和关闭闪光灯,界面已经好了,请问如何进行设置?126楼
很好用,微信能扫的都能扫,不过不知道为什么我移植过去后扫描线很卡125楼
为什么扫描的灵敏度那么差呢,用微信的没扫完就扫描成功,这个要扫十几次才能扫上124楼
必须要顶123楼
移植失败 【项目可运行。com.mining.app.zxing.view.ViewfinderView不显示】Error LogTue Oct 14 16:16:52 CST 2014activity_capture.xml: java.lang.NullPointerException定位代码ViewfinderView
onDraw()Rect frame = CameraManager.get().getFramingRect();框架不会改,已放弃。不过仍然感谢楼主, DEMO是好的Re:
回复u:DebuggetFramingRect()Point screenResolution = configManager.getScreenResolution();【configManager.getScreenResolution() 为空】这里挂了 不明原因Re:
回复u:原因已查明, 权限没有copy进来。 因为一般我喜欢把权限放在 appliction标签前面写。 哎 我的错122楼
感谢~121楼
移植成功,非常好!120楼
感谢楼主分享,菜鸟来学习了119楼
感谢楼主分享,菜鸟来学习了118楼
感谢博主分享,学习了。117楼
看大家的评论,好像功能还是有点点问题需完善啊116楼
扫描中画面好像发生了拉伸,这个是什么原因导致的。。115楼
只调用一次在CaptureActivity中返回成功的handler中加入restartPreviewAndDecode();这句114楼
看到很多人说只能扫一次,修改如下在CaptureActivity成功的hanlde中加上restartPreviewAndDecode();这句就行了113楼
楼主!请问一下,平板电脑和手机端的一样吗?我运行在平板电脑上怎么没反应!Re:
回复yb:我吧调用后置摄像头换成前置也是不行的112楼
天大问题,请lz不要漠视啊: 我想让其他的应用调用我这个二维码扫描的功能具体情况要怎么搞?111楼
总算找到一个大些的了,呵呵!能用就好啊!110楼
楼主,首先感谢你的分享。其次,我想问:如果在扫描框上面建一个textView,怎么让扫描结果在这个textView中显示!希望楼主尽快回复,急用!!!!谢谢!!!!109楼
楼主威武,我想请问一下,怎么做才能连续扫描,不回传到上一个activity呢。108楼
“你直接将com.mining.app.zxing.camera,com.mining.app.zxing.decoding,com.mining.app.zxing.view这三个包拷贝到你的项目中,然后引入相对应的资源进去”相对应的资源进去是指那些资源107楼
呵呵呵,崩溃了106楼
扫描框的大小改变之后,扫描时系统就崩溃了,求解答105楼
博主,按照你说的修改扫描框的宽度。但是换个屏幕小的手机就不行了。我想问问,怎样让他的宽度去适应不同尺寸的屏幕104楼
只能扫描一次,要退出来才能再扫描,这点不好。103楼
引用“u”的评论:顶一个,不过貌似有点问题,也看了下大家的评论,扫描框的大小、位置变化之后貌似就扫不出来了,哪位大神看...102楼
请问博主,各位好心developer你我想将扫描后,跳转到第三个界面,不想返回第一界面,除了修改startforActivity方法,还要修改那些地方101楼
您好,按照您的方式,改变了扫描筐的大小,然后会崩溃,我没有找出原因i,求指导Re:
回复u:和你一样呢,改下扫描器的高宽,居然就没用了,到底怎么回事?楼主lz快来帮忙解答一下啊100楼
我是菜鸟啊,,我想知道,把三个包复制后,又将xml文件引入了,再将zing包复制到libs文件夹之后,还是报错,该怎样怎么办呢,求老手指点一下,这点东西,已经搞了好几天了。99楼
现在是上到下扫描,我想改为,左到右扫描界面98楼
代码可用,需要把图片传输注释掉,其他正常,感谢楼主分享Re:
回复sinat_:请问楼主
if (currentPossible.isEmpty()) {
lastPossibleResultPoints =
} else {//
possibleResultPoints = new HashSet&ResultPoint&(5);//
lastPossibleResultPoints = currentP//
paint.setAlpha(OPAQUE);//
paint.setColor(resultPointColor);//
for (ResultPoint point : currentPossible) {//
canvas.drawCircle(frame.left + point.getX(), frame.top//
+ point.getY(), 6.0f, paint);//
if (currentLast != null) {//
paint.setAlpha(OPAQUE / 2);//
paint.setColor(resultPointColor);//
for (ResultPoint point : currentLast) {//
canvas.drawCircle(frame.left + point.getX(), frame.top//
+ point.getY(), 3.0f, paint);//
}这段代码有啥作用,去掉后黄点就没有了,功能正常使用,是否有其他影响;还有距离问题,CameraManager里的宽高只能改变展示的大小,并不能改变距离问题,是否有其他方法,微信很近就能响应到97楼
学习了不错的 谢谢96楼
没有跳转。。。95楼
加进去了。怎么扫码的界面怎么没有出来啊。94楼
顶一个,不过貌似有点问题,也看了下大家的评论,扫描框的大小、位置变化之后貌似就扫不出来了,哪位大神看到求指教~~再去研究研究下~~93楼
后哈后哈,已抱走92楼
条码扫描只能是单方向吗?换90度就不行了.91楼
楼主,为什么改变框框大小就不能扫描了?90楼
扫描速度慢啊,不知道哪里可以修改?群主大人89楼
您好,我想改变那个扫描框的位置,应该在什么地方改呢?让扫描框在屏幕的上方而不是中央88楼
请问我这里显示的时候 图片被拉长了怎么回事?87楼
为什么我扫描二维码要隔很远的距离才能扫描成功86楼
我把activity改为fragment
但是放到activity中就不显示扫描的那一个了
全是黑界面
谁能帮忙改一下发过来定不胜感激
开始学的新手!85楼
什么意思,扫完一次出来结果后,要怎么继续下次扫描啊???Re:
回复Syndicator:点击那个btn不就可以继续了吗、、、84楼
你好,下载了你的代码,请问在onActivityResult(int requestCode, int resultCode, Intent data) 里,如何能够得到data的byte[]呢,望解答,谢谢Re:
回复jasonhyl:汗,你这个返回数据要看你放进去神马数据啊,楼主放的bmp、、、你想要byte[]可以自己转换啊。83楼
你好,我用zxing的时候,扫描二维码非常不灵敏,扫很旧都扫不出来,整体的代码跟你的差不多,但是我用的核心包是2.3的,不知道你有没有遇到过这种问题,如果有经验的话请分享一下,谢谢。82楼
程序隐含一个BUG,用bundle来序列化传图片的话。是有大小限制的,在高像素摄像头手机环境下,会出问题。最新的zxing源码已经改成了用byte[]来传图片,建议修改一下。Re:
回复waitianlou:多谢82楼的大神Re:
回复waitianlou:多谢,请问在哪儿才能下载最新的依靠byte[]来传递图片的zxing源码呢 ?Re:
回复yeyuxp:同问,求大神破解81楼
那个黄点怎么去掉呀,各位大神。。。Re:
回复u:找到ViewfinderView这个类,注释掉下面的代码就行了for (ResultPoint point : currentLast) {
canvas.drawCircle(frame.left + point.getX(), frame.top
+ point.getY(), 3.0f, paint);
请问楼主,为什么扫面csdn的二维码,出来的是 /r/XHWSnSrEzhSxhzv_nyB479楼
用什么那个黄色的点就没有了。。。。各位大神呀78楼
感谢分享!!!!!!!77楼
感谢分享!!!!!76楼
感谢楼主分享,之前只是简单的拿来用,现在也可以改成自己想要的界面了75楼
为什么在CameraManager里改了大小之后,扫描完成就直接退出了啊?74楼
我遇到的问题是扫描成功后,跳转不到MainActivity,直接到了一个黑色的界面,看程序代码页没错,但是就是跳转不了Re:
回复ai12345qwert:将扫描界面的Bitmap删除掉,估计是bitmap太大,而Intent携带数据的大小有限制Re:
回复xiaanming:我想知道黄点可以去掉么73楼
楼主大神,请问预览时候偶尔会出现那个黄色的小点点该怎么去掉?!!!!72楼
为什么在CameraManager里改了大小之后,扫描完成就直接退出了啊?Re:
回复a541006:我也遇见了这个问题,不知道您解决了吗?Re:
回复rajeshjy:相同的问题,有大神可以帮忙解决吗Re:
回复rajeshjy:没有解决,估计楼主不理这些小问题,还是自己慢慢研究吧,您要是解决了告诉我一下啊Re:
回复a541006:有可能是setResult返回BitMap太大
你注释点看看71楼
运行过程中,出现这个问题的:java.lang.NoClassDefFoundError:com.mining.app.zxing.view.ViewfinderResultPointCallback是因为没有正确的引入lib。解决方法:在libs目录上点右键,选Bulid path –& Use as source folder。菜单栏:Project -& Clean..一下就好了Re:
回复fufengrui:兄弟,我也遇到这个问题了,按照你的做法将libs--Use as source folder,然后Clean project后,再运行时报错如下:[ 08:49:35 - QR_CodeScan] Dx UNEXPECTED TOP-LEVEL EXCEPTION:java.lang.IllegalArgumentException: already added: Lcom/google/zxing/BarcodeF at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)[ 08:49:35 - QR_CodeScan] Dx 1 aborting[ 08:49:35 - QR_CodeScan] Conversion to Dalvik format failed with error 1Re:
回复ai12345qwert:已解决,项目中zxing.jar和core.jar重复了,删除一个即可70楼
学习了!69楼
执行Toast.makeText(MipcaActivityCapture.this, "Scan failed!", Toast.LENGTH_SHORT).show(); 后上面的黄色点不出现,就是说摄像头识别不了二维码,仅是摄像头显示图像,是什么原因?
发表评论:
馆藏&18954
TA的最新馆藏

我要回帖

更多关于 什么软件可以扫条形码 的文章

 

随机推荐