在原生的Android系统(2.3.4)中,实际上已经有Livewallpapers的相关代码,只是Android默认没有将其编译进去,所以增加对LiveWallpapers的支持,只需要将其编译进Android就可以了。
Livewallpapers相关的代码位置如下:
android\packages\wallpapers\Basic:主要是编译为LiveWallpapers的package,内部有很多自带的LiveWallpaers的APK
android\packages\wallpapers\LivePicker:主要是编译为LiveWallpapersPicker的package
android\packages\wallpapers\MagicSmoke:主要是编译为MagicSmokeWallpapers的package,也就是一个MagicSmoke的LiveWallpapers
android\packages\wallpapers\MusicVisualization:主要是编译为VisualizationWallpapers的package,也是一个自带的LiveWallpapers的
1. 如何编译进Android的源代码呢?
由于我的是自己的mk文件,所以不具有参考性,所以你找一个你确定能编译进源码的mk文件,在其中加入:
PRODUCT_PACKAGES += \
LiveWallpapers \
LiveWallpapersPicker \
MagicSmokeWallpapers \
VisualizationWallpapers \
2. 底层库的支持:
将以上package编入系统后,还需要一些底层库的支持,其实主要是RenderScript的支持,(livewallpapers的实现就是使用google的RenderScript)
主要需要两个库的支持:libRS和librs_jni
android的代码中也有,也是没有编译进来,在
/android/build/target/product/core.mk中的PRODUCT_PACKAGES后加入编译选项。(或许步骤1下的编译选项也能加到这个mk文件中,没有试过)
libRS \
librs_jni \
OK,android的LiveWallpaers的支持已经完成,不过我在跑自带的LiveWallpaers老是遇到NullPointerException的问题:
这个问题的主要是一些资源文件找不到,我的做法是将步骤1中的PACKAGE中的一些放在/res目录下的资源文件:如drawable-hdpi或drawable-nodpi下面的一些图片放在drawable下就可以了。