Извлечение результатов из Android ZXing IntentIntegrator

Я новичок в ZXing и изучаю их API. Я видел использование ZXing для создания приложения для сканирования штрих-кода Android и получение результата сканирования при использовании zxing?

Я так понимаю, что детали результата сканирования находятся в строке "contents". Как извлечь детали? Глядя на генератор QR, http://zxing.appspot.com/generator/ есть много такие поля, как имя, компания и номер телефона. Как извлечь эти данные?

мне нужно что-то вроде

//String extractedName = contents.getName() 

Извините, я очень новичок в этом. Буду признателен, если кто-то может предоставить мне подробные шаги. Спасибо.

Тестовая активность

public Button.OnClickListener mScan = new Button.OnClickListener() {
public void onClick(View v) {
    IntentIntegrator.initiateScan(MenuActivity.this);
}
};


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
        //How to get name from contents?

    } else if (resultCode == RESULT_CANCELED) {
        // Handle cancel
    }
}
}

person ZXingIT    schedule 04.06.2011    source источник


Ответы (4)


Я успешно извлек его. Отсканированные результаты находятся внутри строки 'contents'. Допустим, вы отсканировали код с именем и идентификатором. Строка будет содержать «имя» «идентификатор», разделенные пробелом. Вы можете использовать цикл for, чтобы справиться с этим.

person ZXingIT    schedule 30.08.2011

Как извлечь эти данные?

QR-код — это просто файл в виде картинки. Точно так же, как вам нужно знать формат файла, прежде чем вы сможете его использовать, вам нужно знать формат содержимого QR-кода, прежде чем вы сможете его использовать.

Эта вики-страница ZXing содержит информацию о типах содержимого QR-кода, которые они видели. .

person CommonsWare    schedule 04.06.2011
comment
В частности, используйте code.google.com/p/zxing/source/browse/trunk/core/src/com/google/ из проекта, чтобы преобразовать необработанный контент в структурированный объект. - person Sean Owen; 05.06.2011
comment
Кто-нибудь, пожалуйста, помогите мне с этим. - person ZXingIT; 12.06.2011

создать объект в IntentIntegrator

protected void onCreate(Bundle savedInstanceState) { <br>
        super.onCreate(savedInstanceState);<br>
        setContentView(R.layout.activity_main);<br>
        new IntentIntegrator(this).initiateScan();<br>
    }

Переопределить метод onActivityResult

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent) { <br>
        IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);<br>
        if (scanResult != null) {<br>
            TextView t = (TextView) findViewById(R.id.textView2);<br>
            String data[] =scanResult.getContents().split("\n");<br>
            for(String k:data){<br>
                t.append(k+"\n");<br>
            }<br>
        }<br>

        // else continue with any other code you need in the method

    }

В этом я получил данные, используя метод getContents, и разделил эту строку данных. Затем добавил эти данные в textview2

person Ishan Fernando    schedule 28.09.2015

сначала проверьте начало строки, например, если она начинается с («xyxy»), например «vcard». Будь осторожен! "vcard" неправильная строка!

Если это визитная карточка, я разбивал ее на части.

String[] vCardContent = content.split("\n");

Следующий шаг - проверить каждую часть, если она начинается, например, с. "N:" псевдоним "Имя"

person Martin    schedule 05.10.2011