【问题标题】:Error while creating a simple barcode scanner for android JellyBean OS为 android JellyBean OS 创建简单的条形码扫描仪时出错
【发布时间】:2012-11-30 14:51:03
【问题描述】:

我是 android 应用程序开发的新手。我正在使用 Zxing 开发一个简单的条形码扫描仪应用程序。我正在使用最新的 ADT,并且正在 Eclipse 下开发。

以下是我的代码:

package com.example.test_app2;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

public final static String SCAN_RESULT = "com.example.Test_App2.RESULT";
DisplayScanResultActivity disp = new DisplayScanResultActivity();
    @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.activity_main, menu);
    return true;
    }

    public void scanBarcode(View view)
    {
       IntentIntegrator.initiateScan(this);
    }
}

这是 MainActivity 类。

package com.example.test_app2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.view.Menu;
import android.view.MenuItem;

public class DisplayScanResultActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_scan_result);
    // Show the Up button in the action bar.
    //getActionBar().setDisplayHomeAsUpEnabled(true);
}

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:

        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
    case IntentIntegrator.REQUEST_CODE: {
    if (resultCode != RESULT_CANCELED) {
    IntentResult scanResult = IntentIntegrator.parseActivityResult(
    requestCode, resultCode, data);
    if (scanResult != null) {
    String upc = scanResult.getContents();

    // put whatever you want to do with the code here
    TextView tv = new TextView(this);
    tv.setText(upc);
    setContentView(tv);
    }
    }
    break;
    }
    }
    }

这是显示扫描结果的活动。但我无法理解如何显示扫描结果。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test_app2"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="9"
    android:targetSdkVersion="16" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.test_app2.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.example.test_app2.DisplayScanResultActivity"
        android:label="@string/title_activity_display_scan_result"
        android:parentActivityName="com.example.Test_App2.MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.Test_App2.MainActivity" />
    </activity>
</application>

</manifest>

这是 AndroidManifest.xml 文件。

当我通过模拟器运行这个项目时,会显示扫描按钮。一旦我单击它,应用程序就会崩溃。我该如何解决这个问题?请帮我找到解决方案。

【问题讨论】:

  • 我在同一个包下使用了 Zxing IntentIntegrator 和 IntentResult,即“package com.example.barcode_scanner”。但问题依然存在。
  • 在 Android 中您无法在控制台中获取日志,您需要在 Eclipse 中打开 LogCat 视图。在那里,您可以看到详细信息和崩溃的堆栈跟踪。因此,请发布您在那里找到的堆栈跟踪,而不是控制台内容(与此问题无关)

标签: java android android-emulator zxing android-4.2-jelly-bean


【解决方案1】:

这是一种混乱的方法。您似乎希望通过 Intent 与 Barcode Scanner 集成,但随后您在您的应用中声明了我们的活动和命名空间,但它并不存在。

扔掉所有这些,然后这样做:http://code.google.com/p/zxing/wiki/ScanningViaIntent

【讨论】:

  • 感谢您的帮助。让我试试您建议的新方法。我也会尝试使用网络摄像头进行测试并回复您是否成功。
  • 我不明白。如果我错了,请纠正我。 IntentIntegrator 和 IntentResult,这两个类就像一个库一样使用,其中包含处理某些扫描功能的某些方法。那么,如果我将这两个类集成到我的应用程序中,那么是否不需要安装现有的条形码扫描仪应用程序?对?但是当我运行我的应用程序时,它会提示安装现有的应用程序。为什么?
  • 另外,请明确提及我使用的命名空间,你在谈论..
  • 您使用这两个类来调用 Barcode Scanner,一个单独的应用程序。您肯定在您发布的清单中看到您正在声明您的应用程序就好像它是我们的:com.google.zxing.client.android。不要不要那样做。
  • 所以,如果我使用这两个类,那么我必须创建一个单独的活动,我应该在其中放置 onActivityResult() 方法来处理结果,而不是 MainActivity,我需要将该单独的活动传递为IntentIntegrator 构造函数的参数?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
相关资源
最近更新 更多