Android源码中添加Livewallpapers(动态墙纸)的支持

     在原生的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下就可以了。

 

你可能感兴趣的:(Android源码中添加Livewallpapers(动态墙纸)的支持)