Android 集成ZXing二维码扫描仪,无需安装条形码扫描仪
我正在尝试将ZXing二维码集成到我的android应用程序中,而无需安装条形码扫描仪应用程序,我遵循以下步骤: 1) 首先我下载了ZXing.zip文件并将其解压缩 2) 将ZXing项目作为android现有项目打开,然后转到android文件夹,打开android文件夹,并将core.jar文件包含到名为CaptureActivity的ZXing项目中 3) 我在名为“QRCodeSample”的项目中将CaptureActivity项目用作库。 (将CaptureActivity包含为库时出现问题) 4) 我的代码如下:Android 集成ZXing二维码扫描仪,无需安装条形码扫描仪,android,android-manifest,qr-code,android-library,Android,Android Manifest,Qr Code,Android Library,我正在尝试将ZXing二维码集成到我的android应用程序中,而无需安装条形码扫描仪应用程序,我遵循以下步骤: 1) 首先我下载了ZXing.zip文件并将其解压缩 2) 将ZXing项目作为android现有项目打开,然后转到android文件夹,打开android文件夹,并将core.jar文件包含到名为CaptureActivity的ZXing项目中 3) 我在名为“QRCodeSample”的项目中将CaptureActivity项目用作库。 (将CaptureActivity包含为库
public class QRCodeSampleActivity extends Activity {
Button b1;
static String contents;
public static final int REQUEST_CODE = 1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1 = (Button) findViewById(R.id.button1);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
/*Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE",
"QR_CODE_MODE");
startActivityForResult(intent, 0);*/
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
}
});
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
contents = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
Log.i("Barcode Result", contents);
Intent i1 = new Intent(QRCodeSampleActivity.this, webclass.class);
startActivity(i1);
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
Log.i("Barcode Result","Result canceled");
}
}
}
}
清单文件是:
<uses-permission android:name="android.permission.CAMERA"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<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="android.intent.action.MAIN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<intent-filter>
<action android:name="com.google.zxing.client.android.SCAN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity
android:label="@string/app_name"
android:name=".QRCodeSampleActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".webclass"></activity>
</application>
</manifest>
而且它也没有添加库
当我尝试运行项目时,错误消息为:
无法在loader dalvik.system.PathClassLoader[/data/app/com.qr.code-1.apk]中实例化活动组件信息{com.qr.code/com.qr.code}:java.lang.ClassNotFoundException:com.qr.code 从ADT 14开始,资源字段(如R.id.decode)在库项目中定义时不再是常量 因此,在ZXing库->android->com.google.ZXing.client.android.CaptureActivityHandler.java和DecodeHandler.java中 用if-else替换这两个类switch-case语句,然后将这个ZXing库导入到您的项目中 我自己项目的其余部分编码是相同的…只是库类的问题,因为它们没有按照ADT 14更新 卡尼卡
QRcodesampleActivity.java
我也遇到了同样的问题,经过几个小时的努力,我终于这样解决了。正如鲁比拉杰所指 *右键单击您的项目>属性>Android>(在选项卡库下)添加Zxing项目* 假设您能够正确地将Zxing项目创建为库,如下所述:
您需要按照链接给出的步骤进行操作 您可以从下载core.jar
如果你的程序仍然将core-2.2.jar放在libs中,并为所有Android Studio/Gradle用户清理你的项目,那么上面的内容对我来说是有效的 好了,伙计们,因为我今天的任务是将ZXING集成到Android应用程序中,而且到处都没有好的输入源,所以我将给你们一个提示,是什么让我的应用程序成功了-,因为它非常容易(在版本2上。*) 有一个真正方便的git存储库,它将zxing android库项目作为AAR存档提供
repositories {
mavenCentral()
maven {
url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/"
}
}
dependencies {
compile 'com.google.zxing:core:2.2'
compile 'com.embarkmobile:zxing-android-minimal:1.2.1@aar'
}
Gradle做了所有的魔法来编译代码,并让它在你的应用程序中可以访问
要在以后启动扫描仪,请使用以下类/方法:
IntentIntegrator.initiateScan(this); // `this` is the current Activity
如果你已经访问了这个链接,你会看到我只是从git自述中复制并粘贴了代码。如果没有,去那里获得更多的洞察力和代码示例
希望对以后的读者有所帮助。和平:)逐步在eclipse中设置ZXing3.2.1
MaterialBarcodeScanner:Android项目中易于使用的条形码阅读器(使用Google Mobile Vision API)
private void startScan() {
/**
* Build a new MaterialBarcodeScanner
*/
final MaterialBarcodeScanner mBarcodeScanner
= new MaterialBarcodeScannerBuilder()
.withActivity(MainActivity.this)
.withEnableAutoFocus(true)
.withBleepEnabled(true)
.withBackfacingCamera()
.withText("Scanning...")
.withResultListener(new MaterialBarcodeScanner.OnResultListener() {
@Override
public void onResult(Barcode barcode) {
barcodeResult = barcode;
result.setText(barcode.rawValue);
}
})
.build();
mBarcodeScanner.startScan();
}
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startScan();
}
});
包括ZXing是可能的,我做到了。我想你用了其他的课程。我不记得zxing使用了名称空间com.qr.code为什么要使用库项目。您可以使用ant将下载的zxing库构建为jar文件,并将该jar文件包含到您的项目中。这是说明的链接。你确定这也适用于Android吗?我用一些自定义扩展名创建了自己的库。@blessenm:当我提取ZXing文件时,我将core文件夹转换为core.jar文件,并将其添加到我的项目中。您已将项目和库放在同一磁盘分区中。请不要将我们的代码集成为库项目。请编写自己的扫描仪应用程序,如果需要,请重新使用。我们并没有开放源代码让你们以这种方式克隆。我把所有东西都做成了特色,但还是有例外。为什么我上不了那些课?我将其添加为lib,还将core.jar添加为外部jar。AndroidRuntime(6316):java.lang.RuntimeException:无法实例化活动组件