Nexus 5X 使用Zxing扫描倒立
Posted 大雄童鞋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nexus 5X 使用Zxing扫描倒立相关的知识,希望对你有一定的参考价值。
Nexus 5X 使用Zxing扫描倒立的原因说是Nexus 5X 的摄像头是倒装的。
今天简单解决下,方案是判断机型如果是Nexus 5X,就倒立摄像头
//解决nexus5x扫码倒立的情况
if(android.os.Build.MANUFACTURER.equals("LGE") &&
android.os.Build.MODEL.equals("Nexus 5X"))
camera.setDisplayOrientation(270);
这样就OK了,如图:
下面附加下手机系统详细信息
private String getDeviceInfo()
StringBuffer sb =new StringBuffer();
sb.append("主板:"+android.os.Build.BOARD);
sb.append("\\n系统启动程序版本号:"+ android.os.Build.BOOTLOADER);
sb.append("\\n系统定制商:"+android.os.Build.BRAND);
sb.append("\\ncpu指令集:"+android.os.Build.CPU_ABI);
sb.append("\\ncpu指令集2:"+android.os.Build.CPU_ABI2);
sb.append("\\n设置参数:"+android.os.Build.DEVICE);
sb.append("\\n显示屏参数:"+android.os.Build.DISPLAY);
sb.append("\\n无线电固件版本:"+android.os.Build.getRadioVersion());
sb.append("\\n硬件识别码:"+android.os.Build.FINGERPRINT);
sb.append("\\n硬件名称:"+android.os.Build.HARDWARE);
sb.append("\\nHOST:"+android.os.Build.HOST);
sb.append("\\n修订版本列表:"+android.os.Build.ID);
sb.append("\\n硬件制造商:"+android.os.Build.MANUFACTURER);
sb.append("\\n版本:"+android.os.Build.MODEL);
sb.append("\\n硬件序列号:"+android.os.Build.SERIAL);
sb.append("\\n手机制造商:"+android.os.Build.PRODUCT);
sb.append("\\n描述Build的标签:"+android.os.Build.TAGS);
sb.append("\\nTIME:"+android.os.Build.TIME);
sb.append("\\nbuilder类型:"+android.os.Build.TYPE);
sb.append("\\nUSER:"+android.os.Build.USER);
return sb.toString();
Nexus 5X 的结果如下:
主板:bullhead
系统启动程序版本号:BHZ10k
系统定制商:google
cpu指令集:arm64-v8a
cpu指令集2:
设置参数:bullhead
显示屏参数:MMB29K
无线电固件版本:M8994F-2.6.30.0.68
硬件识别码:google/bullhead/bullhead:6.0.1/MMB29K/2419427:user/release-keys
硬件名称:bullhead
HOST:wpix2.hot.corp.google.com
修订版本列表:MMB29K
硬件制造商:LGE
版本:Nexus 5X
硬件序列号:00845be94c54a76a
手机制造商:bullhead
描述Build的标签:release-keys
TIME:1447281289000
builder类型:user
USER:android-build
: config.version = 1514962991
buidldReqConfig brand= LGE ,model= Nexus 5X ,os.type= 2 ,os.kernel= 3.10.7
ice bind flag:0
device when device bind flag:false
有更好的方案请各位大神告知。
https://www.zhihu.com/question/52915865
附:
如果使用的是:
https://github.com/yipianfengye/android-zxingLibrary
就找到
CaptureFragment.java 的 initCamera() 方法,找到Camera对象即可,代码如下
private void initCamera(SurfaceHolder surfaceHolder)
try
CameraManager.get().openDriver(surfaceHolder);
camera = CameraManager.get().getCamera();
//解决nexus5x扫码倒立的情况
if(android.os.Build.MANUFACTURER.equals("LGE") &&
android.os.Build.MODEL.equals("Nexus 5X"))
camera.setDisplayOrientation(270);
如果使用的是:https://github.com/chentao0707/ZXingProject
找到CameraManager.java的openDriver()方法,在方法最后添加即可:
public synchronized void openDriver(SurfaceHolder holder) throws IOException
Camera theCamera = camera;
if (theCamera == null)
if (requestedCameraId >= 0)
theCamera = OpenCameraInterface.open(requestedCameraId);
else
theCamera = OpenCameraInterface.open();
if (theCamera == null)
throw new IOException();
camera = theCamera;
theCamera.setPreviewDisplay(holder);
if (!initialized)
initialized = true;
configManager.initFromCameraParameters(theCamera);
Camera.Parameters parameters = theCamera.getParameters();
String parametersFlattened = parameters == null ? null : parameters.flatten(); // Save
// these,
// temporarily
try
configManager.setDesiredCameraParameters(theCamera, false);
catch (RuntimeException re)
// Driver failed
Log.w(TAG, "Camera rejected parameters. Setting only minimal safe-mode parameters");
Log.i(TAG, "Resetting to saved camera params: " + parametersFlattened);
// Reset:
if (parametersFlattened != null)
parameters = theCamera.getParameters();
parameters.unflatten(parametersFlattened);
try
theCamera.setParameters(parameters);
configManager.setDesiredCameraParameters(theCamera, true);
catch (RuntimeException re2)
// Well, darn. Give up
Log.w(TAG, "Camera rejected even safe-mode parameters! No configuration");
//解决nexus5x扫码倒立的情况
if(android.os.Build.MANUFACTURER.equals("LGE") &&
android.os.Build.MODEL.equals("Nexus 5X"))
camera.setDisplayOrientation(270);
但是解决了倒立之后,确无法正常扫描,把手机倒过来才可以正常扫描,目前还没解决。
以上是关于Nexus 5X 使用Zxing扫描倒立的主要内容,如果未能解决你的问题,请参考以下文章
zbar 扫描快,zxing 可以生成和识别本地,So,我就把他们结合在了一起,这样 Android 二维码(条形码)功能就更便捷了
android studio运行时报错AVD Nexus_5X_API_P is already running解决办法