定制开关机动画

来源:互联网 发布:常用漱口水好吗 知乎 编辑:程序博客网 时间:2024/06/05 18:49

zip包的制作就不再赘述,遇到的问题是直接将系统原生的动画替换掉之后新做的开关机动画并未播放

主要原因是运营商未定制,导致运营商文件夹中的开关机动画不会执行,解决办法:

首先将shutanimation.zip和bootanimation.zip拷贝到system/media目录下

     具体做法是在alps/frameworks/base/data/sounds/目录下面新建Android.mk文件:

LOCAL_PATH:= frameworks/base/data/sounds


LOCAL_MTK_PATH:= mediatek/operator/OP02/prebuilt/bootanim


PRODUCT_COPY_FILES += \
$(LOCAL_MTK_PATH)/bootanimation/QVGA/bootanimation.zip:system/media/bootanimation.zip \
        $(LOCAL_MTK_PATH)/shutanimation/QVGA/shutanimation.zip:system/media/shutanimation.zip

将开关机动画直接拷贝到system/media目录下后还不够,还要察看ShutdownThread.java类,在其beginShutdownSequence函数中你可能会见到:

        boolean mShutOffAnimation = false;
        String cust = SystemProperties.get("ro.operator.optr");

        if(cust != null){
 // MTK_OP01_PROTECT_START      
        if(cust.equals("OP01")){
        mShutOffAnimation = true;
        screen_turn_off_time = screen_turn_off_time + 2 * 1000;
            }
 // MTK_OP01_PROTECT_END
 // MTK_OP02_PROTECT_START        
        if(cust.equals("OP02")){
        mShutOffAnimation = true;
            } 
 // MTK_OP02_PROTECT_END      
        if(cust.equals("CUST")){
        mShutOffAnimation = true;
            }
        }

从中可以看出,即使你的system/meida目录下有shutanimation.zip关机时也不一定会执行关机动画,当cust为null时,该函数里的startBootAnimation()根本不会被调用到,

而只有调用到startBootAnimation,你代码中alps/frameworks/base/cmds/bootanimation/BootAnimation.cpp文件才可能被调用到,这个.cpp文件才是真正执行开关机动画的地方

0 0