android 如何知道给定的设备是否在ARCore支持的设备列表中?

06odsfpq  于 2023-01-19  发布在  Android
关注(0)|答案(1)|浏览(294)

我在React-Native应用程序中使用Google CoreAR package来支持AR。有些设备支持AR,有些不支持。我在不支持的设备上运行应用程序时遇到错误。我想呈现一条消息,而不是在屏幕上显示错误。对于此Google CoreAR软件包提供的解决方案,我无法使用。

void maybeEnableArButton() {
  ArCoreApk.Availability availability = ArCoreApk.getInstance().checkAvailability(this);
  if (availability.isTransient()) {
    // Continue to query availability at 5Hz while compatibility is checked in the background.
    new Handler().postDelayed(new Runnable() {
      @Override
      public void run() {
        maybeEnableArButton();
      }
    }, 200);
  }
  if (availability.isSupported()) {
    mArButton.setVisibility(View.VISIBLE);
    mArButton.setEnabled(true);
  } else { // The device is unsupported or unknown.
    mArButton.setVisibility(View.INVISIBLE);
    mArButton.setEnabled(false);
  }
}

上面的代码片段的问题是availability.isSupported()总是返回true,这就是为什么其他部分的代码没有运行。你们能帮我一下吗?谢谢。

1tu0hz3e

1tu0hz3e1#

我找到了这个问题的解决方案。ArCoreApk.Availability有一些可以使用的方法。你可以在documentation中找到这些方法。方法ArCoreApk.Availability返回SUPPORTED_INSTALLEDSUPPORTED_NOT_INSTALLED,这取决于设备支持。因此,基于这个返回值,我们可以做一些事情。
我就喜欢这样。

@ReactMethod
  public ArCoreApk.Availability getSupport(){

    ArCoreApk.Availability availability = ArCoreApk.getInstance().checkAvailability(this.getReactApplicationContext());

    return availability.name();
  }

相关问题