2013-04-25 84 views
0

首先,我想告诉你,我已经尽我所能。跟随在互联网上的10个教程和堆叠的10个线程。仍然没有成功。条码扫描器(ZXing)崩溃

我知道你们推荐使用扫描方式进行扫描,但在我的情况下,它不是一个选项,我需要在我的应用程序中使用本地扫描。

我已经下载了斑马线库(2.1),随后this tutorial

当我运行此代码我的Galaxy S3和Galaxy Tab的10.1调试,程序崩溃,冻结像20秒,当我点击后应该开始意图结果的按钮:com.google.zxing.client.android.SCANcom.google.zxing.client.android.CaptureActivity

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

Crash Log

我的代码如下:

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

Android清单

<?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文件夹

My file list

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

+0

后有些崩溃日志 – 2013-04-25 09:11:05

+0

崩溃日志:http://pastebin.com/CvuusVbc – 2013-04-25 09:45:35

+0

你的崩溃显示融为一体。 google.zxing.client.android.CaptureActivity未找到您在此代码中的交叉检查 – 2013-04-25 09:52:15

回答

1

尝试创建Intent另一种方式

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

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

+0

然后我得到这个错误:http://pastebin.com/wppEqaLg – 2013-04-25 11:56:12

+0

也首先给我这个弹出选择:http:// imgur .com/uZH4b3Y – 2013-04-25 11:58:12

+0

尝试将答案升级时显示的附加项。没有关于日志中的异常的详细信息:( – Viacheslav 2013-04-25 12:54:31