添加android 4.0 开机音乐 .

Android开机动画叫源码位于frameworks/base/cmds/bootanimation下,这个程序会将/data/local/bootanimation.zip或/system/media/bootanimation.zip里面的png图片以动画的形式播放出来,这段代码不支持音乐播放的,添加几段代码就能达到开机显示动画的时候播放音乐的效果了。

添加如下代码:

1.添加所需要的音频库头文件。在frameworks/base/cmds/bootanimation/BootAnimation.h添加

  1. #include <media/AudioSystem.h>   
  2. #include <media/mediaplayer.h>  
#include <media/AudioSystem.h>
#include <media/mediaplayer.h>

2.在frameworks/base/cmds/bootanimation/BootAnimation.h中添加public方法:

起名为bootMusic(),形式如下:


  1. class BootAnimation : public Thread, public IBinder::DeathRecipient  
  2. {  
  3. public:  
  4.                 BootAnimation();  
  5.     virtual     ~BootAnimation();  
  6.   
  7.     sp<SurfaceComposerClient> session() const;  
  8.   
  9.     void bootMusic();  
class BootAnimation : public Thread, public IBinder::DeathRecipient
{
public:
                BootAnimation();
    virtual     ~BootAnimation();

    sp<SurfaceComposerClient> session() const;

    void bootMusic();


3.在frameworks/base/cmds/bootanimation/BootAnimation.cpp中添加bootMusic的实现方法:
  1. void BootAnimation::bootMusic()  
  2. {  
  3.     int index;  
  4.     MediaPlayer* mp = new MediaPlayer();  
  5.     if (mp->setDataSource("/system/etc/poweron.wav", NULL) == NO_ERROR) {  
  6.         mp->setAudioStreamType(AUDIO_STREAM_ENFORCED_AUDIBLE);  
  7.         mp->prepare();  
  8.     }  
  9.     AudioSystem::getStreamVolumeIndex(AUDIO_STREAM_ENFORCED_AUDIBLE, &index);  
  10.     if (index != 0) {  
  11.         mp->seekTo(0);  
  12.         mp->start();  
  13.     }  
  14.   
  15. }  
void BootAnimation::bootMusic()
{
    int index;
    MediaPlayer* mp = new MediaPlayer();
    if (mp->setDataSource("/system/etc/poweron.wav", NULL) == NO_ERROR) {
        mp->setAudioStreamType(AUDIO_STREAM_ENFORCED_AUDIBLE);
        mp->prepare();
    }
    AudioSystem::getStreamVolumeIndex(AUDIO_STREAM_ENFORCED_AUDIBLE, &index);
    if (index != 0) {
        mp->seekTo(0);
        mp->start();
    }

}

4.在frameworks/base/cmds/bootanimation/bootanimation_main.cpp中

在sp<BootAnimation> boot = new BootAnimation();与 IPCThreadState::self()->joinThreadPool();之间添加如下代码:

  1. sp<BootAnimation> boot = new BootAnimation();  
  2.        BootAnimation *animation = new BootAnimation();  
  3.        animation->bootMusic();  
  4.        IPCThreadState::self()->joinThreadPool();  
 sp<BootAnimation> boot = new BootAnimation();
        BootAnimation *animation = new BootAnimation();
        animation->bootMusic();
        IPCThreadState::self()->joinThreadPool();



5.修改frameworks/base/cmds/bootanimation/Android.mk

在LOCAL_SHARED_LIBRARIES字段中添加libmedia共享库,最后的形式如下:


  1. LOCAL_SHARED_LIBRARIES := \  
  2.     libcutils \  
  3.     libutils \  
  4.     libbinder \  
  5.     libui \  
  6.     libskia \  
  7.     libEGL \  
  8.     libGLESv1_CM \  
  9.     libgui\  
  10.     libmedia  
LOCAL_SHARED_LIBRARIES := \
    libcutils \
    libutils \
    libbinder \
    libui \
    libskia \
    libEGL \
    libGLESv1_CM \
    libgui\
    libmedia

最后编译:mmm  frameworks/base/cmds/bootanimation/

将生成的bootanimation push进去,命令:adb push out/target/product/ventana/system/bin/bootanimation /system/bin/

同时将名字为poweron.wav的音频格式push到/system/etc/下 。

进入adb shell可以测试一下效果,在命令行上敲bootanimation命令即可。

#bootanimation
 
 
本文来自: http://blog.csdn.net/k_linux_man/article/details/7282958
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值