android添加開機聲音

來源:互聯網
上載者:User

涉及檔案:
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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.