如何独立运行两个FirebaseVisionFaceDetector?

时间:2019-12-06 13:48:25

标签: android firebase kotlin firebase-mlkit

我有两个FirebaseVisionFaceDetector实例,它们是从不同的FirebaseApps获得的。

在App类中初始化FirebaseApps:

FirebaseApp.initializeApp(this, FirebaseOptions.fromResource(this)!!, "accurate")
FirebaseApp.initializeApp(this, FirebaseOptions.fromResource(this)!!, "fast")

获取探测器:

private val detector = FirebaseVision.getInstance(FirebaseApp.getInstance("accurate"))
    .getVisionFaceDetector(optOpts)
private val detector2 = FirebaseVision.getInstance(FirebaseApp.getInstance("fast"))
    .getVisionFaceDetector(optOpts2)

但是,当我在不同线程中调用 Tasks.await(detector.detectInImage(image)) Tasks.await(detector2.detectInImage(image))时, ,其中一个调用会阻止另一个调用,因此它们的性能始终如一。

我认为检测器在后台使用相同的对象,因此我不能异步调用此方法。有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我已经与支持团队联系,他们告诉我,目前所有的Firebase应用实例都使用同一线程,因此无法并行执行。
另外,他们告诉我他们已经创建了一个功能请求,因此它将在MLKit的未来版本中得到解决。