java从addOnSuccessListener获取结果
我希望在安卓上实现一个简单的物体检测应用程序,使用一个我已经训练过的自定义模型,我将遵循这个custom model ML Kit tutorial作为指导
根据安卓studios中的命令提示符,它已经成功地生成了边界框等等,但是我不知道如何访问addOnSuccessListener中的数据
objectDetector.process(image).addOnFailureListener(e -> {
errorMessage.set(e.getMessage());
}).addOnSuccessListener(results -> {
for (DetectedObject detectedObject : results) {
Rect boundingBox = detectedObject.getBoundingBox();
Integer trackingId = detectedObject.getTrackingId();
for (DetectedObject.Label label : detectedObject.getLabels()) {
String text = label.getText();
int index = label.getIndex();
float confidence = label.getConfidence();
}
}
});
有什么好的在线教程可以帮助我解决这个问题吗?或者我可以研究类似的示例代码
提前谢谢你
# 1 楼答案
将所需值存储在全局变量中,您可以从任何地方访问这些变量:
例如,在你的活动中:
然后在结果回调的内部:
现在,您可以在任何地方使用这些值。如果你认为变量从来没有初始化过,因为你一开始就没有得到结果,那么一定要检查是否为空
此外,您可能有多个对象,因此可以创建一个对象列表来保存所有引用:
然后:
现在所有返回的框都在上面的列表中,您可以遍历它并相应地使用它
更有效的是,您可以在列表中收集所有返回的对象,并且只在需要时解析参数
# 2 楼答案
您发布的示例代码已经为直接访问OnSuccessListener中的数据提供了一个示例。如果要绘制边界框或打印检测到的对象数量。。,我们可以在那里做
然而,如果你想以后存储和访问这些数据,你可以像尼科斯提到的那样存储