在原生的Android系統中,已經有動態壁紙Livewallpapers的相關代碼,只是Android預設沒有將其編譯進去,所以實現動態壁紙需要將其編譯進Android系統,尤其是在TV項目中往往需要動態壁紙使介面更炫。
動態壁紙的相關代碼位置:
android\packages\wallpapers\Basic:主要是編譯為LiveWallpapers.apk的package
android\packages\wallpapers\LivePicker:主要是編譯為LiveWallpapersPicker.apk的package
android\packages\wallpapers\MagicSmoke:主要是編譯為MagicSmokeWallpapers.apk的package
android\packages\wallpapers\MusicVisualization:主要是編譯為VisualizationWallpapers.apk的package
android\packages\wallpapers\Galaxy4 android\packages\wallpapers\HoloSpiral
android\packages\wallpapers\NoiseField
android\packages\wallpapers\PhaseBean
1. 編譯進Android系統
需要找一個你確定能編譯進源碼的mk檔案,在其中加入:
PRODUCT_PACKAGES += \
LiveWallpapers \
LiveWallpapersPicker \
MagicSmokeWallpapers \
VisualizationWallpapers \
2. 底層庫的支援:
將以上包編入系統後,還需要一些底層庫的支援,其實主要是RenderScript的支援,(livewallpapers的實現就是使用google的RenderScript)
主要需要兩個庫的支援:libRS和librs_jni。Android的代碼中也有,也是沒有編譯進來,在
/android_source/build/target/product/core.mk中的PRODUCT_PACKAGES後加入編譯選項。
libRS \
librs_jni \
OK,android的LiveWallpaers的支援已經完成