我们的博客

条形码交叉

Android上的条形码

zxing_zebra_logo
大多数时候,Telaeris的员工在这里发布,这是与我们的产品相关的真实例子。 这使我们能够讨论广泛的主题,包括条形码和RFID使用,安全或安全系统实施或运营业务的提示。 但我们所做的工作的核心是提出 针对棘手问题的巧妙解决方案。 接下来的几篇博客文章展示了Telaeris的两名实习生如何开始创建一款免费的新移动产品,用于跟踪Android或iPhone移动设备上的条形码和RFID标签。 系统被调用 DataLockr 刚刚推出 - 我强烈建议您查看应用程序和系统。 他们在本文中描述的是如何使用Android的开源Zxing库构建简单条形码阅读应用程序的第一步。

这个博客是针对那些喜欢编码的黑客。 请享用!

实施简化的Zxing图书馆
我们正在经历学习如何使用的过程 斑马线 库,我们很快发现,试图了解这个巨大的图书馆里发生的事情有点麻烦。 那里有很多教程,但很多步骤要么让我们感到困惑,要么已经过时了。 代码中缺少一些东西,或者基于库版本或者某些东西不同的东西没有完全澄清。 我们想制作一个教程,帮助任何试图实现简单的Zxing扫描库的人快速开始在他们自己的应用程序中使用它。

本教程使用Zxing库的拆解版本来教授如何将库实现为独立应用程序并部署您自己的原生Android应用程序的基础知识。 我们正在使用运行SDK 19,Android 4.4库的Android开发工具包。 该库已被修改为纵向模式条形码扫描仪,而不是默认的水平方向。

您可以在此处下载我们的Zxing库的简化版本并进行测试: CaptureActivity. 这与发布的ZXing库不同,但是很适合您入门。

如果你没有带有Android SDK的Eclipse,请下载并安装 Android开发套件。 打开Android SDK并安装所需的组件。 接下来,打开Eclipse。

步骤1。 首先,我们将创建该项目。

转到顶部菜单 文件 - >新建 - > Android应用程序项目。 为您的项目命名(我们称之为“Scanner App”)。 复制下面的设置,然后单击下一个3次,直到创建活动页面。 选择Empty Activity,然后单击Next,然后单击Finish。 默认情况下,该文件夹将显示在屏幕的左侧。 如果没有,请单击最大化按钮以在Eclipse中打开项目屏幕。

条形码交叉

步骤2。 修复主题错误(如果没有,请跳到步骤3)

如果您的值文件夹中有错误,这可能是Eclipse问题。 打开所有style.xml页面并删除所有样式标记及其内容。 还要转到AndroidManifest.xml并删除应用程序下的android:theme =“@ style / AppTheme”。

步骤3。 接下来是导入扫描仪库。

如果您还没有,请下载上面的CaptureActivty zip。 去 文件 - >导入 - >将现有的Android代码导入工作区 - >并打开浏览 并找到您下载的Zxing源代码。 仅检查调用的第一个项目 CaptureActivity。 该路径不应包含build / in。 点击完成. 右键点击 / CaptureActivity / Package Explorer选项卡中的文件夹并单击 属性 - > Android 并确保选中“Is Library”复选框。 点击确定。

步骤4。 我们现在必须将我们的应用程序与扫描仪库连接。

右键单击您的Android应用程序文件夹,然后单击 属性 - > Android。 单击“添加”按钮,然后单击“CaptureActivity”。 使用项目扫描程序在Android屏幕上单击“确定”后,确保显示绿色复选标记。 点击确定。

步骤 5。 我们现在可以开始在我们的应用程序中实现扫描 从mainActivity.java文件开始。

在您的app文件夹中,转到 / src目录/ 文件夹并打开你的 mainActivity.java 文件。 以下是所需的代码。 复制并粘贴您没有的内容。 您需要添加的代码将以红色文本显示。 如果您遇到错误,则需要导入某些类。 您只需按ctrl + shift + O,即可导入所有需要的导入。



package com.example.scannerapp; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.Toast; public class MainActivity extends Activity {@Override protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState); 的setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(菜单菜单){//给菜单充气; 这会将项目添加到操作栏(如果存在)。 getMenuInflater()。inflate(R.menu.main,menu); 返回true; } p ublic void openScanner(View view){Intent intent = new Intent(“com.example.scannerapp.SCAN”); startActivityForResult(intent,0000); public void onActivityResult(int requestCode,int resultCode,Intent intent){if(requestCode == 0000){if(resultCode == RESULT_OK){String contents = intent.getStringExtra(“SCAN_RESULT”); Toast.makeText(此,内容,0).show(); } else if(resultCode == RESULT_CANCELED){// Handle cancel}}} } 

这里有两个关键功能:

  1. 按下按钮时,openScanner方法将运行,随后将打开扫描仪。
  2. onActivityResult方法返回读取的条形码的字符串。 从这里开始,如果要在扫描后显示另一个屏幕,可以打开新的意图并传入变量。

步骤6。我们现在将更改activity_main.xml文件中的布局。

现在在你的 /应用/ 文件夹,去 res文件夹 - > layout - > activity_main.xml文件。 它应该如下所示。 添加以下红色代码:


<RelativeLayout xmlns:android =“http://schemas.android.com/apk/res/android”xmlns:tools =“http://schemas.android.com/tools”android:layout_width =“match_parent”android:layout_height =“match_parent”android:paddingBottom =“@ dimen / activity_vertical_margin”android:paddingLeft =“@ dimen / activity_horizo​​ntal_margin”android:paddingRight =“@ dimen / activity_horizo​​ntal_margin”android:paddingTop =“@ dimen / activity_vertical_margin”tools:context =“。 MainActivity“> <Button android:id =”@ + id / button0000“android:layout_width =”wrap_content“android:layout_height =”wrap_content“android:layout_below =”@ + id / textView0000“android:layout_centerHorizo​​ntal =”true“android: layout_marginTop =“1dp”android:text =“Scan”android:onClick =“openScanner”/> </ RelativeLayout>

这会添加一个按钮,按下后,将从中运行方法openScanner mainActivity.java 文件。 您可能还需要选择一个主题。 我选择了Theme.holo。

步骤 7。 最后一个修改是编辑androidManifest.xml文件。

AndroidManifest.xml中 项目目录下的文件。 代码应如下所示,并再次复制红色代码



<?xml version =“1.0”encoding =“utf-8”?> <manifest xmlns:android =“http://schemas.android.com/apk/res/android”package =“com.example.scannerapp”android :versionCode =“1”android:versionName =“1.0”> <uses-sdk android:minSdkVersion =“8”android:targetSdkVersion =“21”/> <! -  ZXI​​NG要求的许可 - > <uses-permission android :name =“android.permission.CAMERA”/> <uses-permission android:name =“android.permission.INTERNET”/> <uses-permission android:name =“android.permission.WRITE_EXTERNAL_STORAGE”/> <! - ZXING需要的功能 - > <uses-feature android:name =“android.hardware.camera”android:required =“true”/> <uses-feature android:name =“android.hardware.touchscreen”android:required = “false”/> <uses-feature android:name =“android.hardware.telephony”android:required =“false”/> <application android:allowBackup =“true”android:icon =“@ drawable / ic_launcher”android: label =“@ string / app_name”android:theme =“@ style / AppTheme”> <activity android:name =“com.example.scannerapp.Ma inActivity“android:label =”@ string / app_name“> <intent-filter> <action android:name =”android.intent.action.MAIN“/> <category android:name =”android.intent.category.LAUNCHER“ /> </ intent-filter> </ activity> <活动android:name =“com.telaeris.datalockrScanner.android.CaptureActivity”android:screenOrientation =“portrait”android:configChanges =“orientation | keyboardHidden”android:theme =“ @android:style / Theme.NoTitleBar.Fullscreen“android:windowSoftInputMode =”stateAlwaysHidden“> <intent-filter> <action android:name =”android.intent.category.MAIN“/> <category android:name =”android。 intent.category.LAUNCHER“/> </ intent-filter> <intent-filter> <action android:name =”com.example.scannerapp.SCAN“/> <category android:name =”android.intent.category.DEFAULT “/> </ intent-filter> </ activity> </ application> </ manifest>

我们正在添加android所需的权限,以便在我们想要在设备上打开扫描仪时,使用相机并将活动包含在应用程序中以了解要打开的文件。

步骤8。 全部完成!

您现在应该能够在设备上编译和运行您的应用程序。 如果有任何编译器错误,您可能想要清理项目和/或重新启动eclipse。


谢谢你
这个博客非常感谢许多人:

  • Alberto Landaverde,曾在Telaeris的2012夏季实习,修改了Zxing图书馆并建立了最初的简化图书馆
  • Kelly Lim,现任Telaeris实习生,他带着这个图书馆走出去,建立了这个图书馆 DataLockr Android应用。 凯利还写了这篇博客的内容。
  • Jake Pham,现任Telaeris实习生,他在这里完成了教程,以确保一切都像宣传的那样有效。

请继续关注下一部分,我们将讨论如何在纵向和横向模式下进行ZXing库扫描。 如果你有时间,看看他们所有努力的产物 - DataLockr。

DataLockrLogo
可见。 被扫描。 共享。

发表评论

*

博客更新

新闻简报


与代表交谈

联系我们

电话:858-627-9700
传真:858-627-9702
-------------------------------
9123切萨皮克博士
San Diego, CA 92123
-------------------------------
sales@telaeris.com