Android Live Wallpaper Нажмите Событие

Если вы хотите обработать щелчок на своих живых обоях, вы должны использовать onCommand и дождаться действия WallpaperManager.COMMAND_TAP. Это описано, например. в теме обсуждения: Иерархия сенсорных событий Android Live Wallpaper.

Это отлично работает на моем телефоне, но когда я развертываю обои на планшете (в моем случае это Motorola Xoom с Android 3.1), COMMAND_TAP также срабатывает при нажатии значка на главном экране.

Я добавил обходной путь, сохранив видимое состояние и задержав обработку onCommand на 1000 мс, но мне нужно реальное решение этой проблемы.


person Gizmomogwai    schedule 30.08.2011    source источник
comment
Я также вижу это на Samsung Galaxy S II, но не на большинстве других телефонов. Это также происходит при нажатии виджета. Можете ли вы рассказать подробности вашего обходного пути?   -  person Kenton Price    schedule 19.01.2012
comment
Как это все еще проблема на Android 8.0?! Стандартное заводское изображение Nexus 5x.   -  person Flyview    schedule 30.10.2017
comment
Я сообщил об этом в системе отслеживания ошибок Android: issuetracker.google.com/issues/68467342.   -  person Flyview    schedule 30.10.2017


Ответы (1)


У нас те же проблемы с телефонами Samsung, проверено только на Droid Charge SCH-I510 и S2. S3 не демонстрирует поведение.

Вот обходной путь, упомянутый Gizmomogwai в коде.

public Bundle onCommand(String action, int x, int y, int z, Bundle extras, boolean resultRequested) {
  if (WallpaperManager.COMMAND_TAP.equals(action)) {
    final CustomWallpaperEngine that = this;
    Handler handler = new Handler();

    handler.postDelayed(new Runnable() {
      public void run() {
        if(that.isVisible()) {
          // valid tap command
          // DO STUFF
        } else {
          // Invalid tap command, throw away
        }
      }
    }, 1000);
  }
}
person waynep    schedule 06.03.2013