Intereting Posts
UnknownError: ApiException: Key hash **** не соответствует … когда у меня установлено приложение FB Android Studio: использование ImageButton для запуска нового действия приводит к сбою приложения Android MotionEvent Указатель Index Confusion Как найти «последнюю страницу» в пейджере просмотра. Или общее число просмотров. Разработка Android Панель инструментов NavigationIcon потеряла тему Подключение к IIS Express с помощью эмулятора Android Picasso java.lang.IllegalStateException: вызов метода не должен происходить из основного потока Проблема с макетами с Android: повернутый TextView Android поймает необработанное исключение и покажет диалог Как обращаться с SecurityException, отброшенным из startActivity с помощью выбора? Создание выпадающего меню из файла .json Как мы можем выполнить файл сценария оболочки из моего приложения для Android? Ошибка Android takePicture Повторно открыть фоновое приложение через элемент уведомлений Использование swagger с базой данных android

Как сгенерировать 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() .