Мобильный сканер штрих-кода |

В последние годы QR-коды стали повсеместными. Я уверен, что вы видели его в рекламе в газете или на рекламном щите. С точки зрения непрофессионала, QR-коды, как и все другие штрих-коды, представляют собой изображения, предназначенные для чтения машинами. Обычно они представляют собой небольшую строку, например сокращенный URL-адрес или номер телефона. Последний выпуск SDK сервисов Google Play включает в себя API мобильного зрения, который, среди прочего, позволяет разработчикам Android очень легко создавать приложения, способные обнаруживать и считывать QR-коды в режиме реального времени. В этом руководстве я собираюсь помочь вам начать работу с ним и познакомить вас с библиотекой, которая использует эти и другие функции для вашего использования.

Штрих-код API — Обзор

API штрих-кодов обнаруживает штрих-коды в режиме реального времени на устройстве и в любой ориентации. Он также может обнаруживать несколько штрих-кодов одновременно.

Он считывает следующие форматы штрих-кодов:

Он автоматически анализирует QR Codes, Data Matrix, PDF-417а также Aztec valuesдля следующих поддерживаемых форматов:

  • URL-адрес
  • Контактная информация (VCARD и т.д.)
  • Календарное событие
  • Эл. адрес
  • Телефон
  • смс
  • ISBN
  • Wi-Fi
  • Геолокация (широта и долгота)
  • Водительское удостоверение / удостоверение личности AAMVA

Посмотрите это видео, чтобы познакомиться с API штрих-кодов.

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

Практический обзор

Если вы попробовали лабораторию кода штрих-кода , вы также можете просмотреть кодовую базу более сложного примера. . Клонируйте, импортируйте в свой проект и запускайте, чтобы увидеть интересные функции, которые это дает

Лаборатория кода

Предпосылки

Чтобы следовать этому руководству, вам понадобятся:

  1. последняя версия Android Studio
  2. Android-устройство с камерой

Если вы ознакомились с приведенным примером, вы, вероятно, уже знаете, что API мобильного зрения обещает больше. Ну, когда вы создадите второй пример, вы получите что-то похожее на:

С MobileVisionBarcodeScanner вы действительно можете поиграть с этими функциями и включить этот образец в качестве функции в свое приложение.

Что поддерживает библиотека:

  • Растровое сканирование
  • Пользовательский вид камеры на основе API мобильного зрения
  • атрибуты для настройки пользовательского вида камеры

Вот демо:

в том числе в вашем проекте:

добавить в корень build.gradle в конце репозиториев


    allprojects {
        repositories {
            ...
            maven { url " }
        }
    }

добавить зависимость


dependencies {
            compile 'com.github.KingsMentor:MobileVisionBarcodeScanner:v1.0'
    }

Атрибуты библиотеки.

Чтобы иметь больший контроль над пользовательским представлением, библиотека предоставляет следующие атрибуты:


<attr name="gvb_show_text" format="boolean" />
        <attr name="gvb_draw" format="boolean" />
        <attr name="gvb_multiple" format="boolean" />
        <attr name="gvb_touch" format="boolean" />
        <attr name="gvb_auto_focus" format="boolean" />
        <attr name="gvb_flash" format="boolean" />
        <attr name="gvb_rect_colors" format="reference" />
        <attr name="gvb_code_format" format="enum">
            <enum name="all_format" value="0"></enum>
            <enum name="code_128" value="1"></enum>
            <enum name="code_39" value="2"></enum>
            <enum name="code_93" value="4"></enum>
            <enum name="code_bar" value="8"></enum>
            <enum name="data_matrix" value="16"></enum>
            <enum name="ean_13" value="32"></enum>
            <enum name="ean_8" value="64"></enum>
            <enum name="itf" value="128"></enum>
            <enum name="qr_code" value="256"></enum>
            <enum name="upc_a" value="512"></enum>
            <enum name="upc_e" value="1024"></enum>
            <enum name="pdf417" value="2028"></enum>
            <enum name="aztec" value="4029"></enum>

 </attr>

Для чего нужны атрибуты:

  • gvb_draw — включить прямоугольное рисование вокруг кодов при сканировании
  • gvb_multiple — хотите, чтобы камера возвращала столько qr-кодов, сколько было отсканировано. Это работает с gvb_touch атрибут. он возвращает результат только при нажатии на экран или касании
  • gvb_touch — включить сенсорный прослушиватель для экрана
  • gvb_auto_focus — поддержка автофокуса
  • gvb_flash — включить вспышку
  • gvb_rect_colors — массивы цветов для рисования прямоугольника
  • gvb_code_format — формат штрих-кода, который должен поддерживаться. По умолчанию all_format

Примечание
эти атрибуты также могут быть инициализированы из java code . Мы рассмотрим это позже

Использование камеры с питанием от Mobile Vision.

Шаг 1 — Добавьте макет в xml:
<fragment
            android:id="@+id/barcode"
            android:name="com.google.android.gms.samples.vision.barcodereader.BarcodeCapture"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            app:gvb_auto_focus="true"
            app:gvb_code_format="all_format"
            app:gvb_flash="false"
            app:gvb_rect_colors="@array/rect_color" />

а это rect_color в colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <color name="color_green">#14808d</color>
    <color name="color_brown">#343838</color>
    <color name="color_orange">#f38a32</color>
    <color name="color_blue">#1479b7</color>
    <color name="divider_grey">#e4e4e5</color>

    <array name="rect_color">
        <item>@color/color_blue</item>
        <item>@color/color_brown</item>
        <item>@color/color_green</item>
        <item>@color/divider_grey</item>
        <item>@color/color_orange</item>
    </array>
</resources>

Шаг 2 — Инициализировать в java
BarcodeCapture barcodeCapture = (BarcodeCapture) getSupportFragmentManager().findFragmentById(barcode);
barcodeCapture.setRetrieval(this);

также убедитесь, что ваш класс Java реализует BarcodeRetriever

public class MainActivity extends AppCompatActivity implements BarcodeRetriever {

...


    
  @Override
    public void onRetrieved(final Barcode barcode) {
        Log.d(TAG, "Barcode read: " + barcode.displayValue);
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this)
                        .setTitle("code retrieved")
                        .setMessage(barcode.displayValue);
                builder.show();
            }
        });


    }

    
    @Override
    public void onRetrievedMultiple(final Barcode closetToClick, final List<BarcodeGraphic> barcodeGraphics) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                String message = "Code selected : " + closetToClick.displayValue + "\n\nother " +
                        "codes in frame include : \n";
                for (int index = 0; index < barcodeGraphics.size(); index++) {
                    Barcode barcode = barcodeGraphics.get(index).getBarcode();
                    message += (index + 1) + ". " + barcode.displayValue + "\n";
                }
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this)
                        .setTitle("code retrieved")
                        .setMessage(message);
                builder.show();
            }
        });

    }

    @Override
    public void onBitmapScanned(SparseArray<Barcode> sparseArray) {
        
    }

    @Override
    public void onRetrievedFailed(String reason) {
        
    }
}

как вы видете, BarcodeRetriever Интерфейс обрабатывает обратный вызов при успешном сканировании кода на основе указанных атрибутов.

BarcodeBitmapScanner.scanBitmap(this, bitmap, Barcode.ALL_FORMATS, this);
  • Установите атрибуты из java — используйте BarcodeCapture экземпляр для ссылки на методы установки
barcodeCapture.setShowDrawRect(true);

Ресурсы и кредиты

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *