涉及文件:
frameworks/base/cmds/bootanimation/bootanimation.h
frameworks/base/cmds/bootanimation/bootanimation.cpp
frameworks/base/cmds/bootanimation/bootanimation_main.cpp
frameworks/base/cmds/bootanimation/Android.mk


另外要准备一个wav格式的开机音乐文件(时间不要太长了)
在bootanimation.h文件中增加如下代码:
class BootAnimation : public Thread, public IBinder::DeathRecipient
{
public:
                BootAnimation();
    virtual     ~BootAnimation();


    void bootMusic();  //Xandy 2013/03/22  xl19862005@126.com
    sp session() const;
.
.
.


在bootanimation.cpp中增加相应的实现方法
void BootAnimation::bootMusic()
{
int index;
MediaPlayer* mp = new MediaPlayer();

if (mp->setDataSource("/system/media/audio/ui/boot.wav", NULL) == NO_ERROR) 
{
mp->setAudioStreamType(AudioSystem::ENFORCED_AUDIBLE);
mp->prepare();
}

AudioSystem::getStreamVolumeIndex(AudioSystem::ENFORCED_AUDIBLE, &index);
if (index != 0) 
{
mp->seekTo(0);
mp->start();
}
}


注意:这里我将开机音乐文件copy到了/system/media/audio/ui/boot.wav这个目录下面,可以在相应的vendor目录下面的AndroidBoard.mk里增加如下脚本代码:
# Bootsound
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/boot.wav:system/media/audio/ui/boot.wav
有了相应的实现方法和音乐文件,下面要在某个地方调用到我们实现的方法,这里调用的地方紧跟bootanimation调用的地方,在bootanimation_main.cpp里:
增加红色部分代码:
int main(int argc, char** argv)
{
#if defined(HAVE_PTHREADS)
    setpriority(PRIO_PROCESS, 0, ANDROID_PRIORITY_DISPLAY);
#endif


    char value[PROPERTY_VALUE_MAX];
    property_get("debug.sf.nobootanimation", value, "0");
    int noBootAnimation = atoi(value);
    LOGI_IF(noBootAnimation,  "boot animation disabled");
    if (!noBootAnimation) {


        sp proc(ProcessState::self());
        ProcessState::self()->startThreadPool();


        // create the boot animation object
        sp boot = new BootAnimation();


//play boot boot music -Xandy
BootAnimation *animation = new BootAnimation();
        animation->bootMusic();


        IPCThreadState::self()->joinThreadPool();


    }
    return 0;
}


在bootanimation的Android.mk文件中加入音乐播放需要的shared libs
LOCAL_SHARED_LIBRARIES := \
libcutils \
libutils \
libbinder \
    libui \
libskia \
    libEGL \
    libGLESv1_CM \
    libsurfaceflinger_client \
    libmedia




最后终端进入到frameworks/base/cmds/bootanimation/目录,运行mm 将会模块编译出相应的bootanimation bin文件!


提一句:
喜欢DIY的朋友可以把这个文件copy出来,找一首自己喜欢的开机音乐,按照上面所说的音乐存放目录把开机音乐放入自己的手机中,并把所得的bootanimation这个bin替换掉自己手机/system/bin目录下的bootanimation文件(之前一定要先备份原来的bootanimation,不然出了问题,我不负责啊!!),并把这个文件的权限设置成777
可以adb shell下面分别运行如下命令:
su
chmod 777 /system/bin/bootanimation


开机音乐存放目录:/system/media/audio/ui/boot.wav    
音乐文件名只能是boot.wav!!!!
下面提供本人编译出来的bootanimation文件,下载地址:


http://download.csdn.net/detail/xl19862005/5170507

更多相关文章

  1. Android音乐播放器简单示例
  2. 在Android中把内容写到XML文件中
  3. Android SDK 目录和作用的分析详解
  4. 【Android】volley网络框架的文件下载
  5. android 对文件的操作模式
  6. Android从网上下载文件
  7. Android关于SD卡中多层目录的创建

随机推荐

  1. android实现Parcelable序列化对象
  2. Android(安卓)修改host文件的3种方法
  3. 关于如何使用Mumu模拟器连接电脑adb
  4. Android 自定义布局对话框避免全屏的设置
  5. Android设备内存和SD卡操作工具类
  6. 【Android-Activity】EditText的基本属性
  7. Android各个版本对应的源代码
  8. Android(安卓)Widget开发系列(二)
  9. android N 编译环境搭建
  10. 鸿蒙开发TV软件环境搭建以及简单教程