Я разработал игровой движок для Android в Java, и он предназначен для создания двумерных платформерных игр. Главный персонаж перемещается влево или вправо в ответ на то, что пользователь касается и удерживает палец в одной из двух невидимых «полос», проходящих вертикально вдоль левой и правой границ экрана. Игра предназначена для работы как в книжной, так и в альбомной ориентации, и местоположение невидимых полос обновляется соответствующим образом.
Во время инициализации я делаю следующее с моим объектом SurfaceView:
// Set the content to appear full screen, and to allow the navigation bars
// to be pulled up from offscreen with a swipe action at the screen's edge.
a_GameView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
);
В портретном режиме играет как во сне. Проблема возникает, когда вы играете в альбомной ориентации. Допустим, я повернул свой телефон на 90 градусов по часовой стрелке - теперь то, что раньше было верхней частью моего экрана, - это то, где находится моя правая полоса, а то, что раньше было нижней частью моего экрана, - это то, где находится моя левая полоса. Перемещение персонажа влево работает ~ 99% времени, но если вы нажмете пальцем на одну точку (точно там, где будет кнопка «Домой», если бы мое приложение не скрывало ее), вы получите нежелательную реакцию. Когда-то телефон вибрирует очень легко, приложение продолжает работать, но как только вы даете go, вы получаете второе легкое колебание, и приложение минимизируется, возвращая вас на главный экран.
Это не так Похоже, это то же самое, что и нажатие кнопки «Домой», потому что это происходит только при нажатии и удерживании. Это не может быть вызвано быстрым нажатием на сладкое пятно.
Мой вопрос : кто-нибудь может объяснить мне, какой механизм ОС Android контролирует эту реакцию, и возможно ли это для меня отключить только этот механизм?
Очевидно, я хочу, чтобы пользователь мог выйти из приложения в любое время, но я хочу добиться того, чтобы он выполнял пролистывание вверх к ' потяните вверх панель навигации, чтобы выйти. Я не хочу, чтобы это одно приятное место существовало, потому что я не хочу, чтобы пользователь случайно свернул игру при попытке переместить своего персонажа.
Любое понимание высоко ценится, спасибо!
РЕДАКТИРОВАТЬ: С момента публикации я подтвердил, что это не происходит на LG G5. Это происходит только на Samsung Galaxy S8 +, который я использовал для разработки, поэтому он, кажется, уникален для указания c аромата (ов) Android.