Извлечение результатов из Android ZXing IntentIntegrator - PullRequest
3 голосов
/ 05 июня 2011

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

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

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

//String extractedName = contents.getName() 

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

TestActivity

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
    }
}
}

Ответы [ 4 ]

2 голосов
/ 30 августа 2011

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

1 голос
/ 28 сентября 2015

создание объекта в 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

1 голос
/ 05 июня 2011

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

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

0 голосов
/ 05 октября 2011

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

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

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

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

...