如何使用 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 中?
我打开项目: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 中?