Я хотел бы отобразить файл (andy.sfb) в ARcore. Этот файл можно получить от https://
и file://
. Традиционно file:// назначается файлам в папке assets, которая упакована вместе с приложением. Однако цель состоит в том, чтобы загрузить 3D-модель, а затем указать путь (URI) из локального хранилища устройства, это может быть что-то вроде /storage/emulated/0/Download/andy.sfb
. SFB означает двоичный файл SceneForm.
Моя задача состояла в том, чтобы отобразить среду выполнения модели из локального хранилища устройства. Проблема представлена здесь подробно.
File file = new File("file:///storage/emulated/0/Download/andy.sfb");
Callable callable = () -> {
InputStream inputStream = new FileInputStream(file);
return inputStream;
};
FutureTask task = new FutureTask<>(callable);
new Thread(task).start();
ModelRenderable.builder()
.setSource(this, callable)
.build()
.thenAccept(renderable -> andyRenderable = renderable)
.exceptionally(
throwable -> {
Toast toast =
Toast.makeText(this, "Unable to load andy renderable", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
return null;
});