如何在ARCore中使用SurfaceView来获取相机的姿势



我正在尝试创建一个相机应用程序,该应用程序将相机位置与捕获的每个图像一起保存。我是安卓工作室和ARCore的新手。

我使用Android Studio教程创建了一个相机应用程序,然后尝试在应用程序中使用Pose类。但它给了我一个错误,说它需要OpenGL上下文。然后我意识到我必须使用SurfaceView而不是PreviewView才能使用Pose。但是,即使在阅读了文档之后,我也不知道如何正确使用它。请帮帮我。

我发现了一个示例,演示了ARCore纹理的读取应用程序,该应用程序实现了GLSurfaceView及其渲染器。由于代码需要将近300行,我发布了一个链接。

class MainActivity extends AppCompatActivity implements GLSurfaceView.Renderer {
private GLSurfaceView surfaceView;
private Session session;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
surfaceView = (GLSurfaceView) findViewById(R.id.surfaceview);
// some code...
surfaceView.setRenderer(this);
surfaceView.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);
}
@Override
protected void onResume() {
super.onResume();
if (session == null) {
if (!CameraPermissionHelper.hasCameraPermission(this)) {
CameraPermissionHelper.requestCameraPermission(this);
return;
}
session = new Session(/* some context= */ this);
}
}
}

最新更新