Как удалить все самолеты в arcore

Как мне удалить все обнаруженные самолеты в ARCore и перезапустить их обнаружение? Это вообще возможно? Я искал в Google и Stackoverflow с arcore удалить / удалить все самолеты и не нашел ничего полезного.

/ Изменить: я хочу, чтобы ARCore находился в том же состоянии после проверки версии при запуске, отображается серая анимация движения руки и самолеты не обнаруживаются (поэтому их нужно сначала удалить), а ARCore пытается обнаружить новые самолеты .

Самый простой способ сделать это - перезапустить действие или уничтожить сеанс и создать новый?

Clayton Wilkinson 11.08.2018 01:00

Работает как амулет с правильными флагами намерений. Благодарность!

ManuelTS 13.08.2018 12:19

Как ты это решил? Как правильно использовать флаги намерений?

A. Claesson 08.04.2020 15:11
2
3
1 692
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Может быть, если вы дадите какой-нибудь код, я смогу лучше объяснить ваш случай, но вам просто нужно сделать:

frame.getUpdatedTrackables(Plane.class).clear();

РЕДАКТИРОВАТЬ (оставив предыдущий ответ для будущих исследований)

Теперь я знаю, что вы используете сцену, вам нужно перезапустить действие. У нас еще нет таких вызовов, как .onPause, .onResume, .clear и т. д. Для этой библиотеки.

Итак, теперь вы можете перезапустить действие.

Button btn = findViewById(R.id.button);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
            startActivity(new Intent(HelloSceneformActivity.this, HelloSceneformActivity.class));
        }
    });

Плохая идея, приводит к исключению java.lang.UnsupportedOperationException at java.util.Collections$UnmodifiableCollection.clear(Collectio‌​ns.java:1116) at at.mts.arnatomy.controller.ar.renderable.RestartView.lambda$‌​viewBehaviour$1$Rest‌​artView в указанной вами строке кода. Пожалуйста, проверьте мой обновленный вопрос.

ManuelTS 10.08.2018 17:18

Чтобы перезапустить приложение, вы должны добавить флаги намерений, см. stackoverflow.com/a/51820095/10030695

ManuelTS 13.08.2018 12:23

Я делал по моему без флажков. @ManuelTS

Canato 13.08.2018 12:37
Ответ принят как подходящий

Перезапуск приложения, как сказал Клейтон Уилкинсон, работает, я сделал это с помощью следующего кода:

Intent i = new Intent(context, Main.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(i);

Возможно, перезапуск активности решил вашу проблему, но в целом это неправильное решение.

Tigran Babajanyan 29.10.2019 14:04

Другие вопросы по теме