Android 4.0の起動音楽を追加します.

4449 ワード

Android起動アニメーションはframeworks/base/cmds/bootanimationの下にソースコードと呼ばれ、このプログラムは/data/local/bootanimationになります.zipまたは/system/media/bootanimation.zipの中のpngのピクチャーはアニメーションの形式で放送して、このコードは音楽の放送を支持しないで、いくつかのコードを追加して機械をスタートさせてアニメーションを表示する時音楽の効果を再生することができます.
次のコードを追加します.
1.必要なオーディオヘッダファイルを追加します.frameworks/base/cmds/bootanimation/BootAnimation.h追加
[cpp] view plain copy print ?
#include    
  • #include   
  • #include <media/AudioSystem.h>
    #include <media/mediaplayer.h>

    2.frameworks/base/cmds/bootanimation/BootAnimation.hにpublicメソッドを追加するには:
    bootMusic()と名付けられ、形式は以下の通りである.
    [cpp] view plain copy print ?
    class BootAnimation : public Thread, public IBinder::DeathRecipient  
  • {  

  • public:  
  •                 BootAnimation();  

  •     virtual     ~BootAnimation();  
  •   

  •     sp session() const;  
  •   

  •     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を追加する方法:
    [cpp] view plain copy print ?
    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();  

  •     }  
  •   

  • }  
    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中
    spboot=new BootAnimation();IPCThreadState::self()->joinThreadPool();間に次のコードを追加します.
    [cpp] view plain copy print ?
    sp boot = new BootAnimation();  
  •        BootAnimation *animation = new BootAnimation();  

  •        animation->bootMusic();  
  •        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共有ライブラリを追加します.最後の形式は次のとおりです.
    [cpp] view plain copy print ?
    LOCAL_SHARED_LIBRARIES := \  
  •     libcutils \  

  •     libutils \  
  •     libbinder \  

  •     libui \  
  •     libskia \  

  •     libEGL \  
  •     libGLESv1_CM \  

  •     libgui\  
  •     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