Комментарии 7
Помню, на одном рекламном буклете был QR-код желтого цвета на бордовом фоне. Несколько подряд программ из Google Play не могли его распознать, несмотря на то, что изображение нормально фокусировалось и на вид было довольно контрастным. В одной из программ была опция «инвертировать цвета», что и помогло распознать такой код.
Я так понимаю, большинство программ использует указанную native библиотеку, которая не справилась с цветным кодом. Довольно странно допускать, что фон будет обязательно белым (светлым). Или это требования стандарта на QR-коды?
Я так понимаю, большинство программ использует указанную native библиотеку, которая не справилась с цветным кодом. Довольно странно допускать, что фон будет обязательно белым (светлым). Или это требования стандарта на QR-коды?
+1
Будьте осторожны с «необычными» кодировками. Так, если в вашем QR Code не зашифрована команда переключения кодовой страницы, то байтовые блоки данных будут интерпретироваться разными читалками по-разному. По стандарту, в QR Code в случае, когда в нём не указана команда смены кодовой страницы, бинарные блоки данных должны интерпретироваться по латинской кодовой странице (привет, кракозябры). В реальности, большинство генерилок QR Code забивают болт на эту команду и шифруют всё либо в текущей кодовой странице пользователя, либо в юникоде, либо еще как-нибудь. Соответственно, многие реальные читалки QR Code точно так же забивают на стандарт и у них кодовая страница по-умолчанию также может отличаться от стандарта.
Чтобы в вашем QR Code можно было закодировать какой-то нелатинский текст в соответствии со спецификацией баркода, нужно, чтобы генератор умел вставлять команду переключения кодовой страницы (или, по-другому ECI).
Чтобы в вашем QR Code можно было закодировать какой-то нелатинский текст в соответствии со спецификацией баркода, нужно, чтобы генератор умел вставлять команду переключения кодовой страницы (или, по-другому ECI).
+2
Генерить и снимать коды можно только с помощью ZXing.
Примерно как-то так:
У меня только одна проблема возникла с зеброй, а это автофокус, который она использует во время сканирования фотогравий. Но, это можно отключить.
Почему ZBar? Поделитесь опытом, пожалуйста.
Примерно как-то так:
...
import com.google.zxing.Result;
import com.google.zxing.client.android.CaptureActivity;
public class QRReaderActivity extends CaptureActivity
{
public void handleDecode(Result rawResult, Bitmap barcode)
{
Intent resultIntent = new Intent();
resultIntent.putExtra("SCAN_RESULT", rawResult.getText());
setResult(RESULT_OK, resultIntent);
finish();
}
}
// request activity for result
Intent intent = new Intent(context, QRReaderActivity.class);
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
У меня только одна проблема возникла с зеброй, а это автофокус, который она использует во время сканирования фотогравий. Но, это можно отключить.
Почему ZBar? Поделитесь опытом, пожалуйста.
0
У нас есть опыт использования и того и другого. В ZXing до недавнего времени не было механизма встроить его в своё приложение «целиком», т.е. ZXing-приложение тоже должно было быть установлено и для сканирования нужно было запускать чужую активити и ждать результатов. Сейчас уже есть stand-alone версия, которая позволяет добавить сразу фрагмент с видео-превью, но поддерживается только landscape-ориентация (по крайней мере так было месяц назад).
Еще одно достоинство ZBar — он сканирует гораздо быстрее. Прирост скорости очень заметен.
Еще одно достоинство ZBar — он сканирует гораздо быстрее. Прирост скорости очень заметен.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Генерируем и сканируем QR/BAR коды