Как создать сканер штрих-кода (Android)? - PullRequest
16 голосов
/ 04 ноября 2011

Может кто-нибудь сказать мне, если создание приложения сканера штрих-кода (для Android) сложно?Является ли библиотека OpenCV хорошим началом?Где я могу найти алгоритм, который четко объясняет, как читать штрих-коды?Буду благодарен всем хорошим материалам на эту тему!

Заранее спасибо!

Ответы [ 4 ]

26 голосов
/ 04 ноября 2011

Проект ZXing предоставляет автономное приложение для считывания штрих-кода, которое через механизм намерений Android может вызываться другими приложениями, которые хотят интегрировать сканирование штрих-кода.

Самый простой способ сделать это - вызвать ZXing SCAN Intent из вашего приложения, например так:

public Button.OnClickListener mScan = new Button.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent("com.google.zxing.client.android.SCAN");
        intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
        startActivityForResult(intent, 0);
    }
};

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
        } else if (resultCode == RESULT_CANCELED) {
            // Handle cancel
        }
    }
}

Нажатие кнопки, связанной с mScan, приведет к открытию непосредственно на экране сканера штрих-кода ZXing (или к аварийному завершению, если ZXing не установлен). Как только штрих-код будет распознан, вы получите результат в своей деятельности, здесь, в переменной содержимого.

Чтобы избежать сбоев и упростить для вас вещи, ZXing предоставил служебный класс , который вы могли бы интегрировать в свое приложение для упрощения установки ZXing, перенаправив пользователя в Android Market, если он еще не установлен.

Наконец, если вы хотите интегрировать сканирование штрих-кодов непосредственно в свое приложение, не полагаясь на отдельное установленное приложение ZXing, тогда это проект с открытым исходным кодом, и вы можете это сделать! :)

10 голосов
/ 04 ноября 2011

Вы можете использовать существующий сканер штрих-кода Zebra Crossing для Android, доступный по адресу: http://code.google.com/p/zxing/. Обычно идея заключается в том, что вы вызываете его с помощью намерений, как в следующем примере: http://code.google.com/p/zxing/wiki/ScanningViaIntent.

6 голосов
/ 04 ноября 2011

Zebra Crossing - это лучший документированный декодер или кодер штрих-кода java 1D или 2D. Многие люди используют его, и это стало стандартом де-факто для Android. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *)

RedLaser имеет API , но вам придется заплатить, если вы используете его в производстве. Когда я попробовал это, я не нашел в этом впечатляющего улучшения по сравнению с Zebra Crossing. Конечно, не по цене .

jjil делает штрих-коды , но в проекте всего 3 коммиттера, и я никогда не использовал его сам, поэтому не знаю, что вам сказать об этом. Его источник определенно читабелен.

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

5 голосов
/ 29 мая 2013

Вы можете использовать библиотеку zbar. Загрузите его с: http://sourceforge.net/projects/zbar/files/AndroidSDK/

Я думаю, что это быстрее и точнее, чем zxing.

...