Сканер штрих-кода

Я новичок в android. Я пытаюсь разработать сканер штрих-кода, который работает следующим образом: Возьмите изображение (штрих-кода) через камеру и сканируйте это изображение штрих-кода. мой вопрос в том, как я могу это сделать? Спасибо заранее

Вот мой код:

TextView result_text;
Button scan_btn;

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

    result_text = (TextView)findViewById(R.id.Result_tv);

    scan_btn = (Button)findViewById(R.id.Barcode_Scan_Button);
    scan_btn.setOnClickListener( new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent scanIntent= new Intent("com.google.zxing.client.android.SCAN");
            scanIntent.putExtra("SCAN_MODE", "QR_CODE_MODE");

            startActivityForResult(scanIntent, 0);

        }
    });
}

public void onActivityResult(int requestCode, int resultCode, Intent intent) {

        if (requestCode == 0) {


          if (resultCode == RESULT_OK) {

            result_text.setText(intent.getStringExtra("SCAN_RESULT"));

          } else if (resultCode == RESULT_CANCELED) {

            result_text.setText("Scan cancelled.");

          }

        }

      }

    }

Ответ 1

@Зайти подход, который вы принимаете, строго не рекомендуется.

В соответствии с их рекомендациями вы не должны явно называть Scan Intent.

Вы должны использовать новый класс IntentIntegrator, выпущенный zxing.

Здесь вы идете

Сначала добавьте код для вызова намерения:

IntentIntegrator integrator = new IntentIntegrator(yourActivity);
integrator.initiateScan();

Загрузите класс IntentIntegrator снизу вверх.

http://code.google.com/p/zxing/source/browse/trunk/android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java

Во-вторых, добавьте это в свою активность, чтобы обработать результат:

@Override   
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
  IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
  if (scanResult != null) {
    // handle scan result
  }
  // else continue with any other code you need in the method
  ...
}

Поделитесь своим временем, чтобы пройти через страницу вики Zxing. Они объяснили это очень красиво.

http://code.google.com/p/zxing/w/list

http://code.google.com/p/zxing/wiki/ScanningViaIntent

Вот пример приложения, демонстрирующий, как вызвать намерение Zxing.

http://code.google.com/p/zxing/source/browse/trunk/androidtest/src/com/google/zxing/client/androidtest/ZXingTestActivity.java

Наконец, Test Project + Library находится в

http://code.google.com/p/zxing/source/browse/trunk#trunk%2Fandroid-integration%253Fstate%253Dclosed

Ответ 2

Исследование http://code.google.com/p/zxing/

В любом случае проблема довольно сложная, это IIRC, выполненная с использованием четырехгранников, обнаружения границ, вычислений матриц и т.д. Кроме того, существует множество стандартов. Подготовьтесь к месяцу (-ям) работы.

Ответ 4

Firebase ML kit API сканирования штрих-кода может быть использован для создания функции сканирования штрих-кода в приложениях для Android. Чтобы получить значение штрих-кода, прямое изображение, содержащее штрих-код, необходимо передать в API-интерфейс сканирования штрих-кода Firebase ML.

Вот пример приложения с функцией сканирования штрих-кода.