Cordova Barcodescanner – Используйте фронтальную камеру

Я использую этот barcodescanner ( https://github.com/wildabeast/BarcodeScanner ) в приложении, созданным с использованием Cordova, специально предназначенном для использования на устройстве Android.

У меня есть следующая функция, настроенная в JavaScript:

$(document).ready(function(){ $('#scanner').click( function(){ console.log('clicked'); //to see if the function is firing cordova.plugins.barcodeScanner.scan( function (result) { alert("We got a barcode\n" + "Result: " + result.text + "\n" + "Format: " + result.format + "\n" + "Cancelled: " + result.cancelled); }, function (error) { alert("Scanning failed: " + error); } ); }); }); 

Как указано в документации, предоставленной для этого плагина. Я добавил его в свой проект, используя CLI cordova:

 $ cordova add plugin https://github.com/wildabeast/BarcodeScanner.git 

Когда я перечисляю доступные плагины для своих проектов, я вижу, что он установлен правильно. Также я могу использовать камеру в своем приложении, нажав кнопку, отключающую правильную функцию, и может сканировать с помощью камеры заднего вида без проблем.

Есть ли способ использовать переднюю камеру для сканирования? Если это не в плагине, есть ли способ установить камеру по умолчанию, используемую устройством, в коде, использовать по умолчанию фронтальную камеру? Приложение, которое мы разрабатываем, должно специально использовать только фронтальную камеру и не нуждается в задней лицевой камере.

Любая помощь будет оценена по достоинству.

Вот разбивка всех шагов, которые мы предприняли, чтобы понять это правильно. Большое количество материалов из разных источников связано с этой работой, но большинство из них не учитывают, что мы не разработчики JAVA, и что даже некоторые из самых маленьких методов JAVA являются новыми или даже неизвестными нам. Это решение с точки зрения веб-разработчика.

Рабочий репозиторий можно найти здесь для использования: https://github.com/wilcovandeijl/camera_app

Спасибо @Leo за вашу помощь. Ваш пост привел нас в правильном направлении, но вот более подробный подход, который мы приняли, в конечном итоге сработал. Если вы хотите подробнее рассказать о своем посте, я был бы признателен, если это другое решение, чем тот, который в конечном итоге сработал.

Во-первых, мы добавили плагин сканера штрих-кода в наш проект с использованием командной строки CMD:

cordova plugin add com.phonegap.plugins.barcodescanner

Измените каталог на файл LibraryProject, который поставляется по умолчанию с загруженным плагином:

cd <project directory>\plugins\com.phonegap.plugins.barcodescanner\src\android\LibraryProject

Добавьте новый файл в этот каталог с именем local.properties с указанием пути к вашему SDK.

sdk.dir=C:\\Users\\QQQ\\Documents\\Android\\adt-bundle-windows-x86_64\\sdk

Откройте файл

<Project directory>plugins\com.phonegap.plugins.barcodescanner\src\android\LibraryProject\src\com\google\zxing\client\android\camera\open\GingerbreadOpenCameraInterface.java

if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) строку 48 для чтения: if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT)

В CMD Измените каталог на:

cd <project directory>\plugins\com.phonegap.plugins.barcodescanner\src\android\LibraryProject

В ant release типа CMD. Это создает файл classes.jar, который можно найти в <project directory > \plugins\com.phonegap.plugins.barcodescanner\src\android\LibraryProject\bin .

Если вы получили сообщение « Unable to resolve target 'android-17' , взгляните на это решение .

В одной папке вверх, удалите файл com.google.zxing.client.android.captureactivity.jar , но не забудьте скопировать имя файла. Опустите файл classes.jar в этот каталог (\ plugins \ com.phonegap.plugins.barcodescanner \ src \ android \ LibraryProject) и переименуйте его в com.google.zxing.client.android.captureactivity.jar

Наконец, скопируйте вновь созданный файл com.google.zxing.client.android.captureactivity.jar каталог <project directory>\platforms\android\libs .

Теперь вы готовы запустить команду cordova build android в CMD, чтобы скомпилировать APK и запустить на вашем устройстве.

Спасибо @Leo за вашу помощь в этом, мы очень ценим это.

Я не думаю, что есть способ выбрать, какую камеру использовать непосредственно из плагина BarcodeScanner. Как я решил эту проблему, было отредактировать библиотеку ZXING, которую этот плагин использует для функции сканирования. К сожалению, библиотека ZXING, которая появляется при установке плагина BarcodeScanner, уже скомпилирована, поэтому вы не можете редактировать какие-либо файлы.

Создайте резервную копию своего Android-проекта, прежде чем вносить какие-либо изменения. Вот как я получил свое приложение для использования передней камеры:

  1. Первое, что вам нужно сделать, это загрузить библиотеку BarCodeScanner из GitHub ( https://github.com/wildabeast/BarcodeScanner ), библиотека Android ZXING находится в каталоге / src / android / LibraryProject / src.
  2. Затем удалите текущую библиотеку ZXING, которую использует ваш Android-проект, в моем случае это было в разделе «Частные библиотеки Android» (обратите внимание на название вашего пакета, поскольку оно вам понадобится для следующего шага)
  3. Следующая копия в библиотеки проектов библиотеки ZXING, которую вы загрузили, и не забудьте указать ее так же, как тот, который вы удалили на предыдущем шаге
  4. После того, как библиотека была импортирована, вам нужно изменить одну строку кода для вашего проекта, чтобы использовать переднюю камеру. Файл находится в пакете com.google.zxing.client.android.camera.open, и в моем случае он был назван «GingerbreadOpenCameraInterface.java». В строке 48 есть оператор if:

    If (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK)

Просто измените параметр «CAMERA_FACING_BACK» на «CAMERA_FACING_FRONT», и ваше приложение должно использовать камеру с фронтальной лицевой панелью по умолчанию.

Если вы получаете какие-либо ошибки, связанные с строками, содержащими «import com.google.xzing.client.android.R», просто прокомментировали их, и ошибки должны исчезнуть.

Intereting Posts