#android #qr-code #zxing
#Android #qr-код #zxing
Вопрос:
При генерации qr-кода для Android с использованием библиотеки zxing можно ли установить номер версии, например, версию 4 или любую другую версию. Любое руководство или ссылка были бы заметны. Спасибо.
Ответ №1:
Да, проверьте карту EncodedHintType:
private Bitmap stringToQRCode(String text, int width, int height) {
BitMatrix bitMatrix;
try {
HashMap<EncodeHintType, Object> map = new HashMap<>();
map.put(EncodeHintType.CHARACTER_SET, "utf-8");
map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
map.put(EncodeHintType.QR_VERSION, 9); // (1-40)
map.put(EncodeHintType.MARGIN, 2); // pixels
bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height, map);
int bitMatrixWidth = bitMatrix.getWidth();
int bitMatrixHeight = bitMatrix.getHeight();
int[] pixels = new int[bitMatrixWidth * bitMatrixHeight];
int colorWhite = 0xFFFFFFFF;
int colorBlack = 0xFF000000;
for (int y = 0; y < bitMatrixHeight; y ) {
int offset = y * bitMatrixWidth;
for (int x = 0; x < bitMatrixWidth; x ) {
pixels[offset x] = bitMatrix.get(x, y) ? colorBlack : colorWhite;
}
}
Bitmap bitmap = Bitmap.createBitmap(bitMatrixWidth, bitMatrixHeight, Bitmap.Config.ARGB_4444);
bitmap.setPixels(pixels, 0, width, 0, 0, bitMatrixWidth, bitMatrixHeight);
return bitmap;
} catch (Exception i) {
i.printStackTrace();
return null;
}
}
Ответ №2:
Нет. В этом не было бы никакого реального смысла. Версия не может быть ниже, чем требуется для кодирования данных, а установка ее выше просто делает более плотный QR-код, который немного сложнее читать.
Комментарии:
1. как насчет его генерации для версии 4 (модуль 33×33)? Я попробовал это с помощью обычной Java-программы, используя библиотеку com.keepautomation.barcode, и успешно сгенерировал QR-код версии 4 (модуль 33×33), но возможно ли реализовать то же самое в Android?
2. не могли бы вы помочь мне добиться этого в Android?
3. Я не уверен, что вы имеете в виду. Версия устанавливается на минимально возможную версию, которая вмещает данные. Если это версия 4, будет использоваться версия 4. Вам вообще ничего не нужно делать.
4. Хорошо, я понял вашу точку зрения. По вашему мнению, версия будет установлена в соответствии с размером данных, который требуется для ее заполнения. Спасибо