Создаем сканер штрих кодов и QR-кодов с помощью интеграции стороннего приложения
Главная » Создаем сканер штрих кодов и QR-кодов с помощью интеграции стороннего приложения

В народе довольно популярны приложения, умеющие сканировать штрих коды и QR-коды на различных вещах и продуктах и выдающие о них необходимую полезную информацию. В сегодняшнем уроке мы сделаем свое собственное приложение, способное работать с этими замысловатыми кодами. Но наше приложение не будет полностью работающим сканером, написанным лично нами, мы сделаем всего лишь приложение, которое будет использовать для анализа кодов известное на Play Market приложение под названием Barcode Scanner (бесплатное). Наше приложение будет с помощью намерения Intent запускать это упомянутое выше приложение, там будет происходить анализ необходимого кода, а результат анализа будет передаваться назад нашему приложению с помощью метода OnActivityResult, а затем высвечиваться уже в нашем приложении с помощью всплывающего Toast сообщения. 

Для начала создаем новый проект, выбираем Blank Activity.

Первым делом создадим пользовательский интерфейс приложения. Он будет состоять из двух кнопок для запуска сканеров штрих кода и QR-кода. При нажатии на кнопки пользователю будет предложено загрузить приложение Barcode Scanner с маркета. Открываем файл activity_main.xml и добавляем туда следующие элементы:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/container"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="#ffffff"
 android:orientation="vertical">

 <TextView
 android:id="@+id/textView1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center|top"
 android:layout_margin="20dp"
 android:text="Сканер"
 android:textColor="#000000"
 android:textSize="30dp" />

 <Button
 android:id="@+id/scanner"
 android:layout_width="250dp"
 android:layout_height="80dp"
 android:layout_gravity="center"
 android:layout_margin="10dp"
 android:gravity="center"
 android:onClick="scanQR"
 android:text="QR-код"
 android:textSize="18dp" >
 </Button>

 <Button
 android:id="@+id/scanner2"
 android:layout_width="250dp"
 android:layout_height="80dp"
 android:layout_gravity="center"
 android:layout_margin="10dp"
 android:gravity="center"
 android:onClick="scanBar"
 android:text="Штрих код"
 android:textSize="18dp" >
 </Button>
</LinearLayout>

Теперь переходим к работе с кодом. В принципе, ничего нового мы здесь не увидим, все довольно знакомое. Переход на другое приложение с помощью Intent, выполнение alert dialog для предложения пользователю перейти на Play Market для загрузки сканера, метод для обработки результатов программы сканера и получения данных с него OnActivityResult и их вывод в Toast сообщении. 

Открываем файл MainActivity.java и добавляем в него следующий, довольно понятный код:

import android.app.Activity;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

 static final String ACTION_SCAN = "com.google.zxing.client.android.SCAN";

 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 }

 // Запускаемм сканер штрих кода:
 public void scanBar(View v) {
 try {

 // Запускаем переход на com.google.zxing.client.android.SCAN с помощью intent:
 Intent intent = new Intent(ACTION_SCAN);
 intent.putExtra("SCAN_MODE", "PRODUCT_MODE");
 startActivityForResult(intent, 0);
 } catch (ActivityNotFoundException anfe) {

 // Предлагаем загрузить с Play Market:
 showDialog(MainActivity.this, "Сканнер не найден", "Установить сканер с Play Market?", "Да", "Нет").show();
 }
 }

 // Запуск сканера qr-кода:
 public void scanQR(View v) {
 try {
 
 // Запускаем переход на com.google.zxing.client.android.SCAN с помощью intent:
 Intent intent = new Intent(ACTION_SCAN);
 intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
 startActivityForResult(intent, 0);
 } catch (ActivityNotFoundException anfe) {

 // Предлагаем загрузить с Play Market:
 showDialog(MainActivity.this, "Сканнер не найден", "Установить сканер с Play Market?", "Да", "Нет").show();
 }
 }

 // alert dialog для перехода к загрузке приложения сканера:
 private static AlertDialog showDialog(final Activity act, CharSequence title,
 CharSequence message,CharSequence buttonYes, CharSequence buttonNo) {
 AlertDialog.Builder downloadDialog = new AlertDialog.Builder(act);
 downloadDialog.setTitle(title);
 downloadDialog.setMessage(message);
 downloadDialog.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
 public void onClick(DialogInterface dialogInterface, int i) {

 // Ссылка поискового запроса для загрузки приложения:
 Uri uri = Uri.parse("market://search?q=pname:" + "com.google.zxing.client.android");
 Intent intent = new Intent(Intent.ACTION_VIEW, uri);
 try {
 act.startActivity(intent);
 } catch (ActivityNotFoundException anfe) {

 }
 }
 });
 downloadDialog.setNegativeButton(buttonNo, new DialogInterface.OnClickListener() {
 public void onClick(DialogInterface dialogInterface, int i) {
 }
 });
 return downloadDialog.show();
 }

 // Обрабатываем результат, полученный от приложения сканера:
 public void onActivityResult(int requestCode, int resultCode, Intent intent) {
 if (requestCode == 0) {
 if (resultCode == RESULT_OK) {

 // Получаем данные после работы сканера и выводим их в Toast сообщении:
 String contents = intent.getStringExtra("SCAN_RESULT");
 String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
 Toast toast = Toast.makeText(this, "Содержание: " + contents + " Формат: " + format, Toast.LENGTH_LONG);
 toast.show();
 }
 }
 }
}

Вот и все, на этом наш сканер готов. Запускаем и проверяем:

Запуск перехода

Переход выполнен, загружаем ПО:

Загрузка программы

Категория: Уроки программирования | Просмотров: 1384 | Добавил: Oleg | Теги: интеграция приложения в приложении, сканер штрих кодов, приложение Android, сканер QR-кодов | Рейтинг: 0.0/0
Всего комментариев: 1
avatar
1 ewgenyiw • 13:06, 14.06.2015
Неплохо бы было если бы вы еще выкладывали исходники уроков
avatar