今天在Bootanimation.cpp中加入了SoundPool來實現開機音樂。反覆檢查了好幾遍調用SoundPool的地方,沒有錯,而且返回的值也都沒有異常,可是就是不發聲音。後來在網上搜了一下,因爲開機動畫是在開機中media_server和system_server剛起來的階段,此時尚未從setting模塊中讀取數據庫中的記錄爲各個流設置最大的index,因此此時的index仍是使用默認的值,故而不能正常播放音樂。數據庫
./hardware/libhardware_legacy/audio/AudioPolicyManagerBase.cpp動畫
AudioPolicyManagerBase::StreamDescriptor::StreamDescriptor()
: mIndexMin(0), mIndexMax(1), mCanBeMuted(true)
{
mIndexCur.add(AUDIO_DEVICE_OUT_DEFAULT, 3);
}spa
這裏會初始化一個聲音,我發現我代碼裏mIndexCur.add(AUDIO_DEVICE_OUT_DEFAULT, 0);設的是0,因此沒有聲音,把他改一下就OK了。server