首页 > 解决方案 > 如何在 ARCore 中序列化会话对象?

问题描述

我在一个项目中使用 ARCore,需要从 ARCore 中保存状态以供以后使用。问题是 ARCore 没有提供任何函数来设置状态。然后的想法是序列化 Session 对象,然后在需要时反序列化它。

我首先尝试创建一个实现 Serializable的Session的子类,但这给出了多个 NotSerializableException 错误。现在我正在尝试用 Gson 解决这个问题,使用它的 ExclusionStrategy 来排除不可序列化的类。我不确定如何解决这个问题。

在 MainActivity 中:

Gson gson = new GsonBuilder()
                .addSerializationExclusionStrategy(new Strategy())
                .create();
String jsonString = gson.toJson(session);

战略:

@Override
    public boolean shouldSkipField(FieldAttributes field) {
        return field.getDeclaredType().equals(** WHAT TO PUT HERE **.class);
    }
@Override
public boolean shouldSkipClass(Class<?> clazz) {
    return false;
}

我希望将 Session 对象序列化为 JSON 对象以便能够存储它。

标签: javaandroidarcore

解决方案


我认为您将无法序列化您的 Session 并在以后恢复它。您可以做的是存储锚信息以供以后使用。AR Core Cloud Anchors 和 Azure Spatial Anchors 等服务可以帮助您做到这一点。


推荐阅读