Сканер штрих-кода Zxing интегрированное внешнее приложение сканера штрих-кода

Я пытаюсь интегрировать сканер штрих-кода zxing в свое приложение. Все прошло по плану, только если я нажимаю на сканирование, мне предлагается выбрать встроенный или внешний. Кого я могу избежать этого вопроса?

К проекту: я не импортировал его как библиотеку, я поместил все файлы java-кода в проект. это было одним из требований, которые у нас есть. Мы не хотим, чтобы приложение зависело от каких-либо внешних ресурсов (даже если они только внутренние).

Я также протестировал его на устройстве Android, на котором нет сканера штрих-кода zxing. Там не задают вопрос.

Как я могу обойти этот вопрос и указать на внутреннюю версию?

Вот код вызова:

button2.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent intent = new Intent("com.google.zxing.client.android.SCAN");
            intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
            startActivityForResult(intent, 0);
        }
    });

Я также пытался найти этот класс com.google.zxing.client.android.SCAN, но не смог его найти. Но самое смешное, что это работает.

Вот часть манифеста:

    <activity android:name="com.google.zxing.client.android.CaptureActivity"
       android:screenOrientation="landscape"
       android:configChanges="orientation|keyboardHidden"
       android:theme="@android:style/Theme"
       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>

В коде интеграции я следовал этому:

http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-scanner-into-your-android-app-natively-using-eclipse/

Я действительно не знаю, что я сделал не так. ^^


person Community    schedule 12.05.2012    source источник


Ответы (1)


Вот код вызова

Вы пытаетесь начать действие с действием com.google.zxing.client.android.SCAN. Любое данное устройство может иметь любое их количество, в том числе из стандартного приложения Barcode Scanner.

Следовательно, вместо:

Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 

вы должны использовать:

Intent intent = new Intent(this, com.google.zxing.client.android.CaptureActivity.class); 

И, поскольку вы не сканер штрих-кода, вам следует избавиться от <intent-filter> элементов из CaptureActivity в своем манифесте.

person CommonsWare    schedule 12.05.2012
comment
Эй, приятель, он не работает, знаешь почему? он говорит, что намерение конструктора (новый View.OnClickListener(){}, Class‹CaptureActivity›) не определено, тогда мне понравилось это намерение намерения = новое намерение (MainActivity.this, com.google.zxing.client.android. CaptureActivity.класс); но то же самое сообщение отображается - person Alexander Zaldostanov; 22.05.2014