我正在尝试将ZXing添加到我的项目中(在按下时添加一个调用扫描仪的按钮)。我发现了这个:http://groups.google.com/group/android-developers/browse_thread/thread/788eb52a765c28b5当然还有ZXing的主页:http://code.google.com/p/zxing/,但仍然无法弄清楚要包含在项目类路径中的内容以使其全部工作!
至于现在,我将第一个链接中的类复制到我的项目中(更改了一些包名称),然后按下按钮并尝试安装条形码扫描器后它会运行但崩溃。
一些代码:
private void setScanButton(){
Button scan = (Button) findViewById(R.id.MainPageScanButton);
scan.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
IntentIntegrator.initiateScan(MyActivity.this);
}
});
}
产生的错误(来自logcat):
06-13 15:26:01.540: ERROR/AndroidRuntime(1423): Uncaught handler: thread main exiting due to uncaught exception
06-13 15:26:01.560: ERROR/AndroidRuntime(1423): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=market://search?q=pname:com.google.zxing.client.android }
想法?
答案 0 :(得分:7)
转到here获取链接。
在您要触发条形码扫描的活动中包括
IntentIntegrator.initiateScan(YourActivity.this);
然后还包括:
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
TextView
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
};
Barcode Scanner应用程序将处理实际扫描。如果 未安装条形码扫描仪应用程序,集成商将提示它们 安装它。
-----------来自nEx.Software ---------------
答案 1 :(得分:3)
首先,ZXing无法在模拟器上自动提示用户从Market下载,因为模拟器上没有Market。您需要在模拟器上手动安装条形码扫描仪APK。
其次,由于模拟器不能模拟相机,因此条形码扫描器可能对您没有多大帮助。很可能你需要在设备上测试它。
答案 2 :(得分:1)
只需将此代码添加到application
标记内的清单文件中:
<activity
android:name="com.google.zxing.client.android.CaptureActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="landscape"
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.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="com.google.zxing.client.android.SCAN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
然后在文件顶部添加以下权限(如果尚未添加):
<uses-permission android:name="android.permission.CAMERA" />
答案 3 :(得分:0)
检查您的AndroidManifest是否为新添加的活动正确地提供了“ android:name ”属性。你得到“ ActivityNotFoundException ”主要是因为你可能使用了不同的包名,而ZXing正在使用“ com.google.zxing.client.android ”包名。当您加载ZXing的第一个Activity时,请为其指定 绝对类路径 而不是相对路径。然后你的错误就会消失。
答案 4 :(得分:0)
条形码扫描器应用程序未安装在您提供此异常的模拟器上。下面的链接提供了如何在模拟器上安装第三方应用程序的分步指南:
答案 5 :(得分:0)
如果你第一次使用zxing,我推荐这个项目* 1 *,它是zxing的一部分,你需要的只是导入项目并运行它。这个项目是尝试在Android中使用QR代码更容易一些。 强烈推荐bigenner.good运气好。 最后,谢谢Sean Owen;
答案 6 :(得分:0)
adb shell input text 'https://code.google.com/p/zxing/downloads/detail?name=BarcodeScanner-4.5.1.apk&can=2&q='
- 该链接是在ZXing下载页面上找到的链接答案 7 :(得分:0)
我在选项卡(片段)中使用Zxing并使用支持库(对于Material Design组件),所以我不得不这样调用它:
IntentIntegrator integrator = new IntentIntegrator(getActivity()); integrator.forSupportFragment(本).initiateScan();
然后在onActivityResult()
if (resultCode == Activity.RESULT_OK) {
if (requestCode == IntentIntegrator.REQUEST_CODE) {
String contents = data.getStringExtra("SCAN_RESULT");
String format = data.getStringExtra("SCAN_RESULT_FORMAT");
Log.i(TAG, "Barcode Result: " + contents);
etc...
}
}
和我的Manifest.xml
<activity
android:name="com.google.zxing.client.android.CaptureActivity"
android:configChanges="orientation|keyboardHidden"
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>
现在一切都很好。我只是使用意图和startActivityForResult()并没有成功。扫描仪将启动并修复QR码但未返回。
在我的build.grade中,我有:
存储库{mavenCentral() maven {url&#34; https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/&#34; } }
compile 'com.google.zxing:core:3.2.1'
compile 'com.embarkmobile:zxing-android-minimal:2.0.0@aar'
compile 'com.embarkmobile:zxing-android-integration:2.0.0@aar'