我是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();
问题是我没有看到有什么改变。
有什么想法吗?