Как не дать живым обоям реагировать на сенсорные события недавних задач в Lollipop

Фон

Я сделал живые обои, которые могут обрабатывать сенсорные события.

Эта проблема

В некоторых случаях я не хочу, чтобы он обрабатывал прикосновения (или слушал другие события). Это поможет предотвратить странное рисование, а также немного сэкономить на батарее.

Например, на Lollipop я заметил, что когда вы показываете экран недавних задач, живые обои все еще имеют фокус. Этого не произошло в пред-Lollipop, потому что экран недавних задач взял на себя все на экране.

Другим примером является средство выбора обоев, даже если вы просто показываете миниатюры всех живых обоев, вы все равно показываете свои собственные и обрабатываете события касания, как если бы пользователь был на панели запуска.

Однако, когда вы показываете панель уведомлений или меню панели запуска (нажатием кнопки меню), живые обои не получат никаких сенсорных событий.

Вы можете увидеть эти проблемы на других живых обоях, таких как, например, "Волшебная жидкость бесплатно".

Опять же, проблема в том, что в некоторых случаях невозможно отключить сенсорные события, потому что вы не можете знать, когда они происходят (например, недавние задачи и выбор обоев).

Что я пробовал

Там не так много, чтобы сделать. все методы класса Engine не смогли найти состояние сценариев, о которых я писал:

onOffsetsChanged, onVisibilityChanged, onSurfaceChanged, onSurfaceRedrawNeeded, onOffsetsChanged

Вопрос

Есть ли способ преодолеть эту проблему? Чтобы прекратить слушать события, если живые обои не в фокусе?

1 ответ

Как насчет настройки

    setTouchEventsEnabled(false);

в вашем классе WallpaperService Engine, когда вы не хотите обрабатывать касания, и установите для него значение true, когда вы это делаете.

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