Запретить изменение ориентации Live Wallpaper при открытии приложения и изменении ориентации?

У меня проблема с ориентацией с Live Wallpaper, которую я написал. В основном холст будет вращаться в зависимости от приложения, открытого над ним. Я протестировал это и понял, что метод onSurfaceChanged() запускается, когда я возвращаюсь на главный экран из ранее открытого приложения, ориентация которого была изменена.

Я полагаю, что лучший вопрос: , почему моя текущая поверхность рабочего стола изменяется при открытии приложения и изменение ориентации? Есть ли способ предотвратить изменение ориентации Live Wallpaper? Спасибо, надеюсь, что имеет смысл?

Ответ 1

Android-приложение перезапускает активность при изменении ориентации. Вы можете использовать

  • android: configChanges в вашем манифесте. Активность отключается и перезапускается по умолчанию, когда изменение конфигурации происходит во время выполнения, но объявление конфигурации с этим атрибутом предотвратит перезапуск активности. Вместо этого действие остается запущенным и вызывается его метод onConfigurationChanged().
  • используйте андроид: screenOrientatin= " портрет" или " пейзаж", это заставит приложение работать в указанном вами режиме. Однако это не помешает отключению активности и перезапуску.

Ответ 2

Вы можете обрабатывать ориентацию экрана из класса android.service.wallpaper.WallpaperService. Engine со следующим методом:

public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height)

... просто обрабатывайте событие соответствующим образом.

Вы НЕ МОЖЕТ добавить android: configChanges or android: screenOrientation к WallpaperService! (Которые вы используете при создании живых обоев)

Я бы добавил это как комментарий к ответу "Анирудха", но у меня недостаточно репутации, чтобы сделать это.