Zxing前置摄像头镜像问题

时间:2013-05-12 06:07:04

标签: android android-camera zxing barcode-scanner

我正在尝试将前置摄像头用于Android平板电脑上的zxing条码扫描器 - 使其正常工作,我做了以下更改:

1)GingerbreadOpenCameraInterface.java

 //    if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) { 
       if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { 

2)CameraManager.java

 //   return new PlanarYUVLuminanceSource(data, width, height, rect.left, rect.top,
 //                                       rect.width(), rect.height(), false);  //changed false to true below 
      return new PlanarYUVLuminanceSource(data, width, height, rect.left, rect.top,
                                        rect.width(), rect.height(), true);

3)CameraConfigurationManager.java:

camera.setDisplayOrientation(180);  // added to rotate the image by 180 degrees as it ws already flipped once had changed to frontcamera

4)同样在AndroidManifest.xml中:

 <uses-feature android:name="android.hardware.camera" android:required="false"/> 
  <uses-feature android:name="android.hardware.camera.front" android:required="false"/>
  <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
  <uses-feature android:name="android.hardware.camera.flash" android:required="false"/>
  <uses-feature android:name="android.hardware.screen.landscape"/>
  <uses-feature android:name="android.hardware.wifi" android:required="false"/>
  <uses-feature android:name="android.hardware.touchscreen" android:required="false"/> 

它扫描正常,但是当它扫描并显示预览图像的最后几秒时,它显示出倒像。以下是快照http://i.imgur.com/gIvXy52.png

的链接

所以我有以下问题,如果有人可以提供帮助:

1)如何将最终预览反转图像更改为正常

2)有没有办法删除显示捕获图像最后几秒的部分。

1 个答案:

答案 0 :(得分:0)

您实际上并不想从前置摄像头翻转图像数据。它以相机看到它的方式呈现给应用程序。当Android将图像转换为SurfaceView时,它会镜像它,因为它更直观。但是,您不需要,也不应该在代码中镜像它。如果我没记错的话,有些设备在没有这种方式工作的情况下就存在这个标志。

看起来你正在通过Intent整合条形码扫描器之类的东西?不,你无法控制这个方面,因为它正确地显示了图像!然后,不需要这些清单条目。

如果这是所有嵌入式代码,我不明白为什么你会触发响应Intent的路径,因为那是你所展示的内容。这引起了进一步的担忧:你在编写一个响应我们意图的应用吗?这很糟糕,它与我们的应用程序有关。你在克隆我们的UI吗?开源许可证不行。

最好的办法是首先编写自己的用户界面,然后只重用自己需要的部分并了解它们的工作原理。那么你无论如何都会避免这种混乱。