如何在Android电脑摄像头扫描条形码读取条形码

如何用js实现调用手机摄像头扫描条形码然后带出条形码的值到文本框_百度知道
如何用js实现调用手机摄像头扫描条形码然后带出条形码的值到文本框
可以提供写js插件,和实现脚本。小弟万分感谢
我有更好的答案
js能不能解算条形码都是个问题,js调用手机硬件就更不可能了。这个恐怕还是得做成app才能实现。安卓启用摄像头必须要取得Camera 权限—— 应用程序必须通过下面这句请求摄像头的使用权限。光是下面这句,js有这个?更别说后面实现具体操作的一系列方法和类全是java代码。 &uses-permission android:name=&android.permission.CAMERA& /&苹果、winphone同理,都有自己的方法。js基本上就只能用在网页里面,不是万能的
调摄像头用phonegap. 能存成图片...解析不太清楚.有个条形码的JS库我记着.之后能能得到那个值了.
本回答被网友采纳
为您推荐:
其他类似问题
您可能关注的内容
手机摄像头的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。本文来自 ,引用必须注明出处!
越来越多的手机具备自动对焦的拍摄功能,这也意味着这些手机可以具备条码扫描的功能.......手机具备条码扫描的功能,可以优化购物流程,快速存储电子名片(二维码)等。
本文使用ZXing 1.6实现条码/二维码识别。是个很经典的条码/二维码识别的开源类库,long long ago,就有开发者在J2ME上使用ZXing了,不过要支持JSR-234规范(自动对焦)的手机才能发挥其威力,而目前已经有不少Android手机具备自动对焦的功能。
本文代码运行的结果如下,使用91手机助手截图时,无法截取SurfaceView的实时图像:
本文使用了ZXing1.6的core,即把/zxing-1.6/core/下的src复制覆盖工程的src;另外还要使用到/zxing-1.6/android/下的PlanarYUVLuminanceSource.java。
PS:/zxing-1.6/android/ 是BarcodeScanner的源码,本文程序相当于BarcodeScanner的精简版,只保留最基本的识别功能。
本文源码工程的下载地址如下:
源码目录结果如下图,ChecksumException.java下面还有很多源文件,截图尚未列出:
本文例子必须要开摄像头和自动对焦的权限,不然启动时会报异常,所用的权限如下:
android:name="android.permission.CAMERA"
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:name="android.hardware.camera"
android:name="android.hardware.camera.autofocus"
main.xml源码如下,main.xml必须要用到FrameLayout才能重叠控件实现“范围框”的效果:
version="1.0" encoding="utf-8"
android:id="@+id/FrameLayout01"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:id="@+id/sfvCamera" android:layout_width="fill_parent"
android:id="@+id/RelativeLayout01"
android:layout_height="fill_parent" android:layout_width="fill_parent"
android:id="@+id/ImageView01"
android:layout_height="100dip" android:layout_width="160dip"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" android:layout_width="300dip"
android:background="#55FF6666" android:id="@+id/centerView"
android:layout_height="180dip"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content" android:layout_below="@+id/centerView"
android:layout_height="wrap_content" android:text="Scanning..."
android:id="@+id/txtScanResult" android:textColor="#FF000000"
testCamera.java是主类,负责控制Camera和对图像做解码,源码如下:
package com.testC
import java.util.T
import java.util.TimerT
import com.google.zxing.BinaryB
import com.google.zxing.MultiFormatR
import com.google.zxing.R
import com.google.zxing.Android.PlanarYUVLuminanceS
import com.google.zxing.common.HybridB
import android.app.A
import android.graphics.B
import android.hardware.C
import android.os.B
import android.view.SurfaceV
import android.view.V
import android.widget.ImageV
import android.widget.TextV
public class testCamera extends Activity {
private SurfaceView sfvC
private SFHCamera sfhC
private ImageView imgV
private View centerV
private TextView txtScanR
private Timer mT
private MyTimerTask mTimerT
final static int width = 480;
final static int height = 320;
int dstLeft, dstTop, dstWidth, dstH
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.setTitle("Android条码/二维码识别Demo-----hellogv");
imgView = (ImageView) this.findViewById(R.id.ImageView01);
centerView = (View) this.findViewById(R.id.centerView);
sfvCamera = (SurfaceView) this.findViewById(R.id.sfvCamera);
sfhCamera = new SFHCamera(sfvCamera.getHolder(), width, height,
previewCallback);
txtScanResult=(TextView)this.findViewById(R.id.txtScanResult);
mTimer = new Timer();
mTimerTask = new MyTimerTask();
mTimer.schedule(mTimerTask, 0, 80);
class MyTimerTask extends TimerTask {
public void run() {
if (dstLeft == 0) {
dstLeft = centerView.getLeft() * width
/ getWindowManager().getDefaultDisplay().getWidth();
dstTop = centerView.getTop() * height
/ getWindowManager().getDefaultDisplay().getHeight();
dstWidth = (centerView.getRight() - centerView.getLeft())* width
/ getWindowManager().getDefaultDisplay().getWidth();
dstHeight = (centerView.getBottom() - centerView.getTop())* height
/ getWindowManager().getDefaultDisplay().getHeight();
sfhCamera.AutoFocusAndPreviewCallback();
private Camera.PreviewCallback previewCallback = new Camera.PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera arg1) {
PlanarYUVLuminanceSource source = new PlanarYUVLuminanceSource(
data, width, height, dstLeft, dstTop, dstWidth, dstHeight);
Bitmap mBitmap = source.renderCroppedGreyscaleBitmap();
imgView.setImageBitmap(mBitmap);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
MultiFormatReader reader = new MultiFormatReader();
Result result = reader.decode(bitmap);
String strResult = "BarcodeFormat:"
+ result.getBarcodeFormat().toString() + "
+ result.getText();
txtScanResult.setText(strResult);
} catch (Exception e) {
txtScanResult.setText("Scanning");
SFHCamera.java是Camera控制类,源码如下:
package com.testC
import java.io.IOE
import android.graphics.PixelF
import android.hardware.C
import android.util.L
import android.view.SurfaceH
public class SFHCamera implements SurfaceHolder.Callback{
private SurfaceHolder holder = null;
private Camera mC
private int width,
private Camera.PreviewCallback previewC
public SFHCamera(SurfaceHolder holder,int w,int h,Camera.PreviewCallback previewCallback) {
this.holder =
this.holder.addCallback(this);
this.holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
this.previewCallback=previewC
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(width, height);
parameters.setPictureFormat(PixelFormat.JPEG);
mCamera.setParameters(parameters);
mCamera.startPreview();
Log.e("Camera","surfaceChanged");
public void surfaceCreated(SurfaceHolder arg0) {
mCamera = Camera.open();
mCamera.setPreviewDisplay(holder);
Log.e("Camera","surfaceCreated");
} catch (IOException e) {
mCamera.release();
mCamera = null;
public void surfaceDestroyed(SurfaceHolder arg0) {
mCamera.setPreviewCallback(null);
mCamera.stopPreview();
mCamera = null;
Log.e("Camera","surfaceDestroyed");
public void AutoFocusAndPreviewCallback()
if(mCamera!=null)
mCamera.autoFocus(mAutoFocusCallBack);
private Camera.AutoFocusCallback mAutoFocusCallBack = new Camera.AutoFocusCallback() {
public void onAutoFocus(boolean success, Camera camera) {
if (success) {
mCamera.setOneShotPreviewCallback(previewCallback);
其中testCamera.java的Camera.PreviewCallback previewCallback 是整个程序的逻辑核心,作为回调函数给SFHCamera.java的内部Camera类调用。
浏览: 43151 次
来自: 北京
推荐使用http://buttoncssgenerator.c ...
貌似没有效果啊 。
ST很强大。给大家推荐个:http://www.wpf100. ...
可以给个源码联系不.flyingsir.zw@gmail.co ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'android:[7]扫描和生成二维码条形码_百度经验
&&&&&&&&&手机软件android:[7]扫描和生成二维码条形码听语音
百度经验:jingyan.baidu.com最近研究了一下android下二维码的扫描和生成,特来大家分享一下,避免你们再走我走过的弯路。提到二维码的扫描,就不得不提ZXing开源项目,ZXing是用Java实现的多种格式的1D/2D条码图像处理库,可以实现使用手机的内置的摄像头完成条形码的扫描及解码。百度经验:jingyan.baidu.com1我们所实现的扫描和生成二维码就是利用了ZXing下的相关代码,文章参考资料付上案例demo,有一点android基础的,应该都可以看懂。2如果demo下载有错误,首先修改default.properties文件下target=android-7 的sdk版本号,改成自己android的版本号。如果有乱码错误,修改编码方式,一般是utf-8或者GBK。END|经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。投票(0)已投票(0)有得(0)我有疑问(0)◆◆说说为什么给这篇经验投票吧!我为什么投票...你还可以输入500字◆◆只有签约作者及以上等级才可发有得&你还可以输入1000字◆◆如对这篇经验有疑问,可反馈给作者,经验作者会尽力为您解决!你还可以输入500字相关经验142011热门杂志第1期你不知道的iPad技巧3785次分享第1期win7电脑那些事6636次分享第2期新人玩转百度经验1406次分享第1期Win8.1实用小技巧2651次分享第1期小白装大神1915次分享◆请扫描分享到朋友圈在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
最近在做二维码相关的开发,网上都是清一色的Zxing。我用Zxing的时候把扫描框的位置调了之后不自动对焦,无法扫描二维码。在看Zxing源码的时候偶然发现Android中的Camera中有个SCENE_ MODE_BARCODE的参数,不知道有没有人用过。用这个能不能实现二维码扫描呢?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
-0- 评论把我引来了。SCENE_MODE_BARCODE 支持这个场景的有限,貌似只是场景的设置吧? 起码。。。Nexus5就不支持这个mode。自动对焦需要AutoFocusManager这个类去支持,你可以去看下这个类的源码~~谢
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这个是可以的,不过这个参数只是告诉手机:App需要使用摄像头读取二维码。但是并不是所有的设备硬件都支持这种模式(Android 你懂的…)。所以,为了你程序可靠,最好还是用Zxing封装好的方法来实现。
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。android里面 条形码扫描 应该是怎么做的,有没有源码 什么的,发一个给我啊_百度知道
android里面 条形码扫描 应该是怎么做的,有没有源码 什么的,发一个给我啊
我有更好的答案
1、下载ZBar官方SDK程序(下载链接:),并打开项目,如下图:2、添加libs文件,如下图:3、将Android下的两个文件拷过来,一个CameraTestActivity.java和一个CameraPreview.java拷到源文件目录下:4、将libs下的zbar.jar加入当前工程运行环境中,在AndroidManifest.xml中加入权限&uses-permission&android:name=&android.permission.CAMERA&&/&&&&uses-feature&android:name=&android.hardware.camera&&/&&&&uses-feature&android:name=&android.hardware.camera.autofocus&&/&&&&&activity&android:name=&.CameraTestActivity&&&&/activity& &5、编译为apk程序并安装调试。在手机中打开程序即可进行扫描调试。
采纳率:52%
我给你一下demo,我写的可以直接运行的,里面有非常详细的项目集成方法不明白可以追问请采纳哈
没有积分,下不下来
好的,谢谢
本回答被提问者和网友采纳
百度下zxing,很简单的。
是直接把那个包加载到工程 然后写相关代码调用就可以了吗,还需要什么特别的操作吗?
可以给我一份源码demo么,我现在用到条形码扫描并获取到另一个页面上了
1条折叠回答
为您推荐:
其他类似问题
android的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 电脑摄像头识别条形码 的文章

更多推荐

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

点击添加站长微信