2013-04-11 2 views
0

Zxing을 사용하여 QR 코드 스캐너를 내 안드로이드 앱에 통합하려고합니다. 나는이 단계들을 따라왔다 :QR 코드 스캐너와 Zxing을 통합 할 때 오류가 발생했습니다.

  1. 나는 ZXing.zip 파일을 다운로드하고 압축을 풀었다.

  2. ZXing 프로젝트를 Android 기존 프로젝트로 연 다음 android 폴더로 이동하여 android 폴더를 열고 core.jar 파일을 CaptureActivity라는 ZXing 프로젝트에 추가하십시오.

  3. 저는 'QRCodeSample'이라는 이름의 프로젝트에서 CaptureActivity 프로젝트를 라이브러리로 사용했습니다.

    package com.charith.qrcodesample; 
    
    import android.os.Bundle; 
    import android.app.Activity; 
    import android.content.Intent; 
    import android.util.Log; 
    import android.view.Menu; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.TextView; 
    
    public class MainActivity extends Activity { 
    
        Button b1; 
        TextView scanResult; 
        String contents; 
        public static final int REQUEST_CODDE = 1; 
        protected static final String QR_CODE_MODE = null; 
    
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState); 
         setContentView(R.layout.activity_main); 
    
         b1 = (Button) findViewById(R.id.bScan); 
         b1.setOnClickListener(new View.OnClickListener() { 
    
          @Override 
          public void onClick(View v) { 
           // TODO Auto-generated method stub 
           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) { 
         scanResult = (TextView) findViewById(R.id.tvContent); 
         if(requestCode == 0) { 
          if(resultCode == RESULT_OK) { 
           contents = intent.getStringExtra("SCAN_RESULT"); 
           String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 
           scanResult.setText(contents); 
          }else if(resultCode == RESULT_CANCELED){ 
           scanResult.setText("Error"); 
          } 
         } 
        } 
    
    } 
    

    이 내의 AndroidManifest.xml 파일입니다

이 내 MainActivity.java 파일입니다.

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

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

    <uses-permission android:name="android.permission.CAMERA" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.google.zxing.client.android.CaptureActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:screenOrientation="landscape" 
      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:name="com.charith.qrcodesample.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> 
    </application> 

</manifest> 

그리고 내 main_activity.xml 파일입니다.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

    <Button 
     android:id="@+id/bScan" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="33dp" 
     android:text="Scan" /> 

    <TextView 
     android:id="@+id/tvContent" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/bScan" 
     android:layout_below="@+id/bScan" 
     android:layout_marginTop="44dp" 
     android:text="" /> 

</RelativeLayout> 

이클립스에서 에뮬레이터를 사용하여 내 응용 프로그램을 검사했습니다. 그런 다음 다음 오류가 발생했습니다.

The application has stopped unexpectedly. Please try again 

누구든지 가능한 빨리이 문제를 명확히 할 수 있다면 매우 감사하겠습니다.

+0

Eclipse의 Android 에뮬레이터는 카메라를 지원하지 않습니다. 카메라 지원이 부족하여 에뮬레이터가 작동하지 않을 수 있습니까? 나는이 오류를 코드 오류까지 백분되기 전에 작동하는 안드로이드 장치에서이 응용 프로그램을 테스트 할 것입니다. 대부분의 경우 Android 에뮬레이터/이클립스 관련 문제 일 가능성이 큽니다. –

답변

1

먼저 프로젝트를 복사하여 붙여 넣었습니다. UI를 복사했다고 가정합니다. 여기 많은 문제에서 볼 수 있듯이 https://code.google.com/p/zxing/wiki/LicenseQuestions에서 논의 되었 듯이 오픈 소스 라이센스에서는 허용되지 않습니다.

둘째, AndroidManifest.xml 신고를 복사하여 붙여 넣었습니다. 네임 스페이스에 Activity을 선언하고 Intent을 가로 채고 있습니다. 이것은 우리의 응용 프로그램을 방해 할 수 있으며, 좋지 않습니다. 이것을 제거하고 나만의 목록을 만드십시오.

하지만 셋째, 통합하려고 시도하는 것 같습니다 Intent. 그것은 이것보다 훨씬 쉽고,이 모든 것을 복사하고 붙여 넣는 것과 아무런 관련이 없습니다. . https://code.google.com/p/zxing/wiki/ScanningViaIntent

+0

고맙습니다 션. 나는 이것을하려고했지만 작동하지 않습니다. 사실 안드로이드에 익숙하지 않기 때문에 실제로는 명확하지 않습니다. 단계별로 설명하면 정말 감사 할 것입니다. 당신의 친절한 반응. – Rose18

+0

무엇을 시도 했습니까? 설명 할 것이 거의 없습니다. jar 파일을 추가하고 위키에 코드를 사용하십시오. –

관련 문제