Может ли Trigger.io получить доступ к режиму погружения KitKat?

Я разрабатываю приложение с использованием Trigger.io, и меня интересует «режим погружения», который был добавлен в Android 4.4, чтобы пользователи могли скрывать собственные панели пользовательского интерфейса.

Я пытался использовать параметр «Полноэкранный режим» модуля display, но это, похоже, ограничивается сокрытием верхняя полоса.

Есть ли в Trigger.io какие-либо собственные команды, запускающие новый «режим погружения»?

Если нет, можно ли передать этот флаг JavaScript, написав собственный модуль?


person BiscuitBaker    schedule 01.04.2014    source источник


Ответы (1)


Глядя на модуль отображения trigger.io v2.3, исходный код, параметр полноэкранной конфигурации скрывает только строку состояния (верхнюю панель).

Чтобы скрыть панель навигации (Android 4.0) или использовать иммерсивный полноэкранный режим (Android 4.4), вам потребуется написать собственный (пользовательский) модуль.

Для иммерсивного режима вы можете добавить следующий код, который обнаруживает и переключает иммерсивный режим, в собственный модуль, адаптированный из Пример Android BasicImmersiveMode

public static void toggleHideyBar(final ForgeTask task) {
    task.performUI(new Runnable() {
        public void run() {
            // The UI options currently enabled are represented by a bitfield.
            // getSystemUiVisibility() gives us that bitfield.
            int uiOptions = ForgeApp.getActivity().getWindow().getDecorView().getSystemUiVisibility();
            int newUiOptions = uiOptions;
            boolean isImmersiveModeEnabled = ((uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) == uiOptions);
            if (isImmersiveModeEnabled) {
                ForgeLog.d("Turning immersive mode mode off.");
            } else {
                ForgeLog.d("Turning immersive mode mode on.");
            }

            // Navigation bar hiding:  Backwards compatible to ICS.
            if (Build.VERSION.SDK_INT >= 14) {
                newUiOptions ^= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
            }

            // Status bar hiding: Backwards compatible to Jellybean
            if (Build.VERSION.SDK_INT >= 16) {
                newUiOptions ^= View.SYSTEM_UI_FLAG_FULLSCREEN;
            }

            // Immersive mode: Backward compatible to KitKat.
            // Note that this flag doesn't do anything by itself, it only augments the behavior
            // of HIDE_NAVIGATION and FLAG_FULLSCREEN.  For the purposes of this sample
            // all three flags are being toggled together.
            // Note that there are two immersive mode UI flags, one of which is referred to as "sticky".
            // Sticky immersive mode differs in that it makes the navigation and status bars
            // semi-transparent, and the UI flag does not get cleared when the user interacts with
            // the screen.
            if (Build.VERSION.SDK_INT >= 18) {
                newUiOptions ^= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
            }

            ForgeApp.getActivity().getWindow().getDecorView().setSystemUiVisibility(newUiOptions);
            task.success();
        }
    });
}
person Clive Seebregts    schedule 12.04.2014
comment
Это помогло! Я бы проголосовал дюжину раз, если бы мог. Как новичок в разработке Android, это огромная помощь. - person BiscuitBaker; 12.04.2014
comment
Если изменить эти числа на Build.VERSION_CODES.ICE_CREAM_SANDWICH, Build.VERSION_CODES.JELLY_BEAN, Build.VERSION_CODES.KITKAT соответственно, тогда вам не понадобится такой комментарий. - person Tatarize; 04.01.2016