我在使用Cordova制作的应用中使用此条码扫描器(https://github.com/wildabeast/BarcodeScanner),专门用于在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);
}
);
});
});
如为此插件提供的文档中所述。我使用cordova CLI将它添加到我的项目中:
$ cordova add plugin https://github.com/wildabeast/BarcodeScanner.git
当我列出项目的可用插件时,我可以看到它已正确安装。此外,我可以在我的应用程序中使用相机,按钮触发正确的功能,并可以使用后置摄像头扫描没有问题。
有没有办法使用前置摄像头进行扫描?如果它不在插件中,是否有任何方法设置设备使用的默认摄像头,在代码中默认使用前置摄像头?我们正在开发的应用程序只需要专门使用前置摄像头,而不需要背面摄像头。
任何帮助将不胜感激。
答案 0 :(得分:5)
以下是我们为实现这一目标而采取的所有步骤的细分。来自不同来源的大量投入都归功于这项工作,但大多数投入并没有考虑到我们不是JAVA开发人员,甚至一些最小的JAVA实践对我们来说都是新的甚至是未知的。该解决方案来自Web开发人员的观点。
可在此处找到工作存储库以供使用: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
中。这将创建一个可在<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
目录。
您现在可以在CMD中运行命令cordova build android
来编译您的APK并在您的设备上运行。
感谢@Leo对此的帮助,我们非常感激。
答案 1 :(得分:0)
我认为没有办法直接选择使用哪种相机 BarcodeScanner插件。我解决这个问题的方法是编辑ZXING 此插件用于扫描功能的库。不幸的是, 安装BarcodeScanner插件时出现的ZXING库已经编译完毕 所以你不能编辑任何文件。
在进行任何更改之前,请备份您的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”的行相关的任何错误,只需对其进行评论 out,错误应该消失。