Intereting Posts
Android YouTube API «Произошла ошибка при инициализации проигрывателя YouTube» Как рассчитать разницу во времени между двумя временными полями в отношении изменения даты Форматирование DateUtils.getRelativeDateTimeString Android – Принудительная локаль, сбрасываемая при изменении ориентации Android: в биллинге приложения RESULT_SERVICE_UNAVAILABLE Как я могу подключиться к Android с ADB через TCP? Прозрачная строка состояния, не работающая с windowTranslucentNavigation = "false" Eclipse IDE, ADT для android SDK error Аутентификация Facebook для службы JSON с помощью приложения для Android Сбой сборки Gradle: файлы Dex не могут превышать 64k GCM (Google Cloud Messaging) не отправляет ошибку при удалении приложения ListView, SimpleCursorAdapter, фильтр EditText – почему он ничего не сделает? Обновление apk SHA1 отличается даже после использования того же хранилища ключей Как просто установить apk в устройство в Android Studio OrmLite должны ли операции db происходить в основном потоке?

Как сгенерировать QR-код для Android-приложения?

Мне нужно создать qrcode в моем приложении для Android, и мне нужна библиотека или исходный код, который позволяет мне создать QR-код в приложении для Android.

Необходимая библиотека должна:

  1. Не оставляйте водяной знак (например, библиотеку onbarcode )
  2. Не использовать API веб-сервиса для создания qrcode (например, библиотеки Google zxing)
  3. Не нужны сторонние инсталляторы (например, QR Droid)

Я уже создал такой код для iPhone (Objective-C), но мне нужно быстрое исправление для Android, пока у меня не будет времени создать собственный генератор QR-кода. Это мой первый проект для Android, поэтому любая помощь будет оценена по достоинству.

Вы заглянули в ZXING ? Я успешно использовал его для создания штрих-кодов. Вы можете увидеть полный рабочий пример в приложении bitcoin src

 // this is a small sample use of the QRCodeEncoder class from zxing try { // generate a 150x150 QR code Bitmap bm = encodeAsBitmap(barcode_content, BarcodeFormat.QR_CODE, 150, 150); if(bm != null) { image_view.setImageBitmap(bm); } } catch (WriterException e) { //eek } 

С zxing это мой код для создания QR

  QRCodeWriter writer = new QRCodeWriter(); try { BitMatrix bitMatrix = writer.encode(content, BarcodeFormat.QR_CODE, 512, 512); int width = bitMatrix.getWidth(); int height = bitMatrix.getHeight(); Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { bmp.setPixel(x, y, bitMatrix.get(x, y) ? Color.BLACK : Color.WHITE); } } ((ImageView) findViewById(R.id.img_result_qr)).setImageBitmap(bmp); } catch (WriterException e) { e.printStackTrace(); } 

Вот моя простая и работающая функция для создания растрового изображения! Я использую только ZXing1.3.jar! Я также установил уровень исправления до максимума!

PS: x и y обращаются вспять, это нормально, потому что битMatrix обратный x и y. Этот код отлично работает с квадратным изображением.

 public static Bitmap generateQrCode(String myCodeText) throws WriterException { Hashtable<EncodeHintType, ErrorCorrectionLevel> hintMap = new Hashtable<EncodeHintType, ErrorCorrectionLevel>(); hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // H = 30% damage QRCodeWriter qrCodeWriter = new QRCodeWriter(); int size = 256; ByteMatrix bitMatrix = qrCodeWriter.encode(myCodeText,BarcodeFormat.QR_CODE, size, size, hintMap); int width = bitMatrix.width(); Bitmap bmp = Bitmap.createBitmap(width, width, Bitmap.Config.RGB_565); for (int x = 0; x < width; x++) { for (int y = 0; y < width; y++) { bmp.setPixel(y, x, bitMatrix.get(x, y)==0 ? Color.BLACK : Color.WHITE); } } return bmp; } 

Возможно, эта старая тема, но я нашел эту библиотеку очень полезной и простой в использовании

QRGen

Пример использования в android

  Bitmap myBitmap = QRCode.from("www.example.org").bitmap(); ImageView myImage = (ImageView) findViewById(R.id.imageView); myImage.setImageBitmap(myBitmap); 

Я использовал zxing-1.3 jar, и мне пришлось внести некоторые изменения в реализацию кода из других ответов, поэтому я оставлю свое решение для других. Я сделал следующее:

1) найдите zxing-1.3.jar, загрузите его и добавьте свойства (добавьте внешнюю банку).

2) в макете активности добавьте ImageView и назовите его (в моем примере это tnsd_iv_qr).

3) включить код в мою деятельность для создания qr-изображения (в этом примере я создавал QR для биткойн-платежей):

  QRCodeWriter writer = new QRCodeWriter(); ImageView tnsd_iv_qr = (ImageView)findViewById(R.id.tnsd_iv_qr); try { ByteMatrix bitMatrix = writer.encode("bitcoin:"+btc_acc_adress+"?amount="+amountBTC, BarcodeFormat.QR_CODE, 512, 512); int width = 512; int height = 512; Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { if (bitMatrix.get(x, y)==0) bmp.setPixel(x, y, Color.BLACK); else bmp.setPixel(x, y, Color.WHITE); } } tnsd_iv_qr.setImageBitmap(bmp); } catch (WriterException e) { //Log.e("QR ERROR", ""+e); } 

Если кто-то задается вопросом, переменная «btc_acc_adress» является строкой (с адресом BTC), amountBTC – это двойная сумма, при которой, конечно, сумма транзакции.

Zxing не предоставляет (только) веб-API; Действительно, это Google, предоставляющий API, из исходного кода, который позже был открыт в проекте.

Как говорит Роб, здесь вы можете использовать исходный код Java для кодера QR-кода для создания необработанного штрих-кода, а затем визуализировать его как растровое изображение.

Я могу предложить еще более простой способ. Вы можете вызвать сканер штрих-кода по Intent для кодирования штрих-кода. Вам нужно всего несколько строк кода и два класса из проекта под android-integration . Основной из них – IntentIntegrator . Просто позвоните в shareText() .