我想将zxing scanner集成到我的应用程序中,而不需要外部应用程序(play store的zxing scanner)。这是我的密码
Button scan = (Button) findViewById(R.id.scan_button);
scan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage("com.mypackage.app");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, SCANNER_REQUEST_CODE);
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == SCANNER_REQUEST_CODE) {
// Handle scan intent
if (resultCode == Activity.RESULT_OK) {
// Handle successful scan
String contents = intent.getStringExtra("SCAN_RESULT");
String formatName = intent.getStringExtra("SCAN_RESULT_FORMAT");
byte[] rawBytes = intent.getByteArrayExtra("SCAN_RESULT_BYTES");
int intentOrientation = intent.getIntExtra("SCAN_RESULT_ORIENTATION", Integer.MIN_VALUE);
Integer orientation = (intentOrientation == Integer.MIN_VALUE) ? null : intentOrientation;
String errorCorrectionLevel = intent.getStringExtra("SCAN_RESULT_ERROR_CORRECTION_LEVEL");
} else if (resultCode == Activity.RESULT_CANCELED) {
// Handle cancel
}
} else {
// Handle other intents
}
}
AndroidManifest。xml
<activity android:name="com.google.zxing.client.android.CaptureActivity"
android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden">
<intent-filter>
<action android:name="com.google.zxing.client.android.SCAN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
我的Android Studio说无法解析符号:<代码>。AndroidCaptureActivity,如果运行此操作,则会发生错误
Java语言lang.ClassNotFoundException:未找到类“com.google.zxing.client.android.CaptureActivity”
发生什么事了?
我不知道为什么会这样,但最后我使用了另一个库。我在这里和这里使用Zxing android minimal和教程。现在它工作了。
由于到目前为止我找到的所有答案都是基于Eclipse的,而且到目前为止都很过时,所以我添加了我的答案,将ZXing添加为Android Studio(2.1.2)上的一个独立库。
我已将已编译的项目放在Github上https://github.com/tarun0/ZXing-Standalone-library只需在项目中添加zxing\u standalone模块,就可以了。有关详细信息或为新版本编译,请继续阅读。
这可能看起来很长,但是一旦你经历了,你会发现它很容易和短。
现在对导入的项目的gradle文件进行一些修改。将申请插件:'com.android.application'
更改为申请插件:'com.android.library'
以告诉系统它是一个库。并删除Application ationId...
语句。
在导入项目的Manifest.xml
文件中,进行以下修改。在
在项目的生成中。gradle
文件,在依赖项块中,将此行添加到编译项目(“:android”)此处,将android替换为在步骤4中导入项目时选择的名称。同步并清理项目。您将在switch语句中看到一些错误。点击这些开关盒,选择Android Studio提供的选项替换为if
。
就这样。现在您可以在自己的应用程序中使用ZStar库。:)
要使用添加的库,只需使用上面第一个答案中所述的意图(仅复制相同的代码):
扫描时(如单击按钮),发送意图:
Intent intent = new Intent(getApplicationContext(),CaptureActivity.class);
intent.setAction("com.google.zxing.client.android.SCAN");
intent.putExtra("SAVE_HISTORY", false);
startActivityForResult(intent, 0);
然后,在OnActivityResult
中:
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents = data.getStringExtra("SCAN_RESULT");
Log.d(TAG, "contents: " + contents);
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
Log.d(TAG, "RESULT_CANCELED");
}
}
我尽可能地描述。我希望人们觉得它有用。
请阅读代码作者之一关于将代码复制到您自己的应用程序的回答:https://stackoverflow.com/a/9942761
参考文献:https://stackoverflow.com/a/29818279 https://stackoverflow.com/a/29960361还有其他一些博客/答案。
虽然已经得到了回答,但对于那些希望使用ZXing作为库而不使用ANT之类的自动安装方法的人来说,我觉得这是一个深入的解决方案。
ZStar是一个开源项目,允许您将其功能用作项目库,而不是强制在用户设备上安装第三方应用程序,在我看来这是大多数项目的首选。
需要注意的是,这种方式是创建者可以接受的,并且不会违反他们的任何使用条款,因为我们不会复制他们的代码,而只是将其用作我们项目的库。
一般流程如下:
下面是一个针对使用Eclipse的用户的详细过程(对于Studio也可以很容易地实现):
下载ZXing源代码和核心文件
将ZXing项目导入Eclipse
您现在应该会在工作区中看到捕获活动。根据您拥有的ZStar版本,您可能需要将core.jar文件分配给ZStar项目,以检查您的版本是否是这种情况,打开capture Active项目的libs文件夹并检查core.jar文件是否存在,如果不存在,您必须自己添加它,否则跳到下一章。
5.1. 添加核心。jar文件右键单击Eclipse工作区中的captureActivity项目并选择构建路径
5.2. 从侧菜单中选择Java Build Path并单击Libraries选项卡。
5.3.单击“添加外部JAR”并导航到最初导出ZXing zip的位置。
5.4.进入核心文件夹,选择core.jar(名称可能因ZStar版本而异),点击打开
5.5.您现在应该在构建路径列表中看到core.jar,单击“订购和导出”选项卡并选中core.jar
将ZStar定义为库并修复代码
现在根据你所拥有的ZStar版本,你可能会看到Eclipse标记了一些包含错误的java文件,如果是这种情况,你将不得不修复代码以匹配android java版本,否则只需转到下一章
8.1. 在编辑器中打开每个损坏的java文件,并用If-Else语句链替换损坏的Switch语句,我知道这是一个令人讨厌的部分。
将ZStar添加为您自己项目的库
添加应用程序所需的ZStar方法
这部分并不是真正的指南,只是我发现对我自己的需求有用的东西,我主要使用的两种方法是:
运行扫描仪并捕获二维码:
Intent intent = new Intent(getApplicationContext(),CaptureActivity.class);
intent.setAction("com.google.zxing.client.android.SCAN");
intent.putExtra("SAVE_HISTORY", false);
startActivityForResult(intent, 0);
在onActivityResult()中检索扫描结果:
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents = data.getStringExtra("SCAN_RESULT");
Log.d(TAG, "contents: " + contents);
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
Log.d(TAG, "RESULT_CANCELED");
}
}
请注意,就像android capture中的任何其他活动一样,活动也需要在项目清单中定义,还请注意,您必须授予项目权限才能像这样使用摄像头:
<uses-permission android:name="android.permission.CAMERA" />
<activity
android:name="com.google.zxing.client.android.CaptureActivity"
android:screenOrientation="landscape" >
</activity>
我希望这将帮助其他人节省几个小时的研究时间。
作为额外的奖励,我推荐阅读:https://biocram.wordpress.com/2013/06/11/integrate-zxing-as-a-library-inside-an-android-project/
我想将QRCode添加到我的android应用程序中。 我使用的是Android Studio 8.1。 我下载zxing核心。maven存储库中的jar文件(http://repo1.maven.org/maven2/com/google/zxing/core/3.1.0/) 我在清单xml文件中添加了以下行: 然后,我将jar文件添加到“lib”文件夹,并在gradle构建文件中添加为库: 编
我正在使用Xamarin开发一个应用程序(针对单个客户),该应用程序必须使用摄像头读取条形码(也可以选择使用外部蓝牙扫描仪),并用于测试华硕TF300T、LG4xP880和Nexus 7 second edition(目标机器)。 我测试了ScandIt和ZXing,但这是我在免费条形码扫描应用程序中得到的最好结果(我知道ZXing的库是一样的,但速度不一样)。我已经读到,我可以有目的地使用它,我
我需要在android应用程序中生成和扫描二维码。我需要这个功能将一些密码转换为二维码,然后使用二维码扫描仪扫描二维码中的密码,以便我可以验证它。我搜索并了解了zxing,但我不知道如何集成和使用它。如果有人能为如何将二维码扫描仪与android应用程序集成提供指导,我将不胜感激。
我正在Android平板电脑上创建一个应用程序,需要扫描条形码并获得结果。我使用的平板电脑有内置扫描仪和摄像头。 我曾尝试使用Zstar Lib,但这使用平板电脑上的摄像头,而不是调用扫描仪。 如何从我的应用程序中找到直接调用扫描仪所需的实际意图? 平板电脑上预装了一个条形码实用程序应用程序,有一个用于捕获条形码数据的基本屏幕,我想我可能应该在我的应用程序中通过Intent来调用它。但是,我如何知
问题内容: 有人可以告诉我创建条形码扫描器应用程序(对于Android)是否困难?OpenCV库是一个好的开始吗?在哪里可以找到清楚说明如何读取条形码的算法?我将感谢有关该主题的所有优秀材料! 提前致谢! 问题答案: ZXing项目提供了一个独立的条形码读取器应用程序-通过Android的意图机制-希望集成条形码扫描的其他应用程序可以调用该应用程序。 最简单的方法是从应用程序中调用ZXing SC
我试图启动条形码扫描器上的用户按下一个按钮在HTML。然而,我又犯了一个错误: 在javascript中使用: 现在,在Java文件中,我有以下代码,它在中声明函数