针对使用平板的横屏扫描 修改 备忘录

针对使用平板的横屏扫描修改
//    implementation 'cn.yipianfengye.android:zxing-library:2.2'
        https://github.com/yipianfengye/android-zxingLibrary
1、修改 activity配置文件
android:screenOrientation="portrait
是关键 默认是landscape
2、修改CameraConfigurationManager.java中的setDesiredCameraParameters函数,
在    camera.setDisplayOrientation(90);
改成    camera.setDisplayOrientation(0);
3、修改CameraManager.java的getFramingRectInPreview()函数中修改成:
rect.left = rect.left * cameraResolution.x / screenResolution.x;  
	rect.right = rect.right * cameraResolution.x /  
	screenResolution.x;  
	rect.top = rect.top * cameraResolution.y / screenResolution.y;  
	rect.bottom = rect.bottom * cameraResolution.y /  
	screenResolution.y;
4、修改DecodeHandler.java中的decode函数,
//    byte[] rotatedData = new byte[data.length];  
//    for (int y = 0; y < height; y++) {  
//        for (int x = 0; x < width; x++)  
//            rotatedData[x * height + height - y - 1] = data[x + y * width];  
//    }  
//    int tmp = width; // Here we are swapping, that's the difference to #11  
//    width = height;  
//    height = tmp;  
//      
    PlanarYUVLuminanceSource source = CameraManager.get().buildLuminanceSource(data, width, height);
然后修改函数中的变量,将rotatedData修改成data;
5、如果还需要改动扫描框的大小需要去CameraManager类里面改动:

声明,这个修改是网上看到的,地址忘记了好尴尬。作为自己备忘用

//改变扫描框的最大、最小长宽  
    private static final int MIN_FRAME_WIDTH = 240;  
    private static final int MIN_FRAME_HEIGHT = 240;  
    private static final int MAX_FRAME_WIDTH = 720;  
    private static final int MAX_FRAME_HEIGHT = 480;  
备注:(这个修改可以去my_camera.xml需要)
    app:inner_width="200dp"
        app:inner_height="200dp"
        app:inner_margintop="150dp"
好了,这样就可以很简单的是实现横屏扫描了。


在源码当中可以去找modify here关键字进行修改

相关文章
相关标签/搜索