Android 10 жестов навигации отключить - PullRequest
0 голосов
/ 11 апреля 2020

TLDR: мне нужен способ, чтобы отключить навигацию жестами Android 10 программным способом, чтобы они не случайно go вернулись назад при смахивании с боков

Предыстория: Android 10 представил жест навигация в отличие от кнопок внизу. Так что теперь на Android 10 устройствах, у которых он включен, они могут перемещаться с любой стороны экрана на go назад и смахивать снизу для навигации по дому или между приложениями. Тем не менее, я работаю над реализацией в AR и хочу заблокировать экран для портрета, но разрешить пользователям go альбомную

Если пользователь переключает свой телефон в альбомную ориентацию, но активность заблокирована в портретной ориентации, навигация с помощью жестов назад теперь является пролистыванием сверху, что является обычным способом доступа к строке состояния в полноэкранном приложении (которое это так), поэтому пользователи по неосторожности go вернутся и оставят опыт, если они привыкли к android навигации.

Кто-нибудь знает, как а) отключить навигацию по жестам (но тогда как пользователь go обратно / домой?) Программно для Android 10 или б) знает, как просто изменить ориентацию за жесты без необходимости вашей деятельности для поддержки ландшафта?

1 Ответ

0 голосов
/ 11 апреля 2020

Не совсем ответ на вариант A или B. Но, по крайней мере, пользователь не случайно go возвращается, когда они смахивают с боков.

Итак, если устройство Android 10 и пользователь выполняет go back, я делаю AlertDialog, если пользователь действительно хочет go назад или нет. Хотя подсказка также будет отображаться, даже если они не активируют gesture navigation (все еще используя 2 или 3 кнопки навигации).

@Override
public void onBackPressed() {
    if(android.os.Build.VERSION.SDK_INT >= 29) { //as long as the Device is Android 10 (API level 29) 
        // idk, need more condition like gestureNavigation.isActive()
        AlertDialog.Builder builder = new AlertDialog.Builder(YourActivity.this);


        builder
            .setMessage("Are you sure want to exit?")
            .setPositiveButton("Yes, let me out",  new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog,int id) {
                    YourActivity.super.onBackPressed();
                }
            })
            .setNegativeButton("No, wrong swipe/click", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }
            })
            .show();
    } else {
        super.onBackPressed();
    }
}

Рассматривайте это как альтернативное последнее средство. Надеюсь, это поможет

...