在ARCore运行时,很多因素可以导致ARSession返回黑屏。以下是一些可能的修复方法:
确保你的设备具有充足的储存空间。AR应用程序需要运行时的空间来缓存数据,过低的可用空间可能会导致黑屏。
检查你的应用程序是否在运行时访问了相机或存储权限。ARSession需要这些权限才能正常运行。如果没有正确获取这些权限,可能会导致黑屏。
确保你的设备完全支持ARCore。不是所有的Android设备都支持ARCore,因此请在使用ARCore之前检查你的设备是否支持。可以通过Google Play商店下载Google的AR服务应用程序进行检查。
确认是否捕捉到了物体体积。如果捕捉到了物体体积,但是ARSession仍然返回黑屏,可能是因为手机的CPU过于繁忙,无法同时进行处理和显示。
以下是一个添加ARCore权限和检查设备支持ARCore的代码示例:
private boolean isARCoreSupportedAndUpToDate() {
// 检查是否支持ARCore
ArCoreApk.Availability availability = ArCoreApk.getInstance().checkAvailability(context);
if (availability.isTransient()) {
// 如果可获得的状态是过渡性的,等待ARCore检查更新。
// 这通常需要几秒钟时间来完成。循环等待设备支持ARCore。
while(availability.isTransient()) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
Log.e(TAG, "Error while waiting for ARCore checking: " + e.getMessage());
}
availability = ArCoreApk.getInstance().checkAvailability(context);
}
}
if (availability.isSupported()) {
// 如果设备支持ARCore, 检查ARCore发行版本是否低于ARCore的最佳发布