1. 程式人生 > >android新增開機聲音

android新增開機聲音

涉及檔案:
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  
[email protected]

    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檔案,下載地址:

相關推薦

android新增開機聲音

涉及檔案: frameworks/base/cmds/bootanimation/bootanimation.h frameworks/base/cmds/bootanimation/bootanimation.cpp frameworks/base/cmds/bootanimation/bootanimat

android新增開機音樂

http://wenku.baidu.com/view/d8b12044a8956bec0975e34a.html forevery: 以下可在cm7中試驗,但無效果。 1. 解壓縮附件,拷貝至 /system/bin,修改許可權:644 2. 將底下分隔線之間的內容加入/system/etc/init.lo

marsboard Android 4.4 新增開機自動設定靜態IP地址

最近在幫忙除錯Android裝置marsboard,需求就是開機設定靜態IP地址。 除錯過程與查找了很多資料,經過兩天的測試終於成功了。 首先,init.rc檔案最後新增開機自啟動: on property:sys.boot_completed=1    //系統啟動完成後

Android新增開機啟動自定義指令碼

新增開機啟動自定義指令碼 之前也一直做過類似的事情,但是沒有記錄,這裡做個簡單記錄,我這裡的例子是在Android7.1.2中實現的,用的板子是參考Quectel-SC60(基於高通平臺的64位SoC:msm8953)設計的,之前做的也有其他平臺的,但都大同小異(可能

Android新增一個開機完成後執行的指令碼

      在調式一個模組驅動的時候載入驅動模組失敗,但是在系統起來後可以手動載入成功,因此想到在android  啟動完成後通過 執行指令碼來載入驅動模組 1.編寫相關的指令碼,比如device/softwinner/common/prebuild/tools 在該目

[Android]新增自定義開機動畫(視訊)並去黑屏

補丁如下 原始碼分析及修改方式 關於開機動畫的流程主要程式碼在 framebuffer/base/cmds/bootanimation/bootAnimation.cpp 從 BootAnimation::threadLoop()

Android 8.0 新增開機啟動指令碼

[ 10.368517] type=1400 audit(1483292256.112:14): avc: denied { execute_no_trans } for pid=2768 comm="prepare_ds.sh" path="/vendor/bin/toybox_vendor" dev=

Android Notification 的聲音和震動

.com second attribute roc 聲音播放 lis rfc 震動 processor 我們在Android系統發送一條Notification的時候,經常需要通過震動或聲音來提醒用戶。如何為Notification設置聲音和震動了。大致思路有: -

Android新增的註解

父類 參數 內存 信息 studio 重復 添加 tag threading 環境 使用Android註解前需要導入相關的包 compile ‘com.android.support:support-annotations:latest.integration‘ 註意

Android新增控件

build tro mpi view dep 添加 gradle blog gpo 百分比布局 添加方法:打開app/build.gradle文件,在dependencies閉包中添加如下內容: dependencies{

Android系統開機慢的問題(升級後第一開機慢)

系統開機慢的問題,採用User-Debug 的模式編譯,要編譯出來ODEX 來優化這個開機時間 那第一開機的時候為什麼會慢呢,在網上百度找到了一個大牛對此的分析,我這裡貼出來 引用自:http://ticktick.blog.51cto.com/823160/1677216/ 在

【Linux】Ubuntu 利用 update-rc.d命令 新增開機啟動服務

複製或軟連線指令碼到/etc/init.d/目錄下 將指令碼新增到初始化執行的佇列中去 注意如果指令碼需要用到網路,則NN需設定一個比較大的數字,如99。 命令:update-rc.d xxx defaults NN命令 #(NN為啟動順序) ubuntu 16.04中

Android 手機開機密碼破解鎖定

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

用批處理檔案在登錄檔中新增開機啟動項

reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v myauto /t REG_SZ /d C:\1.bat /f /v 新增的鍵名     /t REG_SZ  

centos7下新增開機啟動

  在/etc/systemd/system下建立weblogic .Service touch weblogic.Service 新增啟動許可權 chmod +x weblogic.Service  編輯weblogic.Service vim weblogic.Servic

Ubuntu下新增開機啟動項

方法:編輯rc.local指令碼 原理: Ubuntu開機之後會執行/etc/rc.local檔案中的指令碼, 所以我們可以直接在/etc/rc.local中新增啟動指令碼。 當然要新增到語句:exit 0 前面才行。 例:開機啟動wifi控制軟體nm-applet 1.開啟rc.l

Ubuntu新增開機自動啟動程式的方法

1. 開機啟動時自動執行程式 Linux載入後, 它將初始化硬體和裝置驅動, 然後執行第一個程序init。init根據配置檔案繼續引導過程,啟動其它程序。通常情況下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目錄下的指令碼檔案,可以使init自動啟動其它程式。例如:

Android 新增選單和返回按鈕

在toolbar上新增選單和返回按鈕 1. 新增選單 1.1 新建menu檔案 右擊res資料夾新建 Android resource dictionary,新建menu資料夾 右擊menu資料夾新建Menu resource file,輸入名稱 1.2 設定選單按鈕 &l

新增開機後自動執行指令碼

環境: centos 開放埠 為了部署nginx http服務,開發80埠: iptables -I INPUT -p tcp --dport 80 -j ACCEPT iptables -I INPUT -p tcp --sport 80 -j ACCEPT service

Ubuntu新增開機啟動執行指令碼

原文:https://blog.csdn.net/upshi/article/details/53884770 Ubuntu新增開機啟動執行指令碼 方法一:編輯rc.loacl指令碼 Ubuntu開機之後會執行/etc/rc.local檔案中的指令碼, 所以我們可以直接在/etc/rc.lo