当前位置:   article > 正文

autojs调用zxing实现扫码功能_js 扫码插件

js 扫码插件

Andorid的demo需要引用xml资源,autojs无法引用,此次主要实现相机界面部份,实现扫一扫功能。

加载dex文件

runtime.loadDex("core.dex");
  • 1

导入相关的类:

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

界面绘制引用SurfaceView组件,相机画面回显!

 ui.layout(
    <vertical>
      <android.view.SurfaceView id="surfaceView" />
    </vertical>
  );
  • 1
  • 2
  • 3
  • 4
  • 5

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) {}
      }
    }
  }))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

通过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));

  • 1
  • 2
  • 3

调用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());
     })
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

demo下载地址

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/931354
推荐阅读
相关标签
  

闽ICP备14008679号