涉及文件:
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<SurfaceComposerClient> 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<ProcessState> proc(ProcessState::self());
        ProcessState::self()->startThreadPool();

// create the boot animation object
        sp<BootAnimation> 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

android添加开机声音相关推荐

  1. android+启动脚本,imx6q android 添加开机启动脚本

    1.在xx/out/target/product/sabresd_6dq/root/init.rc中添加以下内容 ========================================== ...

  2. android添加开机音乐

    android添加开机音乐 博客分类: and http://wenku.baidu.com/view/d8b12044a8956bec0975e34a.html forevery: 以下可在cm7中 ...

  3. Android添加开机完成后脚本(boot_completed)

    1.完成对应的执行脚本编写,并将该脚本放在编译项目对应的路径下. 比如写一个xxx.sh脚本,在脚本中加入自己所以执行的任务对应的命令.并将该脚本放在编译工程对应的路径下,比如:device/ti/j ...

  4. android4.0.3 修改启动动画和开机声音

    1. Linux 系统启动,出现Linux小企鹅画面(reboot)(Android 1.5及以上版本已经取消加载图片): 2. Android平台启动初始化,出现"A N D R I O ...

  5. android 9.0 系统添加开机铃声

    1.概述 在9.0的系统rom定制化开发中,在做一些项目中,有些产品需求要求添加开机铃声,就是在播放开机动画的过程中,播放开机音乐, 在原生系统中,是默认可以播放开机铃声的,接下来来分析下系统关于播放 ...

  6. android 添加点击声音,Android如何为按键添加声音

    为程序的按钮添加按键声音能更好的亲和用户,产生更好的使用体验,下面就是为按键添加声音的方法: public class MainActivity extends Activity { private ...

  7. 修改Android开机声音从耳机通道输出

    文档说明 本文档以SC826(MSM8953平台,Android 7)为例,说明如何修改开机声音从耳机通道输出. 不想看分析过程的,直接看 patch文件 章节. 应用背景 默认代码,在不插入耳机时, ...

  8. android 10.0添加开机铃声

    在定制化系统中,默认是没有开机铃声的,有客户提出需要要添加开机铃声,所以为了 完成需求,就来实现这一个功能 关于开机铃声 都是在bootanimation_main.cpp 这里面负责管理 frame ...

  9. android 11.0添加开机铃声

    1.概述 在11.0在定制化系统中,默认是没有开机铃声的,有客户提出需要要添加开机铃声,所以为了 完成需求,就来实现这一个功能 关于开机铃声 都是在BootAnimation.cpp 这里面负责管理 ...

最新文章

  1. virt-manager管理kvm
  2. boost::math::inverse_gamma_distribution用法的测试程序
  3. intellij 使用_使用IntelliJ书签
  4. oracle数据库时分秒格式_Oracle如何输出指定格式的日期时间数据呢?
  5. vue设置输入框输入长度_Vue实现input宽度随文字长度自适应操作
  6. 一行或多行文本内容溢出显示省略号
  7. Python基础练习三超市存包柜模拟(优化)
  8. 抢头条offer机会,抖音面试题:网络编程Socket+GC Roots+数据同步+Redis等
  9. sql 导入excel 遇到问题
  10. 如何用excel做正交分析_excel表格分析正交数据-如何应用EXCEL表进行正交试验分析...
  11. P8462 「REOI-1」奶油蛋糕
  12. 手机拍的照片计算机内存不足怎么办,手机内存不够用,照片应该怎么处理才能够少占用内存?...
  13. 多视几何 003 二次曲线
  14. nginx 实现备案域名的配置 + 跨域配置
  15. 微信小程序底部菜单详解
  16. 探索C# : List 元素类型和清除方法
  17. 不懂分布式系统概念没关系,这份足足《800页分布式系统概念》啃完不信你还不懂!
  18. 推荐个OCP视频,51cto网站尚观的资料还不错,支持下载
  19. 菜鸟学ffmpeg音视频技术之11 mac采集audio
  20. Google收录(转)

热门文章

  1. 日常英语口语练习-情景交际场景25(四)
  2. 微信分享接口,配置参数后无效分析
  3. PHP副本保存用什么函数,PHP_收藏的PHP常用函数 推荐收藏保存,内容: 复制代码 代码如下: lt - phpStudy...
  4. Linux安装Gitblit
  5. 用户账号注册的风险及安全措施
  6. matex2怎么升级鸿蒙,Mate X2怎么升级鸿蒙系统 Mate X2升级鸿蒙系统步骤教程
  7. springboot毕设项目张家口市防疫志愿者网站r6k13(java+VUE+Mybatis+Maven+Mysql)
  8. linux内核版本5.3,Linux 5.3-rc1内核kernel-ppa已经推出,用户可用deb安装5.3内核版本...
  9. cantata测试工具_探索Cantata,一个令人印象深刻的Linux音乐客户端
  10. 安全(六种核心安全机制-加密、密钥、签名与证书)