Можно ли установить версию при генерации qr-кода с использованием zxing lib в Android?

#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. Хорошо, я понял вашу точку зрения. По вашему мнению, версия будет установлена в соответствии с размером данных, который требуется для ее заполнения. Спасибо