В этой статье мы будем использовать ZXing (Zebra Crossing) для расшифровки штрих-кода в нашем приложении для Android. Используя ZXing, нам не нужно беспокоиться о том, что у пользователя нет сканера штрих-кода, поскольку об этом позаботятся классы, предоставляемые библиотекой.
Интегрировав ZXing в наше приложение, мы можем предоставить пользователю более легкую возможность сканирования штрих-кодов, а также это позволит нам сосредоточиться на разработке основной части приложения.
Создание нового проекта
Шаг 1
В Eclipse создайте новый проект Android. Введите имя приложения, имя проекта и имя пакета.
Шаг 2
Откройте основной шаблон.Eclipse должен был создать стандартный шаблон.
Внутри него замените существующий контент кнопкой
После кнопки добавим два текстовых поля, в которых будут отображаться результаты отсканированной информации.<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 " > <Button android:id="@+id/scan_button " android:layout_width="wrap_content " android:layout_height="wrap_content " android:layout_centerHorizontal="true " android:text="@string/scan " /> </RelativeLayout>
<TextView
android:id="@+id/scan_format"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textIsSelectable="true"
android:layout_centerHorizontal="true"
android:layout_below="@id/scan_button" />
<TextView
android:id="@+id/scan_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textIsSelectable="true"
android:layout_centerHorizontal="true"
android:layout_below="@id/scan_format" />
Добавьте текст к кнопке.
Открыть файл разрешение/значения/строки <string name="scan">Scan</string>
Для сканирования пользователю придется нажать на кнопку.
Когда приложение получит результат распознавания, оно отобразит его в текстовых полях.
Интеграция ZXing
Шаг 1
ZXing — это библиотека с открытым исходным кодом, которая обеспечивает возможности распознавания штрих-кодов на Android. У некоторых пользователей уже установлено приложение ZXing, поэтому просто передайте ему код и ждите результатов.В этом приложении мы рассмотрим метод, вызывающий соответствующую функцию другого приложения.
Если у пользователя нет данного приложения, ему будет предложено его скачать.
В Eclipse мы добавим в ваш проект новый пакет. Для этого щелкните правой кнопкой мыши по папке источник и выберите «Новый» -> «Пакет», а затем введите com.google.zxing.integration.android как имя пакета.
Шаг 2
Eclipse предлагает несколько способов импорта существующего кода в проект. В этой статье самым простым методом будет создание двух классов, содержащих код из ZXing. Щелкните правой кнопкой мыши свой проект, выберите «Создать» -> «Класс» и введите «IntentIntegrator» в качестве имени класса.Остальные параметры вы можете оставить без изменений.
Создав класс, сделайте то же самое, но назовите его «IntentResult».
Скопируйте код из обоих классов библиотеки и затем вставьте его в созданные классы.
Теперь вы можете подключать файлы к основному классу import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
Давайте вернемся на минутку и включим следующие файлы.
Обратите внимание, что Eclipse, возможно, уже подключил их для вас.
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
Изучите содержание двух занятий.
Изучив их, вы обнаружите, что они не читают код. Эти два класса представляют собой просто интерфейсы, обеспечивающие доступ к функциям сканирования.
Сканирование
Шаг 1
Давайте реализуем сканирование, когда пользователь нажимает на нашу кнопку.
В основном файле приложения есть метод onCreate, который должен выглядеть примерно так protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
Перед этой функцией создайте следующие переменные, которые будут хранить нашу кнопку и два текстовых поля, созданных в шаблоне.
private Button scanBtn;
private TextView formatTxt, contentTxt;
После существующего кода в onCreate добавьте строки, которые будут инициализировать переменные.
scanBtn = (Button)findViewById(R.id.scan_button);
formatTxt = (TextView)findViewById(R.id.scan_format);
contentTxt = (TextView)findViewById(R.id.scan_content);
Теперь давайте добавим обработчик кликов scanBtn.setOnClickListener(this);
Давайте расширим класс, чтобы объявить интерфейс OnClickListener. public class MainActivity extends Activity implements OnClickListener
Шаг 2
Теперь мы можем ответить на нажатие кнопки, запустив процесс сканирования.
Добавим метод onClick public void onClick(View v){
//respond to clicks
}
Проверяем, была ли нажата кнопка сканирования if(v.getId()==R.id.scan_button){
//scan
}
Внутри блока с условием мы создадим экземпляр класса IntentIntegrator, который мы импортировали.
IntentIntegrator scanIntegrator = new IntentIntegrator(this);
Теперь давайте вызовем процедуру, которая начнет сканирование scanIntegrator.initiateScan();
В этот момент должно начаться распознавание, но только в том случае, если у пользователя установлено необходимое приложение.
Если его там нет, вам будет предложено начать загрузку.
Результат сканирования будет возвращен в приложение.
Обработка результатов сканирования
Шаг 1
Сканер запустится при нажатии кнопки.
Результат сканирования затем будет возвращен методу onActivityResult. Давайте добавим это в наш код public void onActivityResult(int requestCode, int resultCode, Intent intent) {
//retrieve scan result
}
Внутри функции мы попробуем обработать результат IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
Шаг 2
Как и в случае с любыми другими данными, полученными от другого приложения, было бы неплохо проверить, что результат не пуст. Мы продолжим только в том случае, если получим правильный результат. if (scanningResult != null) {
//we have a result
}
Если мы не получили результат сканирования (например, пользователь отменил сканирование), то мы просто выведем сообщение
else{
Toast toast = Toast.makeText(getApplicationContext(),
"No scan data received!", Toast.LENGTH_SHORT);
toast.show();
}
Вернемся к блоку с условием, разберемся, что нам вернула библиотека.
Объект Intent Result имеет метод, который предоставляет результат сканирования.
Получить результат сканирования в виде строки String scanContent = scanningResult.getContents();
Также мы получаем представление штрих-кода String scanFormat = scanningResult.getFormatName();
Шаг 3
Теперь в нашем приложении есть вся информация, необходимая для отображения.В нашей статье мы просто покажем его пользователю.
formatTxt.setText("FORMAT: " + scanFormat);
contentTxt.setText("CONTENT: " + scanContent);
Запустите наше приложение на реальном устройстве, а не на эмуляторе, чтобы увидеть, как работает функция распознавания штрих-кода.
Попробуйте отсканировать штрих-код с книги или любого другого товара.
Результаты сканирования
Заключение
В этой статье мы узнали, как сканировать штрих-код с помощью ZXing. В собственных приложениях после получения информации вы, скорее всего, захотите ее обработать, например, если в штрих-коде есть URL, то перейти по нему и т.п.Теги: #barcode #Android #zxing #разработка Android
-
Ваш Путеводитель По Ssl-Сертификатам
19 Oct, 24 -
Важность Логистики В Видеопроизводстве
19 Oct, 24 -
Надежное Шифрование Данных В Png
19 Oct, 24 -
Прочтите Код, Остальное Сделает Компилятор.
19 Oct, 24 -
Правовые Аспекты Скачивания Музыки И Фильмов
19 Oct, 24