Android Zxing 扫描条码实现竖屏模式(portrait mode) 摄像头camera 旋转90度
2012-10-19 18:56
381 查看
最近在搞一个关于条形码扫描的软件,需求需要扫描时是竖屏。
最后在zxing官方wiki上面找到解决办法。基本思路如下。
Thereare4relativefiles:
1,manifest.xml,youneedtomakeCaptureActivityportrait.
2,DecodeHandler.java,rotatedatabeforebuildLuminanceSource,itworksbecuaseinYCbCr_420_SPandYCbCr_422_SP,theYchannelisplanarandappearsfirst
平板视图
打印?
3,CameraManager.java,getFramingRectInPreview()needtobemodified.
平板视图
打印?
4,CameraConfigurationManager.java,setcameraorientationtoportraitinsetDesiredCameraParameters()use
平板视图
打印?
注:版本兼容请看下面。
andingetCameraResolution(),youneedtoswapxandy,becausecamerapreviewsizeissomethinglike480*320,otherthan320*480.
平板视图
打印?
说明:
关于摄像头旋转90度的时候,不同的sdk版本方法不同。
兼容方法如下
(所在文件:CameraConfigurationManager.java)
平板视图
打印?
最后在zxing官方wiki上面找到解决办法。基本思路如下。
Thereare4relativefiles:
1,manifest.xml,youneedtomakeCaptureActivityportrait.
2,DecodeHandler.java,rotatedatabeforebuildLuminanceSource,itworksbecuaseinYCbCr_420_SPandYCbCr_422_SP,theYchannelisplanarandappearsfirst
1 | byte []rotatedData= new byte [data.length]; |
2 | for ( int y= 0 ;y<height;y++){ |
3 | for ( int x= 0 ;x<width;x++) |
4 | rotatedData[x*height+height-y- 1 ]=data[x+y*width]; |
5 | } |
1 | rect.left=rect.left*cameraResolution.y/screenResolution.x; |
2 | rect.right=rect.right*cameraResolution.y/screenResolution.x; |
3 | rect.top=rect.top*cameraResolution.x/screenResolution.y; |
4 | rect.bottom=rect.bottom*cameraResolution.x/screenResolution.y; |
1 | parameters.set( "orientation" , "portrait" ); |
andingetCameraResolution(),youneedtoswapxandy,becausecamerapreviewsizeissomethinglike480*320,otherthan320*480.
1 | int tmp=cameraResolution.x; |
2 | cameraResolution.x=cameraResolution.y; |
3 | cameraResolution.y=tmp; |
4 | return cameraResolution; |
关于摄像头旋转90度的时候,不同的sdk版本方法不同。
兼容方法如下
(所在文件:CameraConfigurationManager.java)
01 | if (Integer.parseInt(Build.VERSION.SDK)>=<IMG class =wp-smileyalt= 8 ) src= "http://www.andcoder.com/wp-includes/images/smilies/icon_cool.gif" > |
02 | setDisplayOrientation(camera, 90 ); |
03 | else { |
04 | if (getResources().getConfiguration().orientation==Configuration.ORIENTATION_PORTRAIT){ |
05 | parameters.set( "orientation" , "portrait" ); |
06 | parameters.set( "rotation" , 90 ); |
07 | } |
08 | if (getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE){ |
09 | parameters.set( "orientation" , "landscape" ); |
10 | parameters.set( "rotation" , 90 ); |
11 | } |
12 | } |
13 |
14 | protected void setDisplayOrientation(Cameracamera, int angle){ |
15 | MethoddownPolymorphic; |
16 | try { |
17 | downPolymorphic=camera.getClass().getMethod( |
18 | "setDisplayOrientation" , new Class[]{ int . class }); |
19 | if (downPolymorphic!= null ) |
20 | downPolymorphic.invoke(camera, new Object[]{angle}); |
21 | } catch (Exceptione1){ |
22 | } |
23 | } |
相关文章推荐
- Android Zxing 扫描条码实现竖屏模式 Camera摄像头 旋转90度
- Android Zxing 扫描条码实现竖屏模式 Camera摄像头 旋转90度
- Zxing 扫描条码实现竖屏模式(portrait) 摄像头camera 旋转90度
- android的自定义camera竖屏时,摄像头自动旋转90度的解决方案
- android的 camera显示时,摄像头自动旋转90度的问题解决
- Android实现 zxing 条码扫描视图
- android的自定义camera竖屏时,摄像头自动旋转90度的解决方案
- Android 基于google Zxing实现二维码、条形码扫描
- Android利用Camera实现图片的旋转动画 .
- android.graphics.Camera实现图像的旋转、缩放,配合Matrix实现图像的倾斜
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- Android 使用Zxing实现二维码的生成,扫描
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- android.graphics.Camera实现图像的旋转、缩放,配合Matrix...
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- android-自定义Camera竖屏时,摄像头自动旋转90度的解决方案
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- android.graphics.Camera实现图像的旋转、缩放
- android.graphics.Camera实现图像的旋转、缩放