我已下载zxing 1.6并成功地通过它运行了一个独立的条形码扫描器。现在,这个扫描器在另一个项目中(CaptureActivity),而我的应用程序在另一个名为MyProj的项目中,我只想在我的项目中点击按钮时调用另一个项目中的CaptureActivity,我该如何将整个项目导入到我的项目中或者做些什么使其正常工作。
我已下载zxing 1.6并成功地通过它运行了一个独立的条形码扫描器。现在,这个扫描器在另一个项目中(CaptureActivity),而我的应用程序在另一个名为MyProj的项目中,我只想在我的项目中点击按钮时调用另一个项目中的CaptureActivity,我该如何将整个项目导入到我的项目中或者做些什么使其正常工作。
从这里开始:http://code.google.com/p/zxing/wiki/ScanningViaIntent
如果您的Android设备上安装了条形码扫描器,只需发送一个Intent即可让它为您扫描并返回结果。例如,您可以连接一个按钮以扫描QR码:
public Button.OnClickListener mScan = new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage("com.google.zxing.client.android");
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) {
String contents = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}
要获取更多选项,例如扫描产品条形码或请求Barcode Scanner编码并显示条形码,请参阅此源文件:
以下是我们的测试应用程序的一些源代码,展示了如何使用它们:
IntentIntegrator
我们还开始创建一些封装上述某些细节的类库。请参见IntentIntegrator,这可能是一种更容易集成的方法。特别是,它将处理尚未安装Barcode Scanner的情况。
通过URL
从Barcode Scanner v2.6开始,您还可以从浏览器中的URL启动该应用程序。只需创建一个到http://zxing.appspot.com/scan的超链接,Barcode Scanner将提供启动并处理它。用户还可以选择始终自动打开Barcode Scanner。
注意:此URL不适用于在浏览器中提供实际网页,它只是一个钩子来启动原生应用程序。
已知问题
用户jamesikanos报告了以下“陷阱”:
创建一个具有launchMode“singleInstance”的TabHost活动 创建一个子活动,其中包含“Start scan”按钮(使用IntentIntegrator从此按钮启动zxing) 您的子活动中的onActivityResult将立即返回为“取消” onActivityResult随后永远不会被调用
com.google.zxing.client.android.SCAN
是用于扫描的通用Intent
。只是 ZXing 早在 Android 1.0 之前就已经存在,因此它成为了事实上的标准。它不仅仅选择条形码扫描器。 - Sean Owen