赞
踩
Andorid的demo需要引用xml资源,autojs无法引用,此次主要实现相机界面部份,实现扫一扫功能。
加载dex文件
runtime.loadDex("core.dex");
导入相关的类:
importClass(com.google.zxing.PlanarYUVLuminanceSource);
importClass(com.google.zxing.common.HybridBinarizer)
importClass(com.google.zxing.BinaryBitmap)
importClass(com.google.zxing.MultiFormatReader)
importClass(com.google.zxing.NotFoundException)
importClass(com.google.zxing.DecodeHintType)
importClass(com.google.zxing.BarcodeFormat)
界面绘制引用SurfaceView组件,相机画面回显!
ui.layout(
<vertical>
<android.view.SurfaceView id="surfaceView" />
</vertical>
);
SurfaceView相关设置,与android.hardware.Camera相机进行绑定,开启自动对焦
var mCamera;
var surfaceHolder = ui.surfaceView.getHolder();
surfaceHolder.addCallback(new JavaAdapter(android.view.SurfaceHolder.Callback, {
surfaceCreated: function (surfaceDestroyed) {
mCamera = android.hardware.Camera.open(0);
if (!mCamera) {
toast("摄像头打开失败");
return
}
try {
var parameters = mCamera.getParameters();
size = parameters.getPreviewSize();
decodeFormats = parameters.getPreviewFormat();
var focusModes = parameters.getSupportedFocusModes();
if (focusModes.contains(android.hardware.Camera.Parameters.FOCUS_MODE_AUTO)) {
parameters.setFocusMode(android.hardware.Camera.Parameters.FOCUS_MODE_AUTO);
}
mCamera.setParameters(parameters)
mCamera.setDisplayOrientation(90);
mCamera.setPreviewDisplay(surfaceHolder);
} catch (error) {
print(error);
}
},
surfaceChanged: function (surfaceDestroyed, arg1, arg2, arg3) {
mCamera.startPreview();
setAutoFocus();
setCallback();
},
surfaceDestroyed: function (surfaceDestroyed) {
focusing = false;
if (mCamera) {
try {
mCamera.release();
} catch (error) {}
}
}
}))
通过mCamera.setOneShotPreviewCallback拿到当前图片数据,调用zxing二维码识别,调用识别需要先对数据处理,把数据处理成bitmap
var source = new com.google.zxing.PlanarYUVLuminanceSource(data, size.width, size.height, 0, 0, size.width, size.height, false);
var bitmap = new com.google.zxing.BinaryBitmap(new com.google.zxing.common.HybridBinarizer(source));
调用zxing识别,内容识别内设置为utf8
var reader = new com.google.zxing.MultiFormatReader();
var m = new java.util.HashMap()
m.put(com.google.zxing.DecodeHintType.CHARACTER_SET, "utf-8")
var rawResult = reader.decode(bitmap, m);
if (rawResult) {
ui.post(function () {
callback(rawResult.getText());
})
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。