2014-09-24 5 views
1

Я хочу добавить QRCode в свое приложение для Android.Сканер QrCode "не может решить символ CaptureActivity"

Я использую Android Studio 8.1.

I загрузить ZXing core.jar файл из репозитория Maven (http://repo1.maven.org/maven2/com/google/zxing/core/3.1.0/)

Я добавил следующие строки в моем манифеста XML-файл:

<uses-permission android:name="android.permission.CAMERA" /> 
<activity 
android:name="com.google.zxing.client.android.CaptureActivity" 
android:screenOrientation="landscape" > 
</activity> 

Затем я добавил файл банку в "Lib" папку и I добавить в библиотеку в Gradle файле сборки:

файлы компиляции ('ЛИЭС/ядро-3.1.0.jar')

И я создал следующие виды деятельности:

public class QrCodeReader extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_qrcode); 
     HandleClick hc = new HandleClick(); 
     findViewById(R.id.butQR).setOnClickListener(hc); 
     findViewById(R.id.butProd).setOnClickListener(hc); 
     findViewById(R.id.butOther).setOnClickListener(hc); 
    } 
    private class HandleClick implements View.OnClickListener { 
     public void onClick(View arg0) { 
      Intent intent = new Intent(getApplicationContext(),CaptureActivity.class); 
      intent.setAction("com.google.zxing.client.android.SCAN"); 
      intent.putExtra("SAVE_HISTORY", false); 
      startActivityForResult(intent, 0); 


     } 
    } 
    public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     if (requestCode == 0) { 
      TextView tvStatus=(TextView)findViewById(R.id.tvStatus); 
      TextView tvResult=(TextView)findViewById(R.id.tvResult); 
      if (resultCode == RESULT_OK) { 
       tvStatus.setText(intent.getStringExtra("SCAN_RESULT_FORMAT")); 
       tvResult.setText(intent.getStringExtra("SCAN_RESULT")); 
      } else if (resultCode == RESULT_CANCELED) { 
       tvStatus.setText("Press a button to start a scan."); 
       tvResult.setText("Scan cancelled."); 
      } 
     } 
    } 

} 

Теперь я получаю ошибку «can not resolve symbol CaptureActivity», как я могу это исправить?

С уважением

EDIT:

Я добавил следующий файл и эта ошибка фиксируется

компилировать файлы ('ЛИЭС/Android-ядро-3.1.0.jar') компилировать файлы ('ЛИЭС /android-integration-3.1.0.jar ')

Но я получаю следующее сообщение об ошибке:

java.lang.ClassNotFoundException: не нашли class "com.google.zxing.client.android.CaptureActivity" Как я могу это исправить?

+0

Есть только три причины, по которым вы когда-либо получите эту ошибку: Класс действительно не существует. Если вы используете код из официального примера и получаете это, убедитесь, что у вас есть последняя сборка библиотеки. Вы не добавили банку в свой путь сборки. Чтобы исправить это, щелкните правой кнопкой мыши на банке в Eclipse и выполните «Путь сборки» ► «Добавить в путь сборки». Ваша банка не находится в папке/libs. Это происходит, когда вы добавили банку в путь сборки, но для новых версий ADT необходимо, чтобы она была в/libs. Поместите его туда и снова добавьте в путь сборки. –

ответ

1

Есть только три причины, вы никогда не получите эту ошибку:

Класс действительно Безразлично не существует. Если вы используете код из официального примера и получаете это, убедитесь, что у вас есть последняя сборка библиотеки.

Вы не добавили банку в свой путь сборки. Чтобы исправить это, щелкните правой кнопкой мыши на банке в Eclipse и выполните «Путь сборки» ► «Добавить в путь сборки».

Ваша банка не находится в папке/libs. Это происходит, когда вы добавили банку в путь сборки, но для новых версий ADT необходимо, чтобы она была в/libs. Поместите его туда и снова добавьте в путь сборки.

0

добавить фильтры намерения внутри операции захвата.

<intent-filter> 
    <action android:name="com.google.zxing.client.android.SCAN" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
+0

Я добавил, но я получаю ту же ошибку, ошибка сборки: Ошибка: (27, 63) error: не удается найти класс символов CaptureActivity – onder

-1

раз смотрите эту ссылку http://wahidgazzah.olympe.in/integrating-zxing-in-your-android-app-as-standalone-scanner/

добавить это в AndroidManifest.xml

<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="com.google.zxing.client.android.SCAN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 
+0

Я добавил, но я получаю ту же ошибку, ошибка сборки: Ошибка: (27, 63) ошибка : не удается найти класс символов CaptureActivity – onder

+0

java.lang.ClassNotFoundException: не нашел класс «com.google.zxing.client.android.CaptureActivity» Как я могу исправить это – onder

1

Вы не собираетесь использовать CaptureActivity в своем заявлении. По этой причине это не в core, и поэтому ваше приложение не может его найти.

Ваш код запутан, потому что вы, кажется, хотите интегрировать Intent, но тогда вам не нужно никакого кода в android или даже core. Вместо этого вы должны следовать инструкциям по адресу https://github.com/zxing/zxing/wiki/Scanning-Via-Intent

+0

Если я использую следующий код, он работает, но я получаю это message: Установить сканер штрих-кода? Я хочу использовать сканер qrcode в своем приложении, я не хочу устанавливать какое-либо приложение. Я могу сделать это? Благодаря интегратору IntentIntegrator = new IntentIntegrator (QrCodeReader.this); integrator.initiateScan(); – onder

+0

Тогда вы не хотите использовать 'Intent's'. Вам нужно написать собственное приложение для сканирования; пожалуйста, не клонируйте наши. Но вы должны повторно использовать 'core /' и повторно использовать части 'android /' source, если хотите. Просто не копируйте и не вставляйте. У нас так много проблем с этим. –

Смежные вопросы