Android 集成ZXing二维码扫描仪,无需安装条形码扫描仪

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包含为库

我正在尝试将ZXing二维码集成到我的android应用程序中,而无需安装条形码扫描仪应用程序,我遵循以下步骤:

1) 首先我下载了ZXing.zip文件并将其解压缩

2) 将ZXing项目作为android现有项目打开,然后转到android文件夹,打开android文件夹,并将core.jar文件包含到名为CaptureActivity的ZXing项目中

3) 我在名为“QRCodeSample”的项目中将CaptureActivity项目用作库。 (将CaptureActivity包含为库时出现问题)

4) 我的代码如下:

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

卡尼卡

  • 将Zxing作为现有项目导入后,请单击Properties>JavaBuildPath>Check“is library”(选中按钮),然后尝试将Zxing添加为库

  • 确保
    QRcodesampleActivity.java


  • 我也遇到了同样的问题,经过几个小时的努力,我终于这样解决了。正如鲁比拉杰所指

    *右键单击您的项目>属性>Android>(在选项卡库下)添加Zxing项目*

    假设您能够正确地将Zxing项目创建为库,如下所述:

    您需要按照链接给出的步骤进行操作

    您可以从下载core.jar


    如果你的程序仍然将core-2.2.jar放在libs中,并为所有Android Studio/Gradle用户清理你的项目,那么上面的内容对我来说是有效的

    好了,伙计们,因为我今天的任务是将ZXING集成到Android应用程序中,而且到处都没有好的输入源,所以我将给你们一个提示,是什么让我的应用程序成功了-,因为它非常容易(在版本2上。*)

    有一个真正方便的git存储库,它将zxing android库项目作为AAR存档提供

    你所要做的就是把它添加到你的build.gradle中

    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

  • 从“”下载zxing-master.zip
  • 解压缩zxing-master.zip,使用eclipse在zxing-master中导入“android”项目
  • 从“”下载core-3.2.1.jar
  • 在“android”项目中创建“libs”文件夹,并将cor-3.2.1.jar粘贴到libs文件夹中
  • 点击项目:选择“属性”->“Java编译器”将级别更改为1.7。然后单击“Android”将“项目构建目标”更改为Android 4.4.2+,因为使用1.7需要使用Android 4.4进行编译
  • 如果“zxing master/android/app/src/main/java/com/google/zxing/client/android/camera/”中不存在“CameraConfigurationUtils.java”。您可以从“zxing master/android core/src/main/java/com/google/zxing/client/android/camera/”复制并粘贴到您的项目中
  • 清洁和建设项目。如果您的项目显示关于“switch-case”的错误,您应该将其更改为“If-else”
  • 完成。清洁和建设项目。您可以点击“properties”>“Android”>点击“Is库”用于您的项目

  • MaterialBarcodeScanner:Android项目中易于使用的条形码阅读器(使用Google Mobile Vision API)

  • 提供渐变依赖

    编译'com.edwardvanraak:MaterialBarcodeScanner:0.0.6-ALPHA'

  • 构建一个MaterialBarcodeScanner

    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:无法实例化活动组件