2010-03-26 4 views
1

У меня есть приложение для Android с версией 1.6 Я беру обои и показываю их в своем приложении. (Я делаю это программно, позвонив getWallpaper() в Activity)Живые обои на 1.6 приложения для Android

Когда это установлено на телефоне 2.1, имеющем живые обои, живые обои не возвращаются getWallpaper(), потому что он просто возвращает Drawable , а живые обои, вероятно, другое дело.

Итак, вопрос в том, можно ли показать живые обои на фоне приложения 1.6? Как?

Благодаря

========================================= =============================================

До сих пор я не нашел для этого решения. Я добавляю это, чтобы лучше понять вопрос

Чтобы быть ясным: приложение написано для 1.6, поэтому оно будет работать на всех 1.6 и выше. Вопрос в том, можем ли мы написать приложение с 1,6 в качестве цели, но поддерживать живые обои, если оно работает на устройстве 2.1?

Благодаря

ответ

2

Я нашел решение:

1) android.os.Build.VERSION.SDK_INT проверить версию телефона есть. 2) совершать вызовы if else, поэтому для каждой версии вы можете вызвать нужный метод. В этом случае:

if (android.os.Build.VERSION.SDK_INT >= 7) {

this.setTheme(android.R.style.Theme_Wallpaper);

}

else

{

//something else

}

3) Создание приложения с использованием 2.1. и установите в манифесте использование -sdk android: minSdkVersion = "4", поэтому он также работает на 1.6

4) убедитесь, что он работает на обоих телефонах 1.6 и 2.1, потому что, поскольку у вас есть вызовы для обоих SDK, убедитесь, что вы Не вызывайте методы 2.1, когда вы используете 1.6, и наоборот.

Спасибо за помощь

0

Вы пробовали использовать Theme.Wallpaper как тема вашей деятельности в? Это устанавливает обои телефона в качестве фона активности и работает с Live Wallpapers.

+0

да, я пробовал, но он говорит: Ошибка: Нет ресурс не найден, который соответствует указанному имени (в «темы» со значением «@android: стиль/Theme.Wallpaper»). потому что Theme.Wallpaper начал с API 2.0 –

1

Живые обои были добавлены в 2.1, поэтому просто не имеет смысла пытаться показать живые обои на 1.6 (или 2.0) устройстве.

В 2.0 добавлен стиль темы Theme.Wallpaper, который, как новый официальный способ поместить действие (или окно) поверх обоев системы (в реальном времени или нет). Конечно, поскольку это появилось в версии 2.0, вы также не можете использовать это в 1.6.

До 2.0 единственным способом отображения поверх системных обоев было использование getWallpaper() для извлечения статического изображения обоев и позаботиться о том, чтобы рисовать его самостоятельно в пользовательском интерфейсе. Это, конечно, не может поддерживать живые обои.

Если вы хотите иметь приложение, которое отображается в обоях на обеих версиях до 2.0 и 2.0 и более поздних версиях платформы, вам нужно будет проверить версию API в android.os.Build и соответствующим образом настроить свое поведение : при инициализации вашей активности, если 2.0 или новее использовать setTheme для выбора темы обоев; в противном случае получим drawable и сделайте его фоном вашего пользовательского интерфейса. При использовании темы обоев вы должны убедиться, что ваш пользовательский интерфейс не нарисовал непрозрачный фон поверх него и прикрыл его. Вы также можете попробовать настроить тему своей деятельности на Theme.Translucent, чтобы улучшить поведение на 2.0 или более поздней версии (в идеале вы бы использовали Theme.Wallpaper, который также дает вам правильную анимацию).

На самом деле вы могли бы использовать версии, созданные с помощью версии, чтобы создать собственную тему, которая соответствующим образом настраивается в зависимости от версии платформы (обои или традиционная тема). Я никогда не пытался это сделать.

+0

Я не думаю, что он хочет, чтобы он показывал его на устройстве 1.6, он просто хочет, чтобы его приложение, ориентированное на версию 1.6, поддерживало это, когда оно запускалось на 2.1 устройство. По крайней мере, так я прочитал вопрос. –

+0

Может быть, но это даже не поддерживается на 2.1. – MrSnowflake

+0

Правильно, я не хочу показывать его на 1.6. Я имею в виду, что у меня есть приложение 1.6, и когда он запустился на 2.1, я хочу показать liveWallpaper –

Смежные вопросы