android方面的配置:配置环境,下载、编译Zxing源码,整合进项目
1、环境下载、安装,编译Zxing源码
下载Zxing源码地址:https://github.com/zxing/zxing
其中android文件夹下为一个功能应用,有分享、历史记录;
androidtest文件夹下为一个测试应用,主要是测试android文件夹下的应用的功能;
android-integration文件夹下为一些接口,androidtest主要调用这里面的接口来达到调用android下面的实现;
core文件夹下为核心代码,解析码,生成码等实现都在此;
android-core文件夹下就一个文件,关于camera的设置;
代码已经有了,但是源码中缺少一个jar,包,也就是core-3.2.2-SNAPSHOT.jar这类,需要我们编译;这个时候配置我们的环境:
1.1、安装配置环境
Ant: http://ant.apache.org/bindownload.cgi
Maven: http://maven.apache.org/download.cgi
下载效果如下图
配置的方法就是解压在一个文件夹下;然后在我的电脑中的环境变量path中配置:
Path中配置的路径依据实际情况配置;
1.2 、环境安装好后,开始编译
检测环境是否配置好:
ant -version;
mvn -version;
通过CMD进入到“D:\PhoneGapEnvi\zxing-master”的指定目录;
然后开始编译;
进入到 zxing-master\android 目录,输入命令:
android update project –path .
编译jar包在 zxing-master\core 目录,输入命令:
mvn -DskipTests -Dgpg.skip=true install
编译成功以后如下图很容易发现jar包在
D:\PhoneGapEnvi\zxing-master\core\target 下面的core-3.2.2-SNAPSHOT.jar
更加详细的Zxing编译过程:
http://blog.csdn.net/deng0zhaotai/article/details/38046913
1.3、 eclipse引进Zxing项目并且配置运行
引进去以后发现项目会报错,主要有几个原因:
1、libs:没有把core\target 下面的core-3.2.2-SNAPSHOT.jar引进;
2、CameraConfigurationUtils:这个类找不到源头,需要配置,文件在 D:\PhoneGapEnvi\zxing-master\android-core目录中,记录文件目录别忘了;
注意:ZXingTestActivity不使用到,可以不用配置;如果要使用,配置的文件在
D:\PhoneGapEnvi\zxing-master\android-integration目录中,复制进去即可;
整个Zxing项目就可以运行起来了。
2、将运行好的项目移植进ionic跨平台项目中
需要运动的东西有的多,注意移植,主要有如下红线部分:
还有特别重要的权限文件 AndroidManifest.xml 配置;
移植好了以后项目一大半已经完成了;
cordova 插件、ionic 、android整合
3、cordova 中安装配置phonegap-plugin-barcodescanner插件
进入ng-Cordova中查询插件的路径:
http://ngcordova.com/docs/plugins/barcodeScanner/
上面两处标记其中一处是安装插件的路径;另一处是指使用的方法;
进入到cordova 的项目中配置插件了;
cordova plugin add https://github.com/phonegap/phonegap-plugin-barcodescanner.git
最后生成的目录有下效果:
3.1 项目中的使用
controller中的使用:
angular.module('aftersale.ctrl', [])
.controller('aftersaleCtrl', function ($scope, $log, $cordovaPreferences,$cordovaBarcodeScanner,ShowFactory) {
$scope.afterSaleTitle="售后";
$scope.scanBarcode = function()
{
//这里就是调用的方法:$cordovaBarcodeScanner.scan();
$cordovaBarcodeScanner.scan().then(function(imageData)
{
console.log("Barcode Format -> " + imageData.text);
console.log("Barcode Format -> " + imageData.format);
console.log("Cancelled -> " + imageData.cancelled);
}, function(error) {
console.log("An error happened -> " + error);
});
};
});
android 方面的:
com.phonegap.plugins.barcodescanner.BarcodeScanner中
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
this.callbackContext = callbackContext;
this.requestArgs = args;
if (action.equals(ENCODE))
{
Log.i(LOG_TAG, "ENCODE");
JSONObject obj = args.optJSONObject(0);
if (obj != null) {
String type = obj.optString(TYPE);
String data = obj.optString(DATA);
// If the type is null then force the type to text
if (type == null) {
type = TEXT_TYPE;
}
if (data == null) {
callbackContext.error("User did not specify data to encode");
return true;
}
encode(type, data);
} else {
callbackContext.error("User did not specify data to encode");
return true;
}
}
//会调用这里;
else if (action.equals(SCAN))
{
Log.i(LOG_TAG, "SCAN");
//android permission auto add
if(!hasPermisssion()) {
requestPermissions(0);
} else {
scan(args);
}
}else {
return false;
}
return true;
}
如果用户喜欢调用ZXing项目原始的画面,修改如下代码:
//将之前的这个方法的代码注销,写上如下代码,即可调用ZXing原生项目的界面和逻辑;
public void scan(final JSONArray args) {
Log.i(LOG_TAG, " public void scan()");
Intent intent = new Intent();
intent.setClass(webView.getContext(), CaptureActivity.class);
this.cordova.getActivity().startActivity(intent);
}
以上如有不能理解的地方请留言;