我在我的React-Native
应用程序中使用谷歌CoreAR包进行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
,这就是为什么代码的其他部分没有运行。你们能帮我一下吗?谢谢你。
我找到了解决这个问题的方法。ArCoreApk.Availability
有一些可以使用的方法。中可以找到这些方法文档。方法ArCoreApk.Availability
根据设备支持返回SUPPORTED_INSTALLED
或SUPPORTED_NOT_INSTALLED
。因此,基于这个返回值,我们可以做这些事情。
我就是这样做的。
@ReactMethod
public ArCoreApk.Availability getSupport(){
ArCoreApk.Availability availability = ArCoreApk.getInstance().checkAvailability(this.getReactApplicationContext());
return availability.name();
}