0

首先我想告诉你我已经尽我所能。关注互联网上的 10 个教程和堆叠的 10 个线程。仍然没有成功。

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

我已经下载了 zxing 库(2.1)并按照本教程进行操作

当我在 Galaxy S3 或 Galaxy Tab 10.1 上运行此代码作为调试时,程序在冻结 20 秒后崩溃,当我单击应该启动结果意图的按钮时:com.google.zxing.client.android.SCANcom.google.zxing.client.android.CaptureActivity.

请注意,我已经从 Barcode Scanner 应用程序中复制了所有资源,例如哔声、xml 文件等。

崩溃日志

我的代码如下:

MainActivity.java

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");
            }
        }
    }
}

安卓清单

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

        <uses-feature android:name="android.hardware.camera"/>
          <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
          <uses-feature android:name="android.hardware.camera.flash" android:required="false"/>
          <uses-feature android:name="android.hardware.screen.landscape"/>
          <uses-feature android:name="android.hardware.wifi" android:required="false"/>
          <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>

        <uses-permission android:name="android.permission.CAMERA"/>
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.VIBRATE"/>
        <uses-permission android:name="android.permission.FLASHLIGHT"/>
        <uses-permission android:name="android.permission.READ_CONTACTS"/>
        <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.philipscan.MainActivity"
            android:label="@string/app_name" >
            <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>
        <activity
            android:name="com.google.zxing.client.android.CaptureActivity"
            android:label="@string/app_name" >
            <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>
    </application>

</manifest>

我的 SRC 文件夹

我的档案清单

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

4

2 回答 2

1

尝试创造Intent另一种方式

Intent scanIntent = new Intent("com.google.zxing.client.android.SCAN");
scanIntent.putExtra("SCAN_MODE", "ONE_D_MODE");

然后像往常一样 startActivityForResult() 。ONE_D_MODE 是扫描 Code39 等一维条码的模式。

于 2013-04-25T09:54:19.883 回答
0

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

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

相反,它要简单得多,因为您似乎无论如何都在尝试使用 Intents:https ://code.google.com/p/zxing/wiki/ScanningViaIntent

于 2013-04-25T11:28:05.723 回答