歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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下就可以了。

Copyright © Linux教程網 All Rights Reserved