用zing QR_code生成的二维码扫描软件,为什么用zing的扫描不出来?急

94157人阅读
转载请注明出处:了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,呵呵,然后做项目的时候,老板说要加上二维码扫描功能,然后自己的屁颠屁颠的去百度,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)里面,我们只需要在里面写出相对应的处理代码即可,其他的地方都不用改得,我这里处理扫描结果和扫描拍的照片 /**
* 处理扫描结果
* @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();
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,里面的图片也是从微信里面拿出来的,平常我看到需要什么图片就去微信里面找,没有美工的公司的程序员就是苦逼布局代码如下&?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& /&
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使用,我也是直接拷贝出来的&?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& &
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& /&
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里面,然后你可以不处理图片,我这里随带的加上图片,主界面的布局很简单如下&RelativeLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:background=&#ffe1e0de& &
android:id=&@+id/button1&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:layout_alignParentTop=&true&
android:text=&扫描二维码& /&
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里面的代码如下,里面的功能在上面已经说了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 mTextV
* 显示扫描拍的图片
private ImageView mImageV
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() {
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);
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&));
上面的代码还是比较简单,但是要想做出像微信那样只的扫描框,紧紧上面的代码是没有那种效果的,我们必须重写com.mining.app.zxing.view包下面的ViewfinderView类,微信里面的都是用的图片,我是自己画出来的,代码注释的比较清楚,大家直接看代码吧,相信你能理解的,如果你要修改扫描框的大小,去CameraManager类里面修改/*
* 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 final int TEXT_SIZE = 16;
* 字体距离扫描框下面的距离
private static final int TEXT_PADDING_TOP = 30;
* 画笔对象的引用
* 中间滑动线的最顶端位置
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);
public void onDraw(Canvas canvas) {
//中间的扫描框,你要修改扫描框的大小,去CameraManager里面修改
Rect frame = CameraManager.get().getFramingRect();
if (frame == null) {
//初始化中间线滑动的最上边和最下边
if(!isFirst){
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,
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);
//画扫描框边上的角,总共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 =
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 =
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);
上面的代码中,中间那根线微信是用的图片,我这里是画的,如果你想更加仿真点就将下面的代码canvas.drawRect(frame.left + MIDDLE_LINE_PADDING, slideTop - MIDDLE_LINE_WIDTH/2, frame.right - MIDDLE_LINE_PADDING,slideTop + MIDDLE_LINE_WIDTH/2, paint);改成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,然后解压就行了画扫描框下面字体的代码需要修改下,这样子能根据字体自动排列在中间,如果字太长我没有处理,那个要自动换行,你可以自行处理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点多写这篇博客写到现在,看起来这么点字,但实际上还是比较耗时间的,如果你觉得这篇文章对你有帮助,你就顶一下,哈哈,洗澡睡觉去了,上面的项目中还有一些资源文件我没有贴出来,想要看效果可以下载源码我在这篇文章中实现了对手机中二维码照片的扫描,并且替换了中间的扫描线,和微信效果更加相似,建议大家去下那文章的项目源码
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1479262次
积分:14827
积分:14827
排名:第294名
原创:60篇
转载:15篇
评论:3088条
Android 技术讨论群
我的联系方式
文章:16篇
阅读:275981
(3)(1)(1)(1)(1)(3)(4)(4)(2)(2)(5)(6)(10)(8)(15)(4)(2)(1)(2)PHP生成二维码(使用PHP QR Code二维码生成类库)-Php应用-Php教程-壹聚教程网PHP生成二维码(使用PHP QR Code二维码生成类库)PHP生成二维码例子我们使用到了PHP QR Code类库来生成了,有了它我们生成二维码就像echo a这么简单听,下面来给各位介绍一下吧,希望对各位会带来帮助哦。 以前使用提供了较为完善的二维码生成接口,调用API接口很简单,但是现在由于访问google出现问题,需要使用其他的方法生成二维码。
PHP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,
官网地址:http://phpqrcode.sourceforge.net
下载官网提供的类库后,只需要使用phpqrcode.php就可以生成二维码了,当然您的PHP环境必须开启支持GD2。 &&
qrlib.php 是完整版,官方的调用实例:
QRcode::png('code data text', 'filename.png'); // creates file
QRcode::png('some othertext 1234'); // creates code image and outputs it directly into browser
phpqrcode.php 是合并版,只有一个文件,但生成速度较慢且不太准确。使用方法:
phpqrcode.php提供了一个关键的png()方法。
public static function png($text, $outfile=false, $level=QR_ECLEVEL_L, $size=3, $margin=4,&
$saveandprint=false)&
&&& $enc = QRencode::factory($level, $size, $margin);
&&& return $enc-&encodePNG($text, $outfile, $saveandprint=false);
} 参数$text表示生成二位的的信息文本;参数$outfile表示是否输出二维码图片文件,默认否;参数$level表示容错率,也就是有被覆盖的区域还能识别,分别是 L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%); 参数$size表示生成,默认是3;参数$margin表示二维码周围边框空白区域间距值,默认是4;参数$saveandprint表示是否保存二维码并显示,默认是不保存显示。
'phpqrcode.php';
QRcode::png('http://mingzi.111cn.net'); 上面这段代码就输出了这张二维图
&那么实际应用中,我们会在二维码的中间加上自己的LOGO,已增强宣传效果。先使用PHP QR Code生成一张二维码图片,然后再利用php的image相关函数,将事先准备好的logo图片加入到刚生成的原始二维码图片中间,然后重新生成一张新的二维码图片。当然这个时候选择容错率H比较好。
include 'phpqrcode.php';&
$value = 'http://www.111cn.net'; //二维码内容
$qr_eclevel = 'H';//容错级别
$picsize = 6;//生成
QRcode::png($value, 'qrcode.png', $qr_eclevel, $picsize);//生成二维码图片
$logo = 'logo.png';//准备好的logo图片
$QR = 'qrcode.png';//已经生成的原始二维码图
if ($logo !== FALSE) {
&&& $QR = imagecreatefromstring(file_get_contents($QR));
&&& $logo = imagecreatefromstring(file_get_contents($logo));
&&& $QR_width = imagesx($QR);//二维码图片宽度
&&& $QR_height = imagesy($QR);//二维码图片高度
&&& $logo_width = imagesx($logo);//logo图片宽度
&&& $logo_height = imagesy($logo);//logo图片高度
&&& $logo_qr_width = $QR_width / 5;
&&& $scale = $logo_width/$logo_qr_
&&& $logo_qr_height = $logo_height/$
&&& $from_width = ($QR_width - $logo_qr_width) / 2;
&&& //重新组合图片并调整大小
&&& imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,&
&&& $logo_qr_height, $logo_width, $logo_height);
//输出图片
imagepng($QR, 'myxzy.png');
echo '&img src=&myxzy.png&&';
好了这样就生成了我们要的二维码图片了,今天由于时间有限就不介绍了,下次介绍一个利用它生成网址 wap版的地址哦。
上一页: &&&&&下一页:相关内容已有 86 人收藏
&&&&将字符串生成二维码。能够将一个字符串(NSString)转换成一个二维码图像(UIImage)。代码中用到了类库libqrencode。
测试环境:
&&&&[Code4App]编译测试,测试环境:Xcode 4.3, iOS 5.0。
相关代码:
& (10457次查看,2387次下载)
& (28409次查看,9037次下载)
& (30669次查看,14268次下载)
& (10327次查看,1428次下载)
& (85635次查看,29554次下载)
& (37738次查看,17120次下载)
& (66431次查看,24703次下载)
代码评论:
登录后方可评论
亲测了下,中文生成二维码,扫描后能出正确的中文
登录后方可评论
说错了,用的不是这个demo,是这个链接里的 /ios/二维码扫描和生成/501a70f100000
登录后方可评论
很好用的小程序,中文识别没问题啊
登录后方可评论
中文怎么乱码哦
登录后方可评论
-控件分类-
-功能分类-
耗时 0.1373 秒APP截图: (点击图片查看大图)
i派党编辑评测
iTunes官方简介
vV1.6版本新功能
如果你想扫描二维码或者自动生成二维码,这个应用程序可以帮你实现。它可以详细显示二维码的信息,并且可以生成二维码图像,你可以把扫描的二维码信息进行保存,而且生成二维码的操作很简单,只是点击一个按钮而已。它的按钮功能如下:Scan表示可以扫描二维码。?表示可以生成二维码文本。Url表示可以自动加载网站进行扫描二维码信息。c表示可以直接拨打扫描到的二维码中的号码。M表示可以通过电子邮件发送二维码图像。+表示可以把二维码加入收藏列单。book是你最喜欢的列表。注:苹果i派党所有文章均为苹果I派党原创编译评测,转载请务必注明出处.
* Write words/sentence and generate
QR-Code with one button,
* Send QR-CODE image by e-mail,
* Scan QR-CODE and get informations behind the code if it is web-link than open web-link and show contents on the web browser in this application,
* Save generated qr-codes into your favourites list.
* Create .csv file on your desktop computer and use that file in this application to check product barcodes ,
* Application can say product name and column number
if it is in the .csv file (.csv file should have very basic terms. First line of the .csv file should have column labels like Name, Barcode1, Barcode2, etc, and other lines should have same column order and format like Test Product,98,)
It is very easy and user friendly application.
Buttons on the toolbar :
Scan : QR-Code / Barcode Scanner,
Generate :
Generate QR-Code for the text in gray colour field,
Application is loading www url automatically if scanned qr-code has url information,
Call the number if scanned QR-Code has phone number,
Mail QR-Code image to your e-mail,
Add favourite list to scanned QR-Code,
Favourites list.上一条:下一条:
苹果i派党友情提醒,最新版本 V1.6 中的新功能:We have added very useful new function to this application.
You can create a .csv file on your desktop computer and use that file in this application to check product barcodes.
if scanned barcodes in the file application can use voice speech engine and say product name/barcode from 20 languages.
二维码扫描/生成高清版
相关游戏资讯相关苹果Apps相关安卓Apps相关WP Apps
爱派实验室
开发者交流群:3467414
(加群请输入:来自苹果i派党)
开发者服务}

我要回帖

更多关于 二维码扫描软件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信