如何计算找到的标记 rajawali vuforia?

How to count found markers rajawali vuforia?

我正在尝试获取在 rajawali vuforia 上找到的标记的数量。

虽然我们有方法:

1- protected void foundFrameMarker(final int markerId, Vector3 position,Quaternion orientation) {} // this method is called when found any marker until the marker disappeared

2- public void noFrameMarkersFound() {} // this method is called when no markers appeared or found

如何使用这些方法来计算找到的标记?或者有其他方法可以获取计数吗?

foundFrameMarker 在循环中为每个当前检测到的标记调用,每一帧。为了对找到的标记进行计数,您应该向渲染器添加一个 int 变量以对它们进行计数。在渲染循环开始时重置它 (onRenderFrame),并在 foundFrameMarker:

内增加它
public void onRenderFrame(GL10 gl) {
   ... 
   mMarkerCount = 0;
   ...
 }

 protected void foundFrameMarker(int markerId, Vector3 position, Quaternion orientation) {
   mMarkerCount++;
   ...
 }

@yakobom 回答解决了问题,但它重复计算每一帧,所以我添加了一些代码: 我初始化了另一个 int 以获得 mMarkerCount 达到的 max 计数,在 onCreate(...) 中的 activity class 我添加了一个每秒刷新一次的计时器来设置将其放入 TextFeild 并重置最大值。

在 Activity class 在 onCreate:

    Thread t = new Thread() {

        @Override
        public void run() {
            try {
                while (!isInterrupted()) {
                    Thread.sleep(1000);
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            te.setText(mRenderer.max+"");
                            mRenderer.max=0;
                        }
                    });
                }
            } catch (InterruptedException e) {
            }
        }
    };

    t.start();

在渲染器上 class:

protected void foundFrameMarker(int markerId, Vector3 position,
        Quaternion orientation) {

    ...

    mMarkerCount++;

    if (mMarkerCount > max)
        max = mMarkerCount;

    ...

}