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