我在Android开发方面有些新手,如果我的问题很基础,请提前谅解。我的应用程序的一部分需要实时预览后置摄像头,所以我创建了一个自定义类,它继承SurfaceView并实现SurfaceHolder.Callback(我基本上按照Android文档中的说明操作)。
不幸的是,我在Nexus 5x上测试我的应用程序时,我才意识到它的相机传感器安装反了。因此,当我在Nexus 5x上运行我的应用程序时,相机预览显示是颠倒的,这不是我想要的。
似乎新的android.hardware.camera2 API能够自动处理这个问题。最终,我将需要使用这个新API更新所有代码,但现在我需要一个快速修复,同时使用旧的相机API。
因此,我在外面阅读资料,并找到了一段代码,我需要在SurfaceChanged方法中引入它来解决这个问题。下面是代码:
Display display = ((WindowManager)getContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
if(display.getRotation() == Surface.ROTATION_0)
{
parameters.setPreviewSize(capHeight, capWidth);
camera.setDisplayOrientation(90);
}
if(display.getRotation() == Surface.ROTATION_90)
{
parameters.setPreviewSize(capWidth, capHeight);
}
if(display.getRotation() == Surface.ROTATION_180)
{
parameters.setPreviewSize(capHeight, capWidth);
}
if(display.getRotation() == Surface.ROTATION_270)
{
parameters.setPreviewSize(capWidth, capHeight);
camera.setDisplayOrientation(180);
}
camera.setParameters(parameters);*/
camera.startPreview();
问题是我没有看到有什么改变。
有什么想法吗?