2014-08-25 8 views
3

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

У меня есть следующие функции, установленный в 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 

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

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

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

ответ

5

Ниже приведено описание всех шагов, предпринятых нами для получения этого права. Большое количество материалов из разных источников связано с этой работой, но большинство из них не учитывают, что мы не разработчики 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

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

в каталоге Изменить CMD для:

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

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

Если у вас есть ошибка Unable to resolve target 'android-17', взгляните на this solution.

Одна папка вверх, удалите файл 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 за вашу помощь в этом, мы очень ценим это.

+1

Большое спасибо за потраченное время, чтобы объяснить эти детализированные шаги. Отлично работает. –

+0

Вот вилка git, которая реализует решение Wilco. Он работает с плагином: https://github.com/opadro/BarcodeScanner – opadro

+0

Спасибо за вилку, он тоже работает. –

0

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

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

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

    если (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK)

Просто измените "CAMERA_FACING_BACK" на "CAMERA_FACING_FRONT" и приложение должно использовать переднюю лицевая сторона камера по умолчанию.

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

+0

Большое спасибо за ваш ответ. Я попробовал изменения, которые вы предложили, когда я понял его. Он по-прежнему не работает, но я, очевидно, не знаю. это мой проект: https://github.com/wilcovandeijl/camera_app.git – Wilco

+0

@Wilco - Вы получаете какие-либо ошибки? – Fez

+0

Я предполагаю, что вы имеете в виду через удаленный инспектор Chrome (я новичок в этом, поэтому, если есть где-то еще, я должен проверять, что я был бы признателен за помощь) Я получаю эту ошибку: 'Uncaught TypeError: не может вызвать метод 'querySelector' of null :: index.js: 41'. Тем не менее, когда я запускаю камеру. – Wilco

Смежные вопросы