Как интегрировать ZXing API с фронтальной камерой в Android?

Я просто хотел интегрировать ZXing API в свое приложение для Android, но не могу найти подходящую документацию.


person Ayush Verma    schedule 27.12.2011    source источник


Ответы (3)


Следуй этим шагам:

1) Загрузите исходный код здесь: http://code.google.com/p/zxing/source/checkout

2) Импортируйте исходный код как новый проект в Eclipse и сделайте корнем проекта папку /android (найденную в исходном коде).

3) Не забудьте также скопировать все в /core/src в этот проект, так как исходный код, импортированный на шаге 2, требует этого.

4) Убедитесь, что ваш компилятор настроен на Java 1.6 в Eclipse (щелкните правой кнопкой мыши свой проект, свойства, компилятор Java), иначе вы получите некоторые ошибки, связанные с аннотацией @Override.

5) Отредактируйте класс com.google.zxing.client.android.camera.open.GingerbreadOpenCameraInterface следующим образом:

  while (index < numCameras) {
       Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
       Camera.getCameraInfo(index, cameraInfo);


       if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
           break;
       }
       /*//Original code (gets the back camera. This is NOT what you want!)
       if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
    break;
  }*/
  index++;
}

5) Сделайте этот проект библиотекой, как легко описано здесь: http://developer.android.com/tools/projects/projects-eclipse.html#SettingUpLibraryProject

6) Ссылайтесь на этот проект в свой реальный проект (щелкните правой кнопкой мыши на своем реальном проекте, свойствах, пути сборки Java, проектах, добавить).

7) Готово! знак равно

Надеюсь, поможет.

person Bitcoin Cash - ADA enthusiast    schedule 13.12.2012
comment
хорошее описание Тиаго :) - person Arpit Garg; 12.02.2013
comment
Hai Tiago, я реализовал фронтальную камеру, как вы настаивали. Но он не сканирует и не получает результат. Показывается простой вид камеры. Если я покажу штрих-код перед ним. Ничего не произошло. Нет трассировки стека. В чем может быть проблема? Не могли бы вы помочь мне - person Rethinavel; 18.11.2013
comment
Проблема, скорее всего, в том, что передняя камера, которую вы используете, не имеет автофокуса, что очень затрудняет считывание штрих-кодов. Фронтальные камеры обычно блокируют фокус (для удешевления), что делает их неподходящими для близких объектов. У меня также были проблемы с фронтальными камерами для чтения штрих-кодов из-за отсутствия автофокуса. Иногда требовалось более 1 минуты, пока мне не удавалось распознать штрих-код. В других случаях я вообще не мог заставить камеру считывать штрих-код. Проблема не в софте а в самой камере. - person Bitcoin Cash - ADA enthusiast; 12.07.2014
comment
Не могли бы вы рассказать об этом подробнее? Скачать. Сейчас я вижу 4 разных проекта. В Core/src есть 1 файл. Больше беспокоит GingerbreadOpenCameraInterface, судя по поиску по всему архиву, вообще не существует. Возможно, они слишком сильно изменились. В этом случае версия, которую вы использовали, будет полезна. Еще лучше было бы просто разместить ваш пример где-нибудь. - person StarWind0; 03.01.2016

Последняя версия сканера штрих-кода, а также Исходный код ZXing теперь поддерживает фронтальную камеру.

person Adam Nybäck    schedule 09.12.2012
comment
Я ищу его в настройках, но не могу найти настройки. Как ты это делаешь ? - person Natim; 18.12.2013
comment
@Natim Я помню, что это обрабатывалось автоматически. По умолчанию используется задняя камера, но если такой камеры нет, вместо нее используется передняя камера. - person Adam Nybäck; 19.12.2013
comment
У меня сломалась задняя камера, хотелось бы попробовать переднюю. - person Natim; 19.12.2013
comment
Его нет в настройках. Я не думаю, что ты прав. Также мне нужно иметь возможность запускать его напрямую. - person StarWind0; 03.01.2016

ОБНОВИТЬ:

Поскольку часто задаваемые вопросы ZXing были обновлены с тех пор, как я опубликовал этот ответ, приведенное ниже содержание больше не соответствует действительности:

Прочитали ли вы часто задаваемые вопросы от ZXing?

Можно ли это использовать на устройствах Android, оснащенных только фронтальной камерой, например на планшетах Nexus 7? В настоящее время нет. Для приложения требуется камера. В Android «настоящими» камерами считаются только задние камеры, поэтому устройства только с передней камерой несовместимы. Кроме того, поддержка API для фронтальных камер появилась в более поздней версии Android, чем требуется приложению в настоящее время. Фронтальные камеры, как правило, имеют менее чувствительную ПЗС-матрицу и не имеют автофокуса, что в любом случае затрудняет сканирование с их помощью.

Однако Сканер штрих-кода+ поддерживает устройства с только фронтальная камера.

Кроме того, хотя я думаю, что это не совсем невозможно, если вы можете подключить фронтальную камеру. Поэтому я думаю, вам следует взглянуть на раздел «Камера» документации Android: здесь и здесь

person dumbfingers    schedule 04.10.2012
comment
(Это больше не так, и пункт часто задаваемых вопросов был удален.) - person Sean Owen; 09.12.2012
comment
@SeanOwen Спасибо, я зачеркнул свой ответ. - person dumbfingers; 09.12.2012