Начало работы с ZXing на Android - PullRequest
3 голосов
/ 13 июня 2010

Я пытаюсь добавить ZXing в свой проект (добавить кнопку, которая вызывает сканер при нажатии).Я нашел это: http://groups.google.com/group/android-developers/browse_thread/thread/788eb52a765c28b5 и, конечно, домашний сайт ZXing: http://code.google.com/p/zxing/,, но все еще не мог понять, что включить в путь к классам проекта, чтобы все это заработало!

Какна данный момент я скопировал классы в первой ссылке на свой проект (с некоторыми изменениями имени пакета), и он запускается, но вылетает после нажатия кнопки и попытки установить сканер штрих-кода.

Некоторый код:

private void setScanButton(){
    Button scan = (Button) findViewById(R.id.MainPageScanButton);
    scan.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            IntentIntegrator.initiateScan(MyActivity.this);
        }
    });
}

Результирующая ошибка (из logcat):

06-13 15:26:01.540: ERROR/AndroidRuntime(1423): Uncaught handler: thread main exiting due to uncaught exception
06-13 15:26:01.560: ERROR/AndroidRuntime(1423): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=market://search?q=pname:com.google.zxing.client.android }

Идеи?

Ответы [ 8 ]

7 голосов
/ 15 октября 2010

Перейти здесь для ссылок.

В упражнении, которое вы хотите запустить сканирование штрих-кода, включите

IntentIntegrator.initiateScan(YourActivity.this); 

, а затем также включите:

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            String contents = intent.getStringExtra("SCAN_RESULT");
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
            // Handle successful scan
            TextView 
        } else if (resultCode == RESULT_CANCELED) {
            // Handle cancel
        }
    }
};

Приложение Barcode Scanner будет обрабатывать фактическое сканирование.Если приложение Barcode Scanner не установлено, интегратор предложит им установить его.

----------- От nEx.Software ---------------

3 голосов
/ 13 июня 2010

Во-первых, ZXing не сможет автоматически запрашивать у пользователя загрузку с маркета на эмуляторе, поскольку на эмуляторе нет маркета. Вам нужно будет вручную установить Barcode Scanner APK на эмуляторе.

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

1 голос
/ 07 марта 2013

Просто добавьте этот код в файл манифеста в теге application:

 <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.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="com.google.zxing.client.android.SCAN" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

Затем добавьте следующее разрешение, если оно еще не было добавлено, вверху файла:

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

0 голосов
/ 14 октября 2015

Я использую Zxing на вкладке (фрагмент) и использую библиотеку поддержки (для компонентов Material Design), поэтому мне пришлось называть это так:

Интегратор IntentIntegrator = новый IntentIntegrator (getActivity ()); integrator.forSupportFragment (это) .initiateScan ();

затем в onActivityResult ()

    if (resultCode == Activity.RESULT_OK) {
        if (requestCode == IntentIntegrator.REQUEST_CODE) {

            String contents = data.getStringExtra("SCAN_RESULT");
            String format = data.getStringExtra("SCAN_RESULT_FORMAT");
            Log.i(TAG, "Barcode Result: " + contents);
            etc...
        }
    }

и в моем Manifest.xml

    <activity
        android:name="com.google.zxing.client.android.CaptureActivity"
        android:configChanges="orientation|keyboardHidden"
        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>

Теперь все работает очень хорошо. Я не был успешным, просто используя намерения и startActivityForResult (). Сканер запустится и зафиксирует QR-код, но не вернется.

В моем build.grade у меня есть:

репозитории {mavenCentral () maven {url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/"} }

compile 'com.google.zxing:core:3.2.1'
compile 'com.embarkmobile:zxing-android-minimal:2.0.0@aar'
compile 'com.embarkmobile:zxing-android-integration:2.0.0@aar'
0 голосов
/ 05 января 2014
  1. Включите SD-карту для эмулятора.
  2. Скопировать ссылку на BarcodeScaner, найденную на странице загрузки ZXing
  3. Откройте браузер в эмуляторе и укажите поле редактирования ссылки
  4. Введите терминал и команду adb shell input text 'https://code.google.com/p/zxing/downloads/detail?name=BarcodeScanner-4.5.1.apk&can=2&q=' - ссылка находится на странице загрузки ZXing
  5. Ссылка скопирована в браузер, поэтому вы можете скачать и установить ее. Это решает описанную проблему.
0 голосов
/ 29 июля 2013

если вы используете zxing в первый раз, я рекомендую этот проект * 1 *, это часть zxing, все что вам нужно, это импортировать проект и запустить его. попытка сделать работу с QR-кодами в Android немного проще С настоятельно рекомендую bigenner. Удачи. Наконец, спасибо Шону Оуэну;

0 голосов
/ 08 января 2013

приложение сканера штрих-кода не установлено в вашем эмуляторе, что дает это исключение. Ниже приведена пошаговая инструкция по установке стороннего приложения в эмуляторе:

Установить приложение на эмуляторе

0 голосов
/ 21 декабря 2011

Проверьте свой AndroidManifest, правильно ли вы указали атрибуты " android: name " для вновь добавленных действий. Вы получили « ActivityNotFoundException », главным образом потому, что вы можете использовать другое имя пакета, а ZXing использует « com.google.zxing.client.android ». Когда вы загружаете первую активность ZXing, присвойте ему абсолютный путь к классу , а не относительный путь. Тогда ваша ошибка исчезнет.

...