我正在尝试将前置摄像头用于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)有没有办法删除显示捕获图像最后几秒的部分。
答案 0 :(得分:0)
您实际上并不想从前置摄像头翻转图像数据。它以相机看到它的方式呈现给应用程序。当Android将图像转换为SurfaceView
时,它会镜像它,因为它更直观。但是,您不需要,也不应该在代码中镜像它。如果我没记错的话,有些设备在没有这种方式工作的情况下就存在这个标志。
看起来你正在通过Intent
整合条形码扫描器之类的东西?不,你无法控制这个方面,因为它正确地显示了图像!然后,不需要这些清单条目。
如果这是所有嵌入式代码,我不明白为什么你会触发响应Intent
的路径,因为那是你所展示的内容。这引起了进一步的担忧:你在编写一个响应我们意图的应用吗?这很糟糕,它与我们的应用程序有关。你在克隆我们的UI吗?开源许可证不行。
最好的办法是首先编写自己的用户界面,然后只重用自己需要的部分并了解它们的工作原理。那么你无论如何都会避免这种混乱。