3

我正在尝试将 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 }

想法?

4

8 回答 8

7

这里获取链接。

在您要触发条形码扫描的活动中,包括

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 应用程序将处理实际扫描。如果未安装 Barcode Scanner 应用程序,集成商将提示他们安装它。

----------- 来自 nEx.Software ---------------

于 2010-10-15T05:20:37.587 回答
3

首先,ZXing 在模拟器上将无法自动提示用户从 Market 下载,因为模拟器上没有 Market。您需要在模拟器上手动安装 Barcode Scanner APK。

其次,由于模拟器不模拟相机,条形码扫描仪可能对您没有多大帮助。您很可能需要在设备上对此进行测试。

于 2010-06-13T16:28:13.230 回答
1

Just add this code to your manifest file, within the application tag:

 <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>

Then add the following permission, if it has not already been added, at the top of file:

<uses-permission android:name="android.permission.CAMERA" />

于 2013-03-07T15:29:20.117 回答
0

您的模拟器上未安装条形码扫描仪应用程序,这会导致此异常。下面的链接提供了如何在模拟器上安装第 3 方应用程序的分步指南:

在模拟器上安装应用程序

于 2013-01-08T11:36:59.610 回答
0
  1. 打开模拟器的 SD 卡。
  2. 复制ZXing 下载页面上 BarcodeScaner 的链接
  3. 在模拟器中打开浏览器并指向链接编辑框
  4. 输入终端和命令 adb shell input text 'https://code.google.com/p/zxing/downloads/detail?name=BarcodeScanner-4.5.1.apk&can=2&q='- 链接是在 ZXing 下载页面上找到的链接
  5. 链接已复制到浏览器,以便您可以下载并安装它。这解决了描述的问题。
于 2014-01-04T21:20:09.867 回答
0

检查您的 AndroidManifest 是否为新添加的活动正确地赋予了“ android:name ”属性。你得到“ ActivityNotFoundException ”这主要是因为你可能使用了不同的包名,而 ZXing 正在使用“ com.google.zxing.client.android ”包名。当你加载 ZXing 的第一个 Activity 时,给它绝对类路径而不是相对路径。然后你的错误就会消失。

于 2011-12-21T09:02:53.953 回答
0

如果你是第一次使用 zxing,我推荐这个项目* 1 *,它是 zxing 的一部分,你只需要导入项目并运行它。这个项目是为了让在 Android 中使用二维码更容易一些。强烈推荐给bigenner。祝你好运。最后,感谢 Sean Owen;

于 2013-07-29T17:35:16.283 回答
0

我在选项卡(片段)中使用 Zxing 并使用支持库(用于 Material Design 组件),所以我不得不这样称呼它:

IntentIntegrator 积分器 = new IntentIntegrator(getActivity()); integrator.forSupportFragment(this).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() 并不成功。扫描仪将启动并修复二维码,但没有返回。

在我的 build.grade 中,我有:

存储库 { mavenCentral() maven { url " https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/ " } }

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'
于 2015-10-14T15:16:42.633 回答