条码扫描器(ZXing)崩溃

时间:2013-04-25 09:09:06

标签: java android barcode zxing

首先,我想告诉你我已尽我所能。接下来就像互联网上的10个教程和堆叠的10个线程。仍然没有成功。

我知道你们推荐使用意图扫描的人,但在我的情况下它不是一个选项,我需要在我的应用程序中使用它。

我已经下载了zxing库(2.1)并跟随了this tutorial

当我在我的Galaxy S3或Galaxy Tab 10.1上运行此代码作为调试时,程序在冻结20秒后崩溃,当我点击应该开始结果意图的按钮时:com.google.zxing.client.android.SCAN或{{ 1}}。

请注意,我已经从条形码扫描仪应用程序中复制了所有资源,如哔声,xml文件等。

Crash Log

我的代码如下:

MainActivity.java

com.google.zxing.client.android.CaptureActivity

Android清单

package com.example.philipscan;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    public void scanNow(View view)
    {
        Log.e("test", "button works!");

        Intent intent = new Intent("com.google.zxing.client.android.CaptureActivity");
        startActivityForResult(intent, 3);
    } 

    public void onActivityResult(int requestCode, int resultCode, Intent intent) 
    {
        Log.e("xZing", "Back");
        if (requestCode == 3) 
        {
            if (resultCode == RESULT_OK)
            {
                String contents = intent.getStringExtra("SCAN_RESULT");
                String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
                Log.e("xZing", "contents: "+contents+" format: "+format);
                // Handle successful scan
            } 
            else if (resultCode == RESULT_CANCELED)
            {
                // Handle cancel
                Log.e("xZing", "Cancelled");
            }
        }
    }
}

我的SRC文件夹

My file list

我非常感谢能得到的所有帮助。

2 个答案:

答案 0 :(得分:1)

尝试以另一种方式创建Intent

Intent scanIntent = new Intent("com.google.zxing.client.android.SCAN");
scanIntent.putExtra("SCAN_MODE", "ONE_D_MODE");
然后像往常一样使用startActivityForResult()。 ONE_D_MODE是扫描像Code39这样的1D条形码的模式。

答案 1 :(得分:0)

删除您从我们项目中复制的所有代码。没有必要,你不理解它,并且不应该在许可下以这种方式重复使用:https://code.google.com/p/zxing/wiki/LicenseQuestions

特别是您不应该复制清单,也不允许复制UI。

相反,它更简单,因为你似乎试图使用Intents:https://code.google.com/p/zxing/wiki/ScanningViaIntent

相关问题