2

我正在尝试将前置摄像头用于zxingAndroid 平板电脑上的条码扫描仪——为了使其工作,我做了以下更改:

1) 姜饼OpenCameraInterface.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)有什么办法可以删除显示捕获图像最后几秒的部分。

4

1 回答 1

0

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

看起来您正在与 Barcode Scanner 之类的东西集成Intent?不,您无法控制此方面,因为它正确显示了图像!然后不需要这些清单条目。

如果这都是嵌入式代码,我不明白您为什么触发响应的路径Intent,因为这就是您所显示的。这引发了进一步的担忧:您是否正在编写响应我们意图的应用程序?这很糟糕,它会干扰我们的应用程序。你在克隆我们的用户界面吗?开源许可证是不行的。

真正最好的事情是从编写自己的 UI 开始,然后只重用您知道自己需要并知道它们如何工作的部分。那么无论如何你都会避免很多这样的混乱。

于 2013-05-12T10:43:56.683 回答