Cordova Barcodescanner - 使用前置摄像头

Wil*_*lco 3 javascript android cordova

我在使用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);
        }
    );
    });    
});
Run Code Online (Sandbox Code Playgroud)

正如为此插件提供的文档中所述.我已使用cordova CLI将其添加到我的项目中:

$ cordova add plugin https://github.com/wildabeast/BarcodeScanner.git
Run Code Online (Sandbox Code Playgroud)

当我列出项目的可用插件时,我可以看到它已正确安装.此外,我可以在我的应用程序中使用相机按钮启动正确的功能,并可以使用后置摄像头扫描没有问题.

有没有办法使用前置摄像头进行扫描?如果它不在插件中,是否有任何方法可以设置设备使用的默认摄像头,在代码中默认使用前置摄像头?我们正在开发的应用程序只需要专门使用前置摄像头,而不需要背面摄像头.

任何帮助将不胜感激.

Wil*_*lco 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.这将创建一个可以在其中找到的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对此的帮助,我们非常感谢.