如何使用 java 在 android studio 上保存对象(只读 class)?

How to save objects (read only class) on android studio using java?

我打开项目:ML Kit Vision Quickstart。 https://github.com/googlesamples/mlkit/tree/master/android/vision-quickstart 在 phone 上构建和 运行 没问题。我想使用共享首选项保存由程序创建的对象,但是当我创建一个新对象时出现此错误:

('PoseLandmark(int, com.google.mlkit.vision.common.PointF3D, float)' is not public in 'com.google.mlkit.vision.pose.PoseLandmark'. Cannot be accessed from outside package)

这个class PoseLandmark 是只读的。并且有 2 个可点击 link“下载源”和“选择源”。当转到下载源时,任务失败并显示消息:

Task :app:DownloadSources FAILED 1 actionable task: 1 executed

FAILURE: Build failed with an exception.

  • Where: Initialization script '/tmp/ijmiscinit1.gradle' line: 20

  • What went wrong: Execution failed for task ':app:DownloadSources'. Could not resolve all files for configuration ':app:downloadSources_0dad3cd2-2bde-4430-8d97-b0c59cc95ab3'. Could not find com.google.mlkit:pose-detection-common:17.1.0-beta2@aar. Required by: project :app

  • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 5s 23:52:38: Task execution finished 'DownloadSources'.

我尝试更改 gradle.build 文件中的此版本:

implementation 'com.google.mlkit:pose-detection:17.0.1-beta3

至:

implementation 'com.google.mlkit:pose-detection:17.0.1-beta2

但是没用!

而且我已经尝试了很多事情:使 cache/restart 无效、删除 .idea 和 .gradle 文件、再次导入项目、再次下载文件、安装新版本哦工作室...

有人对我如何保存这个对象有一些建议吗?

编辑: 对象创建于此:

  @Override
  public void draw(Canvas canvas) {
    List<PoseLandmark> landmarks = pose.getAllPoseLandmarks();
    if (landmarks.isEmpty()) {
      return;
    }

并在序列中使用:

for (PoseLandmark landmark : landmarks) {
      drawPoint(canvas, landmark, whitePaint);
      if (visualizeZ && rescaleZForVisualization) {
        zMin = min(zMin, landmark.getPosition3D().getZ());
        zMax = max(zMax, landmark.getPosition3D().getZ());
      }
    }

也许可以解决。

I want to save an object created by the program with Shared Preferences

您能否提供有关如何保存对象的代码片段?你想保存什么对象?您使用的是 gson 库还是类似的东西?

PoseLandmark(int, com.google.mlkit.vision.common.PointF3D, float) 是 PoseLandmark 的构造函数。它不是 public。这可能就是您无法访问它的原因。

目前无法自行构造Pose对象。它不是 API 的一部分。要解决此问题,您能否考虑从 Pose 中提取您需要的信息并将它们存储在您定义的 class 中?